38#define HUB_BOOT_REGISTRATION_VERSION 1
57 Status = IoGetDevicePropertyData(WdfDeviceWdmGetDeviceObject(
Device),
58 &DEVPKEY_Device_InLocalMachineContainer,
83 DPRINT(
"Boot device recovered after a surprise removal\n");
84 HubWmiNotifyBootSurpriseRemoval();
85 HubBumpBootSurpriseRemovalCount();
142 if (
Child->m_Hub->IsHubResetInProgress())
144 DPRINT(
"Boot device on port %u counted present during a hub reset\n",
Port->
Number());
170 DPRINT(
"Boot device on port %u failed its last enumeration\n",
Port->
Number());
186 DPRINT(
"Boot port %u stayed in SS.Inactive, device counted present\n",
Port->
Number());
203 DPRINT(
"Boot device on port %u reported missing again, answering ready\n",
Port->
Number());
210 HubBootAfterRecovery(
Child);
274 DPRINT1(
"Boot request on port %u not created 0x%lx\n",
Pdo->m_PortNumber,
Status);
281 DPRINT1(
"Boot device on port %u left before its usage notice\n",
Pdo->m_PortNumber);
295 HubWmiRegisterBootSurpriseRemoval(
Pdo->m_Device);
299 DPRINT1(
"Boot device on port %u is internal, not registered\n",
Pdo->m_PortNumber);
308 DPRINT(
"Port %u device is now in the boot path\n",
Pdo->m_PortNumber);
327 WinPe = HubIsWinPe();
349 DPRINT1(
"Paging refused on external port %u device\n",
Pdo->m_PortNumber);
#define InterlockedExchange
_In_ BOOLEAN _In_ BOOLEAN External
InterlockedExchange & Child
static VOID NTAPI HubBootRecoveryWorkItem(_In_ WDFWORKITEM WorkItem)
#define HUB_BOOT_REGISTRATION_VERSION
BOOLEAN(NTAPI * PFN_HUB_BOOT_DEVICE_READY)(_In_ PDEVICE_OBJECT Pdo, _In_ PVOID Context)
EVT_WDF_DEVICE_USAGE_NOTIFICATION_EX HubPdoEvtUsageNotificationEx
VOID SetState(_In_ ChildState Flag)
USB_CONNECTION_STATUS m_ConnectionStatus
VOID SetFlag(_In_ PortFlag Flag)
VOID ClearFlag(_In_ PortFlag Flag)
BOOLEAN HasFlag(_In_ PortFlag Flag) const
#define STATUS_NOT_SUPPORTED
#define DSM_KIND_SUPER_SPEED
#define NT_SUCCESS(StatCode)
#define _IRQL_requires_max_(irql)
#define _IRQL_requires_(irql)
VOID NTAPI HubNotifyBootDeviceRemoval(_In_opt_ PVOID Handle)
_Must_inspect_result_ _In_ CONST FLT_REGISTRATION * Registration
@ DifferentDeviceOnBootPort
VOID(NTAPI * PFN_HUB_NOTIFY_BOOT_DEVICE_REMOVAL)(_In_ PVOID Handle)
NTSTATUS(NTAPI * PFN_HUB_REGISTER_BOOT_DEVICE)(_In_ PVOID Registration, _Out_ PVOID *Handle)
FORCEINLINE USHORT NTAPI HubLinkState(_In_ USHORT Status)
WdfWorkItemEnqueue(WorkItem)
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
_In_opt_ PVOID _In_ PUCXHUB_WORKITEM WorkItem
_In_ UCXUSBDEVICE _In_ PDEVICE_OBJECT Pdo
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define UNREFERENCED_PARAMETER(P)
PDRIVER_OBJECT DriverObject
PFN_HUB_BOOT_DEVICE_READY IsBootDeviceReady
PDEVICE_OBJECT DeviceObject
PFN_HUB_NOTIFY_BOOT_DEVICE_REMOVAL NotifyBootDeviceRemoval
PDRIVER_OBJECT DriverObject
PFN_HUB_REGISTER_BOOT_DEVICE RegisterBootDevice
PVOID NTAPI MmGetSystemRoutineAddress(IN PUNICODE_STRING SystemRoutineName)
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG Config
#define STATUS_NO_SUCH_DEVICE
@ DeviceFailedEnumeration
enum _WDF_SPECIAL_FILE_TYPE WDF_SPECIAL_FILE_TYPE
_In_ WDF_SPECIAL_FILE_TYPE _In_ BOOLEAN IsInNotificationPath
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
@ WdfSpecialFileHibernation
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
FORCEINLINE VOID WDF_OBJECT_ATTRIBUTES_INIT(_Out_ PWDF_OBJECT_ATTRIBUTES Attributes)
FORCEINLINE VOID WDF_WORKITEM_CONFIG_INIT(_Out_ PWDF_WORKITEM_CONFIG Config, _In_ PFN_WDF_WORKITEM EvtWorkItemFunc)