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)
1222 DPRINT1(
"DeviceID %S Instance %S TimeCreated %I64u Now %I64u Diff %I64u hung\n",
1239 DoInvalidate =
TRUE;
1325 Entry = BusDeviceExtension->Common.
Entry.Flink;
1327 while(
Entry != &BusDeviceExtension->Common.
Entry)
1349 if (!DeviceRelations)
1357 Entry = BusDeviceExtension->Common.
Entry.Flink;
1359 while(
Entry != &BusDeviceExtension->Common.
Entry)
1374 DeviceRelations->
Count++;
1388 Irp->IoStatus.Information = (
ULONG_PTR)DeviceRelations;
1413 DPRINT(
"KsGetBusEnumIdentifier\n");
1429 ASSERT(BusDeviceExtension);
1432 if (!BusDeviceExtension)
1442 if (IoStack->
Parameters.DeviceIoControl.InputBufferLength)
1463 Irp->AssociatedIrp.SystemBuffer =
Buffer;
1495 DPRINT(
"KsGetBusEnumParentFDOFromChildPDO\n");
1538 DPRINT1(
"KsCreateBusEnumObject %S BusDeviceObject %p\n", ServiceRelativePath, BusDeviceObject);
1545 if (!BusDeviceExtension)
1553 DeviceExtension = (
PDEV_EXTENSION)BusDeviceObject->DeviceExtension;
1558 DPRINT(
"DeviceExtension %p BusDeviceExtension %p\n", DeviceExtension, DeviceExtension->
Ext);
1569 Length += BusDeviceObject->DriverObject->DriverExtension->ServiceKeyName.MaximumLength;
1571 if (ServiceRelativePath)
1592 if (ServiceRelativePath)
1606 DPRINT1(
"IoRegisterDeviceInterface failed Status %lx\n",
Status);
1617 DPRINT1(
"IoSetDeviceInterfaceState failed Status %lx\n",
Status);
1650 if (!PnpDeviceObject)
1655 if (!BusDeviceExtension->PnpDeviceObject)
1658 DPRINT1(
"IoAttachDeviceToDeviceStack failed with %x\n",
Status);
1659 if (BusDeviceExtension->DeviceInterfaceLink.Buffer)
1666 FreeItem(BusDeviceExtension->ServicePath.Buffer);
1673 BusDeviceExtension->DeviceAttached =
TRUE;
1678 BusDeviceExtension->PnpDeviceObject = PnpDeviceObject;
1688 if (BusDeviceExtension->DeviceInterfaceLink.Buffer)
1694 if (BusDeviceExtension->DeviceAttached)
1701 FreeItem(BusDeviceExtension->ServicePath.Buffer);
1711 Entry = BusDeviceExtension->Common.Entry.Flink;
1712 while(
Entry != &BusDeviceExtension->Common.Entry)
1716 if (!DeviceEntry->
PDO)
1759 DPRINT(
"KsGetBusEnumPnpDeviceObject\n");
1771 CommonDeviceExtension = DeviceExtension->
Ext;
1773 if (!CommonDeviceExtension)
1779 if (!CommonDeviceExtension->IsBus)
1786 ASSERT(CommonDeviceExtension);
1787 ASSERT(CommonDeviceExtension->IsBus);
1815 DPRINT(
"KsInstallBusEnumInterface\n");
1843 Context.BusDeviceExtension = BusDeviceExtension;
1879 if (!BusDeviceExtension)
1926 DPRINT(
"KsServiceBusEnumCreateRequest PNP Hack\n");
1933 DPRINT1(
"KsServiceBusEnumCreateRequest IRP %p Name %wZ\n",
Irp, &IoStack->
FileObject->FileName);
1963 if (DeviceEntry->
PDO)
2001 DPRINT1(
"KsServiceBusEnumCreateRequest failed to create PDO with %x\n",
Status);
2071 ChildDeviceExtension = DeviceExtension->
Ext;
2074 BusDeviceExtension = ChildDeviceExtension->BusDeviceExtension;
2083 ASSERT(ChildDeviceExtension->DeviceEntry->DeviceState !=
Started || ChildDeviceExtension->DeviceEntry->DeviceState ==
NotStarted);
2087 DeviceEntry = ChildDeviceExtension->DeviceEntry;
2145 ASSERT(BusDeviceExtension);
2174 DeviceRelation->
Count = 1;
2220 DPRINT(
"KsRemoveBusEnumInterface\n");
2229 BusDeviceExtension = DeviceExtension->
Ext->BusDeviceExtension;
#define DO_DEVICE_INITIALIZING
#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
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
NTSTATUS NTAPI KspBusQueryReferenceString(IN PVOID Context, IN OUT PWCHAR *String)
#define OBJ_CASE_INSENSITIVE
NTSTATUS KspOpenBusRegistryKey(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension, OUT PHANDLE hKey)
struct __BUS_ENUM_DEVICE_EXTENSION__ * BusDeviceExtension
IN BOOLEAN OUT PSTR Buffer
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
ULONG NTAPI KeQueryTimeIncrement(VOID)
VOID NTAPI KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
NTSTATUS KspQueryId(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
NTSTATUS KspQueryBusDevicePnpState(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
VOID NTAPI IoDetachDevice(IN PDEVICE_OBJECT TargetDevice)
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)
#define OBJ_KERNEL_HANDLE
_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)
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
VOID FreeItem(IN PVOID Item)
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
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)
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
VOID NTAPI KeQueryTickCount(IN PLARGE_INTEGER TickCount)
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
NTSTATUS KspQueryBusInformation(IN PCOMMON_DEVICE_EXTENSION ChildDeviceExtension, IN PIRP Irp)
#define ExInitializeWorkItem(Item, Routine, Context)
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
FORCEINLINE LUID NTAPI_INLINE RtlConvertUlongToLuid(_In_ ULONG Val)
UNICODE_STRING ServicePath
NTSTATUS KspScanBus(IN PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension)
#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
#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 VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define IRP_MN_QUERY_INTERFACE
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)
VOID NTAPI KspBusReferenceDeviceObject(IN PVOID Context)
VOID NTAPI KspBusDeviceReference(IN PVOID Context)
#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
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
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)
KSDDKAPI NTSTATUS NTAPI KsGetBusEnumPnpDeviceObject(IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT *PnpDeviceObject)
int _cdecl swprintf(const WCHAR *,...)
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
LIST_ENTRY IrpPendingList
KSDDKAPI NTSTATUS NTAPI KsInstallBusEnumInterface(PIRP Irp)
__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
_Must_inspect_result_ _In_ WDFDEVICE _In_ CONST GUID _In_opt_ PCUNICODE_STRING ReferenceString
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
struct BUS_INSTANCE_ENTRY * PBUS_INSTANCE_ENTRY
#define InitializeListHead(ListHead)
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
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)
BOOLEAN NTAPI SeSinglePrivilegeCheck(_In_ LUID PrivilegeValue, _In_ KPROCESSOR_MODE PreviousMode)
Checks if a single privilege is present in the context of the calling thread.
#define IRP_DEALLOCATE_BUFFER
VOID NTAPI KspBusDereferenceDeviceObject(IN PVOID Context)
struct tagContext Context
#define ObReferenceObject
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)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
PDEVICE_OBJECT PnpDeviceObject
VOID NTAPI KspBusWorkerRoutine(IN PVOID Parameter)
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
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)
COMMON_DEVICE_EXTENSION Common
struct DEV_EXTENSION * PDEV_EXTENSION
VOID NTAPI KspBusDeviceDereference(IN PVOID Context)
#define ExFreePoolWithTag(_P, _T)
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