网上查了资料,说先得到 网卡名 再用PacketOpenAdapter打开网卡我用
type
  PIPAdapterInfo = ^TIPAdapterInfo;
  TIPAdapterInfo = Record   // IP_ADAPTER_INFO
    Next                : PIPAdapterInfo;
    ComboIndex          : Integer;
    AdapterName         : Array[0..256+3] of Char;
    Description         : Array[0..128+3] of Char;
    AddressLength       : Integer;
    Address             : Array[1..8] of Byte;
  End;AI:PIPAdapterInfo;GetAdaptersInfo(AI,Size);得到了网卡名 是{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a};
但是到这句lpAdapter := PacketOpenAdapter('{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a}');就报错(lpAdapter:Padapter;):Debugger Exception Notification
    Project XXX raised exception class EAccessViolation with message 'AccessViolation at adress 00000000.Read of address 00000000'.Press stopped.Use step or run to continue.PacketOpenAdapter中参数换成\Device\NPF_{E00872C1-37C0-47CE-8472-313A5A23F896}报同样错
我不知道PacketOpenAdapter中的参数应该怎么填,不知道PacketOpenAdapter用法是否正确,请大家指点下,最好能有相关例子贴一下,先非常感谢下。

解决方案 »

  1.   

    这个PacketOpenAdapter根本不是WINAPI嘛,是一个'Packet.dll'的输出函数嘛.这样也不说清楚,提问题是门学问.
    原型是:function  PacketOpenAdapter(AdapterName : PWideChar) : PAdapter; cdecl;
    你调用应该var 
    _RetNet:PAdapter;getmem(_RetNet,sizeof(TAdapter));
     try
       
       _RetNet:= PacketOpenAdapter('{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a}'); finally
       FreeMem(_RetNet,sizeof(TAdapter));
     end;
    真搞不懂现在学程序的人,最基本的基础都没打好.
      

  2.   

    to 2 楼:
      按照你的方法,报相同的错我的提问没水平,令你困扰了,8好意思。另外我是自学D的,基础不好我知道,走一步算一步了。只要你能解决我的问题,就万分感谢了
      

  3.   

    Debugger Exception Notification 
        Project XXX raised exception class EAccessViolation with message 'AccessViolation at adress 00000000.Read of address 00000000'.Press stopped.Use step or run to continue. 
      

  4.   

    PacketOpenAdapter 的那个动态库你加载了没?
      

  5.   

     
      lpadapter=PacketOpenAdapter("{DA9CCA96-3199-4DC7-9241-CCC3921C8DA7}");    if(!lpadapter || (lpadapter->hFile==INVALID_HANDLE_VALUE))
        {
            printf("PacketOpenAdapter Error: %d\n",GetLastError());
            return -1;
        }
    运行后显示PacketOpenAdapter Error:20 请问这是为什么。谢谢~