- Register a device interface for each miniport

svn path=/trunk/; revision=41240
This commit is contained in:
Cameron Gutman 2009-06-01 19:10:49 +00:00
parent dc6b09d85a
commit 7840b71301
2 changed files with 19 additions and 2 deletions

View file

@ -18,6 +18,7 @@ typedef unsigned long NDIS_STATS;
#include <afilter.h>
#include <atm.h>
#include <ndistapi.h>
#include <ndisguid.h>
struct _ADAPTER_BINDING;

View file

@ -1913,6 +1913,8 @@ NdisIPnPStartDevice(
Adapter->NdisMiniportBlock.OldPnPDeviceState = Adapter->NdisMiniportBlock.PnPDeviceState;
Adapter->NdisMiniportBlock.PnPDeviceState = NdisPnPDeviceStarted;
IoSetDeviceInterfaceState(&Adapter->NdisMiniportBlock.SymbolicLinkName, TRUE);
Timeout.QuadPart = Int32x32To64(Adapter->NdisMiniportBlock.CheckForHangSeconds, -1000000);
KeSetTimerEx(&Adapter->NdisMiniportBlock.WakeUpDpcTimer.Timer, Timeout,
Adapter->NdisMiniportBlock.CheckForHangSeconds * 1000,
@ -1951,6 +1953,8 @@ NdisIPnPStopDevice(
(*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.HaltHandler)(Adapter);
IoSetDeviceInterfaceState(&Adapter->NdisMiniportBlock.SymbolicLinkName, FALSE);
if (Adapter->NdisMiniportBlock.AllocatedResources)
{
ExFreePool(Adapter->NdisMiniportBlock.AllocatedResources);
@ -2220,10 +2224,22 @@ NdisIAddDevice(
Adapter = (PLOGICAL_ADAPTER)DeviceObject->DeviceExtension;
KeInitializeSpinLock(&Adapter->NdisMiniportBlock.Lock);
InitializeListHead(&Adapter->ProtocolListHead);
Status = IoRegisterDeviceInterface(PhysicalDeviceObject,
&GUID_DEVINTERFACE_NET,
NULL,
&Adapter->NdisMiniportBlock.SymbolicLinkName);
if (!NT_SUCCESS(Status))
{
NDIS_DbgPrint(MIN_TRACE, ("Could not create device interface.\n"));
IoDeleteDevice(DeviceObject);
RtlFreeUnicodeString(&ExportName);
return Status;
}
Adapter->NdisMiniportBlock.DriverHandle = Miniport;
Adapter->NdisMiniportBlock.MiniportName = ExportName;
Adapter->NdisMiniportBlock.DeviceObject = DeviceObject;
Adapter->NdisMiniportBlock.PhysicalDeviceObject = PhysicalDeviceObject;
Adapter->NdisMiniportBlock.NextDeviceObject =