14#define USBD_POOL_TAG 'DBSU'
17#define USBD_NONPAGED_POOL_NX ((POOL_TYPE)0x200)
149 if (
Record->SerialLength == 0)
175 if (!Existing->Disconnected)
178 if (SameConnector || SamePort)
#define RtlInitializeBitMap
#define RtlFindClearBitsAndSet
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeReleaseSpinLock(sl, irql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeAcquireSpinLock(sl, irql)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
_In_ PCUNICODE_STRING _Out_ HubUxdSettings * Record
static PUSBD_SERIAL_RECORD UsbdFindSerialRecordByDevice(_In_ PVOID DeviceContext)
#define USBD_NONPAGED_POOL_NX
static KEVENT UsbdHubNumberLock
NTSTATUS NTAPI DllInitialize(_In_ PUNICODE_STRING RegistryPath)
static POOL_TYPE UsbdNonPagedPoolType
VOID NTAPI USBD_ReleaseHubNumber(_In_ ULONG HubNumber)
VOID NTAPI USBD_MarkDeviceAsDisconnected(_In_ PVOID DeviceContext)
struct _USBD_SERIAL_RECORD * PUSBD_SERIAL_RECORD
static BOOLEAN UsbdSerialRecordMatches(_In_ PUSBD_SERIAL_RECORD Record, _In_ USHORT IdVendor, _In_ USHORT IdProduct, _In_ PUSB_ID_STRING SerialNumber)
static KSPIN_LOCK UsbdSerialListLock
ULONG NTAPI USBD_AddDeviceToGlobalList(_In_ PVOID DeviceContext, _In_opt_ PVOID HubContext, _In_ ULONG PortNumber, _In_opt_ PVOID ConnectorNode, _In_ USHORT IdVendor, _In_ USHORT IdProduct, _In_ PUSB_ID_STRING SerialNumber)
static ULONG UsbdClassifySerialCollision(_In_ PUSBD_SERIAL_RECORD Existing, _In_opt_ PVOID HubContext, _In_ ULONG PortNumber, _In_opt_ PVOID ConnectorNode)
struct _USBD_SERIAL_RECORD USBD_SERIAL_RECORD
static PRTL_BITMAP UsbdHubNumbers
ULONG NTAPI USBD_AllocateHubNumber(VOID)
VOID NTAPI USBD_RemoveDeviceFromGlobalList(_In_ PVOID DeviceContext)
_In_ UCXHUB_DEVICE_CONTEXT DeviceContext
#define RtlEqualMemory(dst, src, len)
#define ExFreePoolWithTag(_P, _T)
static PVOID ExAllocatePoolZero(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
#define UNREFERENCED_PARAMETER(P)
struct _LIST_ENTRY * Flink
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
_In_opt_ PVOID _In_ ULONG _In_opt_ PVOID ConnectorNode
#define USBD_HUB_NUMBER_NONE
#define USBD_GLOBAL_LIST_DUPLICATE_PENDING
#define USBD_GLOBAL_LIST_ADDED
_In_opt_ PVOID HubContext
_In_opt_ PVOID _In_ ULONG _In_opt_ PVOID _In_ USHORT IdVendor
#define USBD_GLOBAL_LIST_DUPLICATE
_In_opt_ PVOID _In_ ULONG _In_opt_ PVOID _In_ USHORT _In_ USHORT _In_ PUSB_ID_STRING SerialNumber
#define USBD_GLOBAL_LIST_NO_MEMORY
_In_opt_ PVOID _In_ ULONG _In_opt_ PVOID _In_ USHORT _In_ USHORT IdProduct
#define USBD_HUB_NUMBER_COUNT
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define RTL_STATIC_LIST_HEAD(x)