71 DeviceExtension->IsBus =
FALSE;
73 DeviceExtension->DeviceEntry = DeviceEntry;
74 DeviceExtension->BusDeviceExtension = BusDeviceExtension;
121 FreeItem(BusInstanceEntry->SymbolicLink.Buffer);
125 DPRINT(
"Registered DeviceInterface %wZ\n", &BusInstanceEntry->SymbolicLink);
140 Entry = DeviceEntry->DeviceInterfaceList.Flink;
142 while(
Entry != &DeviceEntry->DeviceInterfaceList)
278 Entry = DeviceEntry->DeviceInterfaceList.Flink;
280 DPRINT(
"KspCreateDeviceAssociation InterfaceString %S\n", InterfaceString);
282 while(
Entry != &DeviceEntry->DeviceInterfaceList)
367 Entry = BusDeviceExtension->Common.
Entry.Flink;
369 while(
Entry != &BusDeviceExtension->Common.
Entry)
411 if (!DeviceEntry->
BusId)
538 ASSERT(BusDeviceExtension);
624 Interface->Interface.Size =
sizeof(BUS_INTERFACE_SWENUM);
625 Interface->Interface.Version = BUS_INTERFACE_SWENUM_VERSION;
626 Interface->Interface.Context = ChildDeviceExtension;
946 ASSERT(BusDeviceExtension);
980 return Irp->IoStatus.Status;
991 HANDLE hKey, hDeviceKey, hInterfaceKey, hReferenceKey;
1004 if (InstallInterface->ReferenceString[
Index] <=
L' ' ||
1005 InstallInterface->ReferenceString[
Index] >
L'~' ||
1006 InstallInterface->ReferenceString[
Index] ==
L',' ||
1007 InstallInterface->ReferenceString[
Index] ==
L'\\' ||
1008 InstallInterface->ReferenceString[
Index] ==
L'/')
1095 ASSERT(InstallInterface);
1136 Entry =
Context->BusDeviceExtension->Common.Entry.Flink;
1137 while(
Entry != &
Context->BusDeviceExtension->Common.Entry)
1143 if (!DeviceEntry->
PDO)
1210 if (DeviceEntry->
PDO)
1233 DoInvalidate =
TRUE;
1319 Entry = BusDeviceExtension->Common.
Entry.Flink;
1321 while(
Entry != &BusDeviceExtension->Common.
Entry)
1343 if (!DeviceRelations)
1351 Entry = BusDeviceExtension->Common.
Entry.Flink;
1353 while(
Entry != &BusDeviceExtension->Common.
Entry)
1368 DeviceRelations->
Count++;
1382 Irp->IoStatus.Information = (
ULONG_PTR)DeviceRelations;
1407 DPRINT(
"KsGetBusEnumIdentifier\n");
1423 ASSERT(BusDeviceExtension);
1426 if (!BusDeviceExtension)
1436 if (IoStack->
Parameters.DeviceIoControl.InputBufferLength)
1457 Irp->AssociatedIrp.SystemBuffer =
Buffer;
1489 DPRINT(
"KsGetBusEnumParentFDOFromChildPDO\n");
1532 DPRINT1(
"KsCreateBusEnumObject %S BusDeviceObject %p\n", ServiceRelativePath, BusDeviceObject);
1539 if (!BusDeviceExtension)
1547 DeviceExtension = (
PDEV_EXTENSION)BusDeviceObject->DeviceExtension;
1552 DPRINT(
"DeviceExtension %p BusDeviceExtension %p\n", DeviceExtension, DeviceExtension->
Ext);
1563 Length += BusDeviceObject->DriverObject->DriverExtension->ServiceKeyName.MaximumLength;
1565 if (ServiceRelativePath)
1586 if (ServiceRelativePath)
1600 DPRINT1(
"IoRegisterDeviceInterface failed Status %lx\n",
Status);
1611 DPRINT1(
"IoSetDeviceInterfaceState failed Status %lx\n",
Status);
1644 if (!PnpDeviceObject)
1649 if (!BusDeviceExtension->PnpDeviceObject)
1652 DPRINT1(
"IoAttachDeviceToDeviceStack failed with %x\n",
Status);
1653 if (BusDeviceExtension->DeviceInterfaceLink.Buffer)
1660 FreeItem(BusDeviceExtension->ServicePath.Buffer);
1667 BusDeviceExtension->DeviceAttached =
TRUE;
1672 BusDeviceExtension->PnpDeviceObject = PnpDeviceObject;
1682 if (BusDeviceExtension->DeviceInterfaceLink.Buffer)
1688 if (BusDeviceExtension->DeviceAttached)
1695 FreeItem(BusDeviceExtension->ServicePath.Buffer);
1705 Entry = BusDeviceExtension->Common.Entry.Flink;
1706 while(
Entry != &BusDeviceExtension->Common.Entry)
1710 if (!DeviceEntry->
PDO)
1753 DPRINT(
"KsGetBusEnumPnpDeviceObject\n");
1765 CommonDeviceExtension = DeviceExtension->
Ext;
1767 if (!CommonDeviceExtension)
1773 if (!CommonDeviceExtension->IsBus)
1780 ASSERT(CommonDeviceExtension);
1781 ASSERT(CommonDeviceExtension->IsBus);
1809 DPRINT(
"KsInstallBusEnumInterface\n");
1837 Context.BusDeviceExtension = BusDeviceExtension;
1873 if (!BusDeviceExtension)
1920 DPRINT(
"KsServiceBusEnumCreateRequest PNP Hack\n");
1927 DPRINT1(
"KsServiceBusEnumCreateRequest IRP %p Name %wZ\n",
Irp, &IoStack->
FileObject->FileName);
1957 if (DeviceEntry->
PDO)
1995 DPRINT1(
"KsServiceBusEnumCreateRequest failed to create PDO with %x\n",
Status);
2065 ChildDeviceExtension = DeviceExtension->
Ext;
2068 BusDeviceExtension = ChildDeviceExtension->BusDeviceExtension;
2077 ASSERT(ChildDeviceExtension->DeviceEntry->DeviceState !=
Started || ChildDeviceExtension->DeviceEntry->DeviceState ==
NotStarted);
2081 DeviceEntry = ChildDeviceExtension->DeviceEntry;
2139 ASSERT(BusDeviceExtension);
2169 DeviceRelation->
Count = 1;
2215 DPRINT(
"KsRemoveBusEnumInterface\n");
2224 BusDeviceExtension = DeviceExtension->
Ext->BusDeviceExtension;
#define KeQuerySystemTime(t)
#define DO_DEVICE_INITIALIZING
IN CINT OUT PVOID IN ULONG OUT PULONG ResultLength
#define KeGetCurrentIrql()
NTSTRSAFEAPI RtlStringCbCopyW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
NTSTATUS KspQueryBusDeviceInterface(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define STATUS_PRIVILEGE_NOT_HELD
#define STATUS_DEVICE_REMOVED
KSDDKAPI NTSTATUS NTAPI KsRemoveBusEnumInterface(IN PIRP Irp)
#define IRP_MN_QUERY_RESOURCES
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
#define IRP_MN_REMOVE_DEVICE
#define STATUS_INSUFFICIENT_RESOURCES
NTSTATUS NTAPI KspBusQueryReferenceString(IN PVOID Context, IN OUT PWCHAR *String)
NTSTATUS KspOpenBusRegistryKey(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, OUT PHANDLE hKey)
#define STATUS_NOT_IMPLEMENTED
struct __BUS_ENUM_DEVICE_EXTENSION__ * BusDeviceExtension
NTSTATUS KspEnableBusDeviceInterface(PBUS_DEVICE_ENTRY DeviceEntry, BOOLEAN bEnable)
#define STATUS_INVALID_PARAMETER
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
struct __BUS_ENUM_DEVICE_EXTENSION__ BUS_ENUM_DEVICE_EXTENSION
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS
PDEVICE_OBJECT Objects[1]
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
#define SE_LOAD_DRIVER_PRIVILEGE
VOID NTAPI KspInstallBusEnumInterface(IN PVOID Ctx)
struct _KEY_BASIC_INFORMATION KEY_BASIC_INFORMATION
NTSTATUS KspQueryId(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
NTSTATUS KspQueryBusDevicePnpState(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
VOID NTAPI IoDetachDevice(IN PDEVICE_OBJECT TargetDevice)
BOOLEAN NTAPI SeSinglePrivilegeCheck(IN LUID PrivilegeValue, IN KPROCESSOR_MODE PreviousMode)
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
NTSTATUS KspRegisterDeviceAssociation(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PBUS_DEVICE_ENTRY DeviceEntry, IN OUT PBUS_INSTANCE_ENTRY BusInstanceEntry)
PDEVICE_OBJECT PhysicalDeviceObject
#define InsertTailList(ListHead, Entry)
NTSTATUS KspInstallInterface(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PSWENUM_INSTALL_INTERFACE InstallInterface)
NTSTATUS KspQueryBusRelations(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PIRP Irp)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
#define PNP_DEVICE_DONT_DISPLAY_IN_UI
#define RtlMoveMemory(Destination, Source, Length)
struct BUS_INSTALL_ENUM_CONTEXT * PBUS_INSTALL_ENUM_CONTEXT
VOID NTAPI KspRemoveBusInterface(PVOID Ctx)
#define STATUS_BUFFER_TOO_SMALL
UNICODE_STRING DeviceInterfaceLink
#define IsEqualGUIDAligned(guid1, guid2)
NTSTATUS NTAPI KspCreateDeviceReference(IN PHANDLE hKey, IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PBUS_DEVICE_ENTRY DummyEntry, IN LPWSTR InterfaceId, IN LPWSTR DeviceId)
#define STATUS_INVALID_DEVICE_STATE
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
VOID KspRemoveDeviceAssociations(IN PBUS_DEVICE_ENTRY DeviceEntry)
KSDDKAPI NTSTATUS NTAPI KsServiceBusEnumCreateRequest(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp)
VOID FreeItem(IN PVOID Item)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
NTSTATUS NTAPI KspCreateDeviceReferenceTrampoline(IN PHANDLE hKey, IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PBUS_DEVICE_ENTRY DummyEntry, IN LPWSTR DeviceCategory, IN LPWSTR ReferenceString)
ULONG DeviceObjectReferenceCount
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
NTSTATUS NTAPI KspCreateDeviceAssociation(IN PHANDLE hKey, IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PBUS_DEVICE_ENTRY DeviceEntry, IN LPWSTR InterfaceString, IN LPWSTR ReferenceString)
LARGE_INTEGER TimeCreated
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
_In_ CONST GUID _In_opt_ PUNICODE_STRING ReferenceString
struct _SWENUM_INSTALL_INTERFACE * PSWENUM_INSTALL_INTERFACE
struct _KEY_BASIC_INFORMATION * PKEY_BASIC_INFORMATION
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
ULONG DeviceReferenceCount
struct _PNP_BUS_INFORMATION * PPNP_BUS_INFORMATION
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
PDEVICE_OBJECT PhysicalDeviceObject
NTSTATUS NTAPI IoSetDeviceInterfaceState(IN PUNICODE_STRING SymbolicLinkName, IN BOOLEAN Enable)
struct __BUS_ENUM_DEVICE_EXTENSION__ * PBUS_ENUM_DEVICE_EXTENSION
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension
NTSTATUS KspDoReparseForIrp(PIRP Irp, PBUS_DEVICE_ENTRY DeviceEntry)
KSDDKAPI NTSTATUS NTAPI KsGetBusEnumIdentifier(IN PIRP Irp)
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
struct _LIST_ENTRY * Flink
PDEVICE_OBJECT DeviceObject
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
NTSTATUS KspQueryBusInformation(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
_In_ LARGE_INTEGER _In_opt_ PKDPC Dpc
#define ExInitializeWorkItem(Item, Routine, Context)
#define NT_SUCCESS(StatCode)
FORCEINLINE LUID NTAPI_INLINE RtlConvertUlongToLuid(_In_ ULONG Val)
UNICODE_STRING ServicePath
NTSTATUS KspScanBus(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension)
#define KeAcquireSpinLock(sl, irql)
#define swprintf(buf, format,...)
#define IRP_MN_START_DEVICE
KSDDKAPI NTSTATUS NTAPI KsCreateBusEnumObject(IN PWCHAR BusIdentifier, IN PDEVICE_OBJECT BusDeviceObject, IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_OBJECT PnpDeviceObject OPTIONAL, IN REFGUID InterfaceGuid OPTIONAL, IN PWCHAR ServiceRelativePath OPTIONAL)
struct __BUS_DEVICE_ENTRY__ * PBUS_DEVICE_ENTRY
struct _COMMON_DEVICE_EXTENSION * PCOMMON_DEVICE_EXTENSION
static const UCHAR Index[8]
#define PNP_DEVICE_NOT_DISABLEABLE
NTSTATUS KspCreatePDO(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PBUS_DEVICE_ENTRY DeviceEntry, OUT PDEVICE_OBJECT *OutDeviceObject)
PDEVICE_OBJECT DeviceObject
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define IRP_MN_QUERY_INTERFACE
_In_ ULONG _In_ ULONG _In_ ULONG Length
KSDDKAPI NTSTATUS NTAPI KsGetBusEnumParentFDOFromChildPDO(IN PDEVICE_OBJECT DeviceObject, OUT PDEVICE_OBJECT *FunctionalDeviceObject)
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
#define OBJ_CASE_INSENSITIVE
VOID NTAPI KspBusReferenceDeviceObject(IN PVOID Context)
VOID NTAPI KspBusDeviceReference(IN PVOID Context)
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IRP_MN_QUERY_BUS_INFORMATION
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const GUID InterfaceGuid
KSDDKAPI NTSTATUS NTAPI KsServiceBusEnumPnpRequest(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp)
#define InterlockedDecrement
PCOMMON_DEVICE_EXTENSION Ext
NTSTATUS(NTAPI * PKSP_BUS_ENUM_CALLBACK)(IN PHANDLE hKey, IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PBUS_DEVICE_ENTRY DummyEntry, IN LPWSTR RootName, IN LPWSTR DirectoryName)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
KSDDKAPI NTSTATUS NTAPI KsGetBusEnumPnpDeviceObject(IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT *PnpDeviceObject)
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
LIST_ENTRY IrpPendingList
KSDDKAPI NTSTATUS NTAPI KsInstallBusEnumInterface(PIRP Irp)
IN PDEVICE_OBJECT DeviceObject
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoInvalidateDeviceRelations(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_RELATION_TYPE Type)
NTSTATUS NTAPI IoRegisterDeviceInterface(IN PDEVICE_OBJECT PhysicalDeviceObject, IN CONST GUID *InterfaceClassGuid, IN PUNICODE_STRING ReferenceString OPTIONAL, OUT PUNICODE_STRING SymbolicLinkName)
struct _DEVICE_RELATIONS DEVICE_RELATIONS
#define KeInitializeEvent(pEvt, foo, foo2)
#define IRP_INPUT_OPERATION
#define InterlockedIncrement
#define STATUS_OBJECT_NAME_NOT_FOUND
#define STATUS_BUFFER_OVERFLOW
struct BUS_INSTANCE_ENTRY * PBUS_INSTANCE_ENTRY
#define InitializeListHead(ListHead)
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
KSDDKAPI NTSTATUS NTAPI KsIsBusEnumChildDevice(IN PDEVICE_OBJECT DeviceObject, OUT PBOOLEAN ChildDevice)
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * FunctionalDeviceObject
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
VOID NTAPI KspBusDpcRoutine(IN PKDPC Dpc, IN PVOID DeferredContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
#define FILE_DEVICE_UNKNOWN
#define KeReleaseSpinLock(sl, irql)
#define IRP_MN_QUERY_DEVICE_RELATIONS
NTSTATUS KspQueryBusDeviceCapabilities(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
NTSTATUS KspEnumerateBusRegistryKeys(IN HANDLE hKey, IN LPWSTR ReferenceString, IN PKSP_BUS_ENUM_CALLBACK Callback, IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, IN PBUS_DEVICE_ENTRY DeviceEntry)
#define IRP_DEALLOCATE_BUFFER
VOID NTAPI KspBusDereferenceDeviceObject(IN PVOID Context)
#define ObReferenceObject
struct tagContext Context
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
PDEVICE_OBJECT PnpDeviceObject
VOID NTAPI KspBusWorkerRoutine(IN PVOID Parameter)
#define ExFreePoolWithTag(_P, _T)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
NTSTATUS KspStartBusDevice(IN PDEVICE_OBJECT DeviceObject, IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
IN BOOLEAN OUT PSTR Buffer
COMMON_DEVICE_EXTENSION Common
struct DEV_EXTENSION * PDEV_EXTENSION
VOID NTAPI KspBusDeviceDereference(IN PVOID Context)
#define OBJ_KERNEL_HANDLE
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static PLARGE_INTEGER Time
base of all file and directory entries
#define IRP_MN_QUERY_PNP_DEVICE_STATE
#define Int32x32To64(a, b)
#define IRP_MN_QUERY_CAPABILITIES
PDEVICE_OBJECT BusDeviceObject
UNICODE_STRING SymbolicLink
#define RTL_CONSTANT_STRING(s)
const GUID KSMEDIUMSETID_Standard
VOID KspCompletePendingIrps(IN PBUS_DEVICE_ENTRY DeviceEntry, IN OUT NTSTATUS ResultCode)
PULONG MinorVersion OPTIONAL
_In_opt_ PVOID DeferredContext
LIST_ENTRY DeviceInterfaceList