Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Проблема с WSAIoctl (https://forum.antichat.xyz/showthread.php?t=121123)

Virus Catcher 17.05.2009 22:49

Проблема с WSAIoctl
 
Суть проблемы следующая.
Был код, он компилировался и работал. Все супер.


Тут я решил вставить его часть в свой проект и начались проблемы.



Код:
Код:

#include <winsock2.h>
#include <stdio.h>

....

int in;

...

if (WSAIoctl(sn, SIO_RCVALL, &j, sizeof(j), 0, 0, &in, 0, 0) == SOCKET_ERROR)
    {
                MessageBox (HWND_DESKTOP, "WSAIoctl() failed.", "Error", MB_OK | MB_ICONEXCLAMATION);
                return 1;
    }

......

Проблема в том, что компилятор начал ругатся, мол: error C2664: 'WSAIoctl' : cannot convert parameter 7 from 'int *' to 'LPDWORD'

Но в исходном проекте все работало!!!

Кроме того, пришлось добавить #pragma comment( lib, "Ws2_32.lib" ) т.к. без этого выдавало еще кучу всяких ошибок...

Где я напортачил???
Может где-то настройки проекта не те или что....

Gar|k 18.05.2009 00:55

WSAIoctl(sn, SIO_RCVALL, &j, sizeof(j), 0, 0, (LPDWORD)&in, 0, 0)

не может преобразовать? мы ему поможем :)

хотя на самом деле DWORD это unsigned long тобишь безнаковое 4 байтовое целое...

если бы ты обявил in как unsigned long или DWORD он бы не ругался.

Virus Catcher 18.05.2009 01:40

Спасибо!
С DWORDом все получилось. :)

Ато я когда ему указывал LPDWORD - он компилил, но при екзекьюте слал меня в глубокий нокаун.

Странно то, что изначально он был определен как int и компилятор не ругался...я и подумал что все ок...

Gar|k 18.05.2009 02:19

LPDWORD это ссылка на значение (DWORD *) - тоесть означает что ты должен передать ссылку.
типа &in

но если ты назаваешь
LPDWORD in
и напишешь &in то конечно будет попа... ты передаешь указатель на указатель которого нет ))

razb 18.05.2009 16:53

Цитата:

LPDWORD это ссылка на значение (DWORD *) - тоесть означает что ты должен передать ссылку.
типа &in
небольшая поправка LPDWORD это указатель на DWORD, а не ссылка)


Время: 22:09