VC中可以这样定义
#define WSAID_ACCEPTEX \
        {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}在d中我这样定义为什么出错啊?
const
  WSAID_ACCEPTEX: TGUID = '($b5367df1; $cbac; $11cf; ($95, $ca, $00, $80, $5f, $48, $a1, $92))';请高手指教,应该怎么定义这个TGUID?

解决方案 »

  1.   

    const
      WSAID_ACCEPTEX: TGUID = (
        D1:$b5367df1; D2:$cbac; D3:$11cf; D4:($95, $ca, $00, $80, $5f, $48, $a1, $92));
      

  2.   

    WSAID_ACCEPTEX: TGUID = '{b5367df1-cbac-11cf-95ca-00805f48a192}';
    这样也可以吧
      

  3.   

    楼主拿到的Winsock2这个pas文件当中对TGUID定义有问题。
      

  4.   

    哈哈,这几天我也在弄IOCP的东西,现在可以测试了,不过本机ECHO有问题,我拿一个现成的应用客户端(也就是Windows Platform当中的那个IOCPClient),发送接收受发送缓冲区1024倍的数据,由于发送端不支持重叠IO,而我设置成支持重叠IO,结果对方发送的源源不断,但是不接受,从而导致发送端内存猛涨。之前就更加离谱,我使用每一数据包,一次发送,结果整个本机的网络都挂了(内核驱动内存耗尽)。
      

  5.   

    那在那儿下载正确的Winsock2.pas啊?
    问题还没有解决啊?
      

  6.   

    我是在http://jungla.dit.upm.es/~bti/files/winsock2.pas下载的啊。
      

  7.   

    const
        WSAID_ACCEPTEX: TGUID = (D1:$b5367df1; D2:$cbac; D3:$11cf; D4:($95, $ca, $00, $80, $5f, $48, $a1, $92));
    type
      LPACCEPTEX = function(sListenSocket: TSocket; sAcceptSocket: TSocket; lpOutputBuffer: Pointer;
        dwReceiveDataLength: DWORD; dwLocalAddressLength: DWORD; dwRemoteAddressLength: DWORD;
        lpdwBytesReceived: PDWORD; lpOverlapped: POverlapped): BOOL; stdcall;
      TAcceptEx = LPACCEPTEX;  function WSAGetExtensionFunctionPointer(s: TSocket; const gdExFuncGuid: TGUID): Pointer;
      

  8.   

    const
        WSAID_ACCEPTEX: TGUID = (Data1:$b5367df1; Data2:$cbac; Data3:$11cf; Data4:($95, $ca, $00, $80, $5f, $48, $a1, $92));
    type
      LPACCEPTEX = function(sListenSocket: TSocket; sAcceptSocket: TSocket; lpOutputBuffer: Pointer;
        dwReceiveDataLength: DWORD; dwLocalAddressLength: DWORD; dwRemoteAddressLength: DWORD;
        lpdwBytesReceived: PDWORD; lpOverlapped: POverlapped): BOOL; stdcall;
      TAcceptEx = LPACCEPTEX;  function WSAGetExtensionFunctionPointer(s: TSocket; const gdExFuncGuid: TGUID): Pointer;
      

  9.   

    WSAID_ACCEPTEX: TGUID = (Data1:$b5367df1; Data2:$cbac; Data3:$11cf; Data4:($95, $ca, $00, $80, $5f, $48, $a1, $92));在$00怎么这里会报类型不匹配啊?'Char' and 'Integer'
    请高手解决啊。
      

  10.   

    winsock2中TGUID的定义
    u_char:Char;PGUID = ^TGUID;
    TGUID = packed record
      Data1              :u_long;
      Data2              :u_short;
      Data3              :u_short;
      Data4              : array [0..8-1] of u_char;
    end;//Data4定义的是char数组不是byte数组
    const
    WSAID_ACCEPTEX: TGUID = (Data1:$b5367df1; Data2:$cbac; Data3:$11cf; Data4:(char($95), char($ca), char($00), char($80), char($5f), char($48), char($a1), char($92)));