0

OID をネットワーク アダプタに送信するために、Winpcap PacketRequest() 関数 (packet32.h にあります) を使用しようとしています。XP32 では動作しますが、Win7 32 および Win7 64 では動作しません (Win7 64 では最後のエラー コード 1 が表示されますが、32 ではわかりません。現時点では 32 ビットにアクセスできません)。私は PacketRequest() 関数のソースを見ました - それは DeviceIoControl() を呼び出します。これは失敗する関数であり、したがって PacketRequest() も失敗します。

間違った Winpcap ライブラリを使用していますか? (WinPcap_4_1_2.exeをインストールしました)

なぜWin7で動かないのですか?

前もって感謝します。

4

1 に答える 1

-1

スタートアップ コードを確認できますか。dll をロードして、いくつかの内部メソッドを呼び出そうとしているように聞こえますが、

winpcapが内部でどのように機能するかを正確に理解するまで、APIを使い続ける必要があります。

生のパケットをネットワーク カードに書き込むには、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

あなたのコードを見なければ、私はあまり役に立ちません。winpcap を使用するアプリを 1 つ作成しました。xp(32/64)、vista(32/64)、win7(32/64) で問題なく動作します。

于 2011-07-29T23:26:20.733 に答える