aboutsummaryrefslogtreecommitdiffstats
path: root/wintun.c
diff options
context:
space:
mode:
authorSimon Rozman <simon@rozman.si>2019-06-21 11:43:17 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-07-03 08:50:30 +0000
commitde2c48db84192b0a37ce07687815bf3ddf9a9192 (patch)
tree85384842226f1467a212b772c6e868ba02f58de0 /wintun.c
parentDeclare NDIS 6.70 compliant (diff)
downloadwintun-de2c48db84192b0a37ce07687815bf3ddf9a9192.tar.xz
wintun-de2c48db84192b0a37ce07687815bf3ddf9a9192.zip
Make NDIS 6.80 compliant
Implement support for synchronous OID requests and declare the Wintun as NDIS 6.80 compliant. https://docs.microsoft.com/en-us/windows-hardware/drivers/network/introduction-to-ndis-6-80 Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'wintun.c')
-rw-r--r--wintun.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/wintun.c b/wintun.c
index 6df4a76..41488d0 100644
--- a/wintun.c
+++ b/wintun.c
@@ -1525,6 +1525,21 @@ static void TunCancelDirectOidRequest(NDIS_HANDLE MiniportAdapterContext, PVOID
{
}
+static MINIPORT_SYNCHRONOUS_OID_REQUEST TunSynchronousOidRequest;
+_Use_decl_annotations_
+static NDIS_STATUS TunSynchronousOidRequest(NDIS_HANDLE MiniportAdapterContext, PNDIS_OID_REQUEST OidRequest)
+{
+ switch (OidRequest->RequestType) {
+ case NdisRequestQueryInformation:
+ case NdisRequestQueryStatistics:
+ case NdisRequestSetInformation:
+ return NDIS_STATUS_NOT_SUPPORTED;
+
+ default:
+ return NDIS_STATUS_INVALID_OID;
+ }
+}
+
static MINIPORT_UNLOAD TunUnload;
_Use_decl_annotations_
static VOID TunUnload(PDRIVER_OBJECT DriverObject)
@@ -1546,9 +1561,9 @@ NTSTATUS DriverEntry(DRIVER_OBJECT *DriverObject, UNICODE_STRING *RegistryPath)
NDIS_MINIPORT_DRIVER_CHARACTERISTICS miniport = {
.Header = {
- .Type = NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS,
- .Revision = NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2,
- .Size = NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2
+ .Type = NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS,
+ .Revision = NdisVersion < NDIS_RUNTIME_VERSION_680 ? NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2 : NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_3,
+ .Size = NdisVersion < NDIS_RUNTIME_VERSION_680 ? NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2 : NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_3
},
.MajorNdisVersion = (UCHAR)((NdisVersion & 0x00ff0000) >> 16),
@@ -1570,7 +1585,8 @@ NTSTATUS DriverEntry(DRIVER_OBJECT *DriverObject, UNICODE_STRING *RegistryPath)
.ShutdownHandlerEx = TunShutdownEx,
.CancelOidRequestHandler = TunCancelOidRequest,
.DirectOidRequestHandler = TunDirectOidRequest,
- .CancelDirectOidRequestHandler = TunCancelDirectOidRequest
+ .CancelDirectOidRequestHandler = TunCancelDirectOidRequest,
+ .SynchronousOidRequestHandler = TunSynchronousOidRequest
};
if (!NT_SUCCESS(status = NdisMRegisterMiniportDriver(DriverObject, RegistryPath, NULL, &miniport, &NdisMiniportDriverHandle)))
return status;