Isabella Bosia : ndis.sys: Create network card devices.
Alexandre Julliard
julliard at winehq.org
Thu Sep 3 15:26:46 CDT 2020
Module: wine
Branch: master
Commit: 1f9d83f849a84eef1f6a8b114375136ff1fd3c18
URL: https://source.winehq.org/git/wine.git/?a=commit;h=1f9d83f849a84eef1f6a8b114375136ff1fd3c18
Author: Isabella Bosia <ibosia at codeweavers.com>
Date: Tue Sep 1 12:41:18 2020 +0100
ndis.sys: Create network card devices.
Signed-off-by: Isabella Bosia <ibosia at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ndis.sys/main.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/dlls/ndis.sys/main.c b/dlls/ndis.sys/main.c
index 3004f6e76f..73eeb8d584 100644
--- a/dlls/ndis.sys/main.c
+++ b/dlls/ndis.sys/main.c
@@ -55,6 +55,32 @@ static void add_key(const WCHAR *guidstrW, const MIB_IF_ROW2 *netdev)
}
}
+static int add_device(DRIVER_OBJECT *driver, const WCHAR *guidstrW, MIB_IF_ROW2 *netdev)
+{
+ WCHAR nameW[47], linkW[51];
+ UNICODE_STRING name, link;
+ DEVICE_OBJECT *device;
+ NTSTATUS status;
+
+ swprintf( nameW, ARRAY_SIZE(nameW), L"\\Device\\%s", guidstrW );
+ RtlInitUnicodeString( &name, nameW );
+
+ swprintf( linkW, ARRAY_SIZE(linkW), L"\\DosDevices\\%s", guidstrW );
+ RtlInitUnicodeString( &link, linkW );
+
+ if (!(status = IoCreateDevice( driver, sizeof(*netdev), &name, 0, 0, FALSE, &device )))
+ status = IoCreateSymbolicLink( &link, &name );
+ if (status)
+ {
+ FIXME( "failed to create device error %x\n", status );
+ return 0;
+ }
+
+ memcpy( device->DeviceExtension, netdev, sizeof(*netdev) );
+ return 1;
+}
+
+
static void create_network_devices(DRIVER_OBJECT *driver)
{
MIB_IF_TABLE2 *table;
@@ -73,7 +99,8 @@ static void create_network_devices(DRIVER_OBJECT *driver)
guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5],
guid->Data4[6], guid->Data4[7] );
- add_key( guidstrW, &table->Table[i] );
+ if (add_device( driver, guidstrW, &table->Table[i] ))
+ add_key( guidstrW, &table->Table[i] );
}
FreeMibTable( table );
More information about the wine-cvs
mailing list