DWORD val;

val=1;
if(WSAIoctl(sock,SIO_RCVALL,&val,sizeof(val),NULL,0,&d,NULL,NULL)==SOCKET_ERROR){
 printf("WSAIoctlErr:%d\n" ,WSAGetLastError());
}

を実行するとWSAEINVAL(10022)が帰って来るんですが、何故でしょうか?
unsigned intでやっても同じエラーです。どなたかヒント頂けないでしょうか?