IOCP中GetQueuedCompletionStatus函数返回的完成键lpCompletionKey错误?

BOOL GetQueuedCompletionStatus(
 
HANDLE                   CompletionPort,       // 完成端口句柄
LPDWORD               lpNumberOfBytes,    // 传送数据字节数 
PULONG_PTR         lpCompletionKey,     // 完成键
LPOVERLAPPED *  lpOverlapped,           // 重叠结构体
DWORD                   dwMilliseconds         // 超时毫秒数
);

函数GetQueuedCompletionStatus返回的lpCompletionKey是一个4字节的地址,但64位编译器下指针是8字节,导致返回的地址是被截断的,从而导致指针错误,有没有遇到类似问题的,该如何解决?

谁告诉你是4字节地址的呢,他是一个指针,也是一个地址,而指针在32位下就是4字节,在64位下就是8字节,怎么会被截断呢,同一个程序编译成32位或者64位,一般情况下功能都是相同的

遇到同样的问题 ,我将PostQueuedCompletionStatus的参数也改成了ULONG,结果发现还是异常,按理来说,发与收都 改成了ULONG应该 是可以了,试了N多遍还是不能解决;