aboutsummaryrefslogtreecommitdiff
path: root/tap-win32/prototypes.h
diff options
context:
space:
mode:
authorjames <james@e7ae566f-a301-0410-adde-c780ea21d3b5>2009-06-22 20:48:35 +0000
committerjames <james@e7ae566f-a301-0410-adde-c780ea21d3b5>2009-06-22 20:48:35 +0000
commit7ea8261049d8897b46e26f62dec3f6768e0b3f9a (patch)
tree763d0b19f9a1f695b5591b6b4633121a0d30457c /tap-win32/prototypes.h
parentRename generated tapdrvr.cod to a unique name to avoid the issue where (diff)
downloadopenvpn-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-xtap-win32/prototypes.h21
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