在完成端口的例子中 VC 的例子有的多不一样,具体为。(100分)

  • 主题发起人 fanronghua
  • 开始时间
F

fanronghua

Unregistered / Unconfirmed
GUEST, unregistred user!
这两个结构 为什么不一样啊?

delphi 定义为
LPPER_IO_OPERATION_DATA = ^PER_IO_OPERATION_DATA;
PER_IO_OPERATION_DATA = packed record
Overlapped: Overlapped;
DataBuf: TWSABUF;
Buffer: array[0..DATA_BUFSIZE] of CHAR;
BytesSEND: DWord;
BytesRECV: DWord;
end;

VC 定义为
(* typedef struct _PER_IO_OPERATION_DATA
{
OVERLAPPED Overlapped;
WSABUF DataBuff[1];
char Buff[24];
BOOL OperationType;
}PER_IO_OPERATION_DATA,* LPPER_IO_OPERATION_DATA;
*)
delphi
if (GetQueuedCompletionStatus(CompletionPort, BytesTransferred,
DWord(PerHandleData), POverlapped(PerIoData), INFINITE) = False) then
begin

VC
bT = GetQueuedCompletionStatus(ComPort,
&BytesTransferred,(LPDWORD)&PerHandleData,
(LPOVERLAPPED *)&PerIoData,INFINITE);

这个有什么区别?
 
一个人也没有
 
都一样的
在调用GetQueuedCompletionStatus时 只用到结构体的第一个成员 后面的成员都没有用
 
没有什么区别。
 
理由很简单,因为GetQueuedCompletionStatus时只需要传递一个OVERLAPPED的指针,剩
下的部分都是自定义的,是根据程序需要自己用的。
 
一样的..结构体的定义只看第一个是OVERLAPPED...后面的内容是自己决定..
 
顶部