<div>I'm having a problem with using the Packet32 code in my application. When sending a packet using PacketSendPacket it sometimes failes with GetLastError returning 31 - ERROR_GEN_FAILURE.</div>
<div>&nbsp;</div>
<div>A little more detail:</div>
<div>&nbsp;</div>
<div>I'm running WinXP SP2 on a P4 with a copy of Packet32 obtained from the WinPCap site from the 3.1 developer's pack.</div>
<div>I'm using the code directly in my appliction, and not in a separate dll.</div>
<div>Also, I've made several small changes to the code, most of little concern, but I did change the way to open the adapter to overlapped. Accordingly, I've modified all of the appropriate function calls that are affected by overlapped to use the overlapped structure (WriteFile, ReadFile and DeviveIoCtl).
</div>
<div>I've added three overlapped structures to the ADAPTER struct - one for reading, one for writing and one for DeviveIoCtl. </div>
<div>The relavent changes from the overlapped are in the PacketReceivePacket and the PacketSendPacket:</div>
<div>&nbsp;</div>
<div>The applications basic design is as like a bridge - read a packet from adapter A and write it to adapter B; read a packet from adapter B and write it to adapter A. I have two threads that perform the receives - one for each adapter.
</div>
<div>&nbsp;</div>
<div>When sending a packet I first call GetOverlappedResult with <em>bWait</em>&nbsp;being TRUE to make sure no IO is pending, so that I can send my packet. The I check if the WriteFile returns FALSE, and if so check the GetLastError(). If it's ERROR_IO_PENDING I return TRUE from the PacketSendPacket. Else I return FALSE. Here I don't care if the packet was actually sent already. I want to return to doing my own stuff.
</div>
<div>&nbsp;</div>
<div>When receiving a packet I call the ReadFile fucntion, and then call GetOverlappedResult with <em>bWait</em>&nbsp;being TRUE to make sure I get the packet. I must have the packet, since I have nothing else to do while waiting for it.
</div>
<div>&nbsp;</div>
<div>On quite rare occasions the WriteFile in the PacketSendPacket fails with GetLastError() returning 31 - ERROR_GEN_FAILURE. After this happens all calls to function with this adapter's handle fails. Furthermore, because I wait before sending I get stuck on the GetOverlappedResult (bWait is true - so I'm stuck until any IO is complete, which obviosly ain't gonna happen...).
</div>
<div>&nbsp;</div>
<div>Any suggestions will be welcomed.</div>
<div>Maybe it's all the overlapped's fault? I found that it gave quite a performance boost, so I'd rather not return to non-overlapped working. </div>
<div>Maybe I'm using the overlapped wrong? Something I forgot to do? I'm not well versed in working with overlapped. </div>
<div>&nbsp;</div>
<div>Thanks much,</div>
<div>&nbsp;</div>
<div>Eli Iser</div>