diff options
author | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2009-06-22 20:48:35 +0000 |
---|---|---|
committer | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2009-06-22 20:48:35 +0000 |
commit | 7ea8261049d8897b46e26f62dec3f6768e0b3f9a (patch) | |
tree | 763d0b19f9a1f695b5591b6b4633121a0d30457c /tap-win32/prototypes.h | |
parent | Rename generated tapdrvr.cod to a unique name to avoid the issue where (diff) | |
download | openvpn-7ea8261049d8897b46e26f62dec3f6768e0b3f9a.tar.xz |
In Windows TAP driver, refactor DHCP/ARP packet injection code to
use a DPC (deferred procedure call) to defer packet injection until
IRQL < DISPATCH_LEVEL, rather than calling NdisMEthIndicateReceive
in the context of AdapterTransmit. This is an attempt to reduce kernel
stack usage, and prevent EXCEPTION_DOUBLE_FAULT BSODs that have been
observed on Vista. Updated TAP driver version number to 9.6.
git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@4606 e7ae566f-a301-0410-adde-c780ea21d3b5
Diffstat (limited to 'tap-win32/prototypes.h')
-rwxr-xr-x | tap-win32/prototypes.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tap-win32/prototypes.h b/tap-win32/prototypes.h index c342ad3..29502d6 100755 --- a/tap-win32/prototypes.h +++ b/tap-win32/prototypes.h @@ -171,13 +171,32 @@ VOID SetMediaStatus BOOLEAN state ); -VOID InjectPacket +VOID InjectPacketDeferred ( TapAdapterPointer p_Adapter, UCHAR *packet, const unsigned int len ); +VOID InjectPacketNow + ( + TapAdapterPointer p_Adapter, + UCHAR *packet, + const unsigned int len + ); + +// for KDEFERRED_ROUTINE and Static Driver Verifier +//#include <wdm.h> +//KDEFERRED_ROUTINE InjectPacketDpc; + +VOID InjectPacketDpc + ( + KDPC *Dpc, + PVOID DeferredContext, + PVOID SystemArgument1, + PVOID SystemArgument2 + ); + VOID CheckIfDhcpAndTunMode ( TapAdapterPointer p_Adapter |