2011-07-24 31 views
0

我試圖使用Winpcap PacketRequest()函數(位於packet32.h中)將OID發送到網絡適配器。 它在XP32上工作,在Win7 32和Win7 64上無法工作(在Win7 64中我得到最後一個錯誤代碼1,在32中我不知道 - 我目前無法訪問32位) 。 我查看了PacketRequest()函數的來源 - 它調用了DeviceIoControl(),這是失敗的函數,因此PacketRequest()失敗。Winpcap和DeviceIoControl - Win7上的錯誤代碼1

我在使用錯誤的Winpcap庫嗎? (我已安裝WinPcap_4_1_2.exe)

爲什麼它不能在Win7上運行?

在此先感謝。

回答

-1

我可以看到您的啓動代碼。 它聽起來像你的加載DLL並試圖呼籲一些內部方法,

你應該堅持使用API​​,直到你知道exacaly WINPcap如何工作內部。

寫一個原始數據包的網絡卡,您應該使用API​​函數

int pcap_sendpacket (pcap_t * p, 
         u_char * buf, 
         int size) 

http://www.winpcap.org/docs/docs_41b5/html/group__wpcapfunc.html#g51dbda0f1ab9da2cfe49d657486d50b2

之前,你可以做到這一點壽你要打開一個網絡適配器

pcap_t* pcap_open_live (const char * device, 
          int snaplen, 
          int promisc, 
          int to_ms, 
          char * ebuf) 

http://www.winpcap.org/docs/docs_41b5/html/group__wpcapfunc.html#gae6abe06e15c87b803f69773822beca8

w沒有看到你的代碼,我不能有太大的幫助。 我寫了一個應用程序,它使用winpcap, 它可以在xp(32/64),vista(32/64),win7(32/64)上正常工作。