在《windows 网络编程》中在完成端口一段中GetQueuedCompletionStatus(CompletionPort, &BytesTransferred,
(LPDWORD)&PerHandleData, (LPOVERLAPPED *) &PerIoData, INFINITE)
//第五个参数是LPOVERLAPPED *,而现在的PerIoData
typedef struct
{
OVERLAPPED Overlapped;
WSABUF DataBuf;
CHAR Buffer[DATA_BUFSIZE];
DWORD BytesSEND;
DWORD BytesRECV;
} PER_IO_OPERATION_DATA, * LPPER_IO_OPERATION_DATA;LPPER_IO_OPERATION_DATA PerIoData;这里为什么能直接把LPPER_IO_OPERATION_DATA造型为 LPOVERLAPPED
在GetQueuedCompletionStatus函数的特殊应用,还是Struct有这种造型的方法????
本人新手,不太明白,希望大家赐教!!!
刚注册还没有分。。可怜
(LPDWORD)&PerHandleData, (LPOVERLAPPED *) &PerIoData, INFINITE)
//第五个参数是LPOVERLAPPED *,而现在的PerIoData
typedef struct
{
OVERLAPPED Overlapped;
WSABUF DataBuf;
CHAR Buffer[DATA_BUFSIZE];
DWORD BytesSEND;
DWORD BytesRECV;
} PER_IO_OPERATION_DATA, * LPPER_IO_OPERATION_DATA;LPPER_IO_OPERATION_DATA PerIoData;这里为什么能直接把LPPER_IO_OPERATION_DATA造型为 LPOVERLAPPED
在GetQueuedCompletionStatus函数的特殊应用,还是Struct有这种造型的方法????
本人新手,不太明白,希望大家赐教!!!
刚注册还没有分。。可怜
int a;
int b;
}s1,* ps1;
typedef struct _s2{
s1 ts1;
int c;
}s2,* ps2;
void prpst(ps1 ps){
printf("s1.a=%d,s1.b=%d\n",ps->a,ps->b);
}
void prs2(s2 s){
prpst((ps1)&s);//将struct s2 造型成 struct s1
printf("s2.c=%d\n",s.c);
}
int main(int argc, char * argv[])
{
printf("Test demo\n");
s1 t1;
t1.a=100;
t1.b=200;
prpst(&t1);
s2 t2;
t2.ts1=t1;
t2.c=300;
prs2(t2);
return 0;
}看Struct有这种造型,本质原理还是不解??
在看看不管什么人写的IOCP,以下三个结构在PER_IO_OPERATION_DATA中的位置
OVERLAPPED Overlapped;
WSABUF DataBuf;
CHAR Buffer[DATA_BUFSIZE];我想你或许该知道为什么要用以下写法
GetQueuedCompletionStatus(CompletionPort, &BytesTransferred,
(LPDWORD)&PerHandleData, (LPOVERLAPPED *) &PerIoData, INFINITE)