|
ReactOS 0.4.17-dev-1321-g5c122a9
|
#include "usbdex.h"
Go to the source code of this file.
Classes | |
| struct | _USBDEX_HANDLE_OBJECT |
Macros | |
| #define | USBDEX_HANDLE_SIGNATURE 'DBSU' |
| #define | USBDEX_MODE_UCX USBD_INTERFACE_VERSION_602 |
| #define | USBDEX_MODE_LEGACY USBD_INTERFACE_VERSION_600 |
| #define | USBDEX_MODE_NONE 0xFFFFFFFF |
| #define | USBDEX_NONPAGED_POOL_NX ((POOL_TYPE)0x200) |
| #define | USBDEX_PIPE_MAX_TRANSFER_DEFAULT 0xFFFFFFFF |
| #define | USBDEX_SELECT_INTERFACE_MAX_PIPES 32 |
| #define | USBDEX_COMPOSITE_VERSION 0x0100 |
Typedefs | |
| typedef NTSTATUS(NTAPI * | PFN_USBDEX_QUERY_REGISTRY) (_In_ ULONG RelativeTo, _In_ PCWSTR Path, _Inout_ PRTL_QUERY_REGISTRY_TABLE QueryTable, _In_opt_ PVOID Context, _In_opt_ PVOID Environment) |
| typedef struct _USBDEX_HANDLE_OBJECT | USBDEX_HANDLE_OBJECT |
| typedef struct _USBDEX_HANDLE_OBJECT * | PUSBDEX_HANDLE_OBJECT |
Variables | |
| static POOL_TYPE | UsbdexPoolType = NonPagedPool |
| static BOOLEAN | UsbdexPoolTypeKnown = FALSE |
| static IO_COMPLETION_ROUTINE | UsbdexSyncCompletion |
| static RTL_QUERY_REGISTRY_ROUTINE | UsbdexVerifierValueCallback |
| #define USBDEX_MODE_LEGACY USBD_INTERFACE_VERSION_600 |
| #define USBDEX_MODE_UCX USBD_INTERFACE_VERSION_602 |
| typedef struct _USBDEX_HANDLE_OBJECT * PUSBDEX_HANDLE_OBJECT |
| _Must_inspect_result_ _IRQL_requires_ | ( | PASSIVE_LEVEL | ) |
Sends a synchronous IOCTL to the specified device object.
| [in] | IoControlCode | The IOCTL to send to the device. |
| [in] | DeviceObject | Pointer to the device object that will handle the IOCTL. |
| [in] | InputBuffer | Optional pointer to a buffer containing input data for the IOCTL. When specified, the buffer should be at least of InputBufferLength size. |
| [in] | InputBufferLength | Size in bytes, of the buffer pointed by InputBuffer. |
| [out] | OutputBuffer | Optional pointer to a buffer that will receive output data from the IOCTL. When specified, the buffer should be at least of OutputBufferLength size. |
| [in] | OutputBufferLength | Size in bytes, of the buffer pointed by OutputBuffer. |
| [in] | FileObject | Optional pointer to a file object that may be necessary for the IOCTL. |
Nothing is found unless the PCI bus driver publishes the properties.
The root hub name without its prefix; NULL when the PDO has no name.
Grows a private buffer to what the helper asks for.
Lets KMDF handle the IRP, then hands it back here still uncompleted.
Waits for the device machine to answer a PnP or power event; returns the PnP status.
Deletes the UCX endpoints of the disabled pipes, then the interface record.
One 4 byte value; the registry type is not checked.
Reread whenever user experience settings change; the open status is returned.
Sends a synchronous IOCTL to the specified device object.
STATUS_SUCCESS when the caller's token is an administrator's.
Sends a synchronous IOCTL to the specified device object.
Reads one value of a walk. A missing value only clears Present; FALSE means stop.
Reads up to Size bytes of a value into a zeroed buffer; the type is not checked.
Writes a REG_BINARY value into the device's usbflags subkey.
Sets or clears ExtPropertiesInstalled from ExtPropDescSemaphore in the hardware key.
Fails only when a port cannot be bound to the USB4 host router its ACPI node names.
Assigns device, hardware, compatible, container and instance ids to a new child PDO.
Answers IRP_MN_QUERY_DEVICE_TEXT on a child PDO; always completes the IRP.
Takes the connector map lock, needed around HubConnectorFindCompanion.
Device hardware key values read at PDO prepare hardware.
Saves the MS OS 2.0 set info in usbflags when the set asks for alternate enumeration.
MsOs20Flags and EnumerationRetryCount, written at PDO start.
Rereads the UXD record; UpdateRequired says whether the device id changes.
Replacement PnP id of a UXD reserved device, or an empty String. Always succeeds.
Telemetry values under the device's Ceip subkey.
BootPathSurpriseRemovalCount + 1.
This machine's dual role features for a dual role partner.
Tells UCX the WDM PDO of the device; call right after the child PDO was created.
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME: Argument1 and its length Argument2.
IOCTL_INTERNAL_USB_GET_BUS_INFO for the device: the 16 byte USB_BUS_NOTIFICATION at Argument1.
Registers the GUID_USB_WMI_NODE_INFO instance of a child PDO (not for hubs or composites).
Registers the boot device surprise removal event on an external, non hub boot PDO.
Fires the boot device surprise removal event, if one is registered.
Sends a synchronous IOCTL to the specified device object.
Publishes "<port>#<host>" for every bound port on the hub's PDO. QUIRK: with no bound port an older value is left in place.
Binds USB 3 ports to the host routers named by the USB4 DVSEC; an earlier ACPI mapping wins.
Waits on a PnP handshake event with no timeout, printing a watchdog line every minute so a stuck machine is visible in the debugger.
Copies up to Size bytes of a device property; a failed query leaves the field zero.
Only the controller name length is real; both bandwidth fields read 0.
The answer overlays a USB_HUB_NAME on TotalSize, so TotalSize comes back as the name length + 4.
Evaluates a method without arguments into Output.
Drops every MSI descriptor and keeps only lists that still offer a line interrupt.
Picks the list with the best MSI offer: MSI-X first, then the most messages.
Keeps message descriptors covering Wanted messages and removes the others.
Evaluates _DSM on the controller ACPI object with a buffer as Arg3; returns up to 8 result bytes, 0 on failure.
Lets UCX hook the controller device init. Call before WdfDeviceCreate.
Definition at line 571 of file usbdex.c.
| _IRQL_requires_max_ | ( | DISPATCH_LEVEL | ) |
IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION; the idle machine owns the IRP afterwards.
Records hub over current in the hub hardware key, once per devnode.
First selective suspend of the device; the registry write runs in a work item.
"USB device not recognized" popup for a port.
A hub was attached beyond the allowed tier depth.
The selected configuration draws more power than the port can give.
The controller ran out of bandwidth for the device; fired by the out of bandwidth timer.
Priority 1 to 3, forwarded to the HCD's EvtEndpointSetCharacteristic.
Tells apart devices that claim the same VID, PID and serial number.
Definition at line 658 of file usbdex.c.
|
static |
Definition at line 420 of file usbdex.c.
Referenced by UsbdexBuildSelectConfigUrb(), and UsbdexBuildSelectInterfaceUrb().
|
static |
Turns "\Driver\Name" into "Name\Parameters"; NULL for any other form.
Definition at line 221 of file usbdex.c.
Referenced by _IRQL_requires_().
|
static |
Definition at line 453 of file usbdex.c.
|
static |
Definition at line 511 of file usbdex.c.
|
static |
Definition at line 110 of file usbdex.c.
Referenced by UsbdexQueryInterface(), and UsbdexSendCapabilityRequest().
|
static |
Definition at line 359 of file usbdex.c.
Referenced by _IRQL_requires_max_(), and UsbdexFinishAllocation().
Definition at line 69 of file usbdex.c.
Referenced by _IRQL_requires_().
|
static |
| FORCEINLINE PUSBDEX_HANDLE_OBJECT UsbdexHandleObject | ( | _In_opt_ USBD_HANDLE | USBDHandle | ) |
Definition at line 53 of file usbdex.c.
Referenced by _IRQL_requires_max_().
|
static |
Definition at line 430 of file usbdex.c.
Referenced by UsbdexBuildSelectConfigUrb(), and UsbdexBuildSelectInterfaceUrb().
| FORCEINLINE BOOLEAN UsbdexIsUcxMode | ( | _In_ PUSBDEX_HANDLE_OBJECT | Handle | ) |
|
static |
Definition at line 551 of file usbdex.c.
|
static |
Definition at line 318 of file usbdex.c.
Referenced by _IRQL_requires_().
|
static |
Definition at line 137 of file usbdex.c.
Referenced by _IRQL_requires_(), and UsbdexProbeLegacyStack().
|
static |
Definition at line 254 of file usbdex.c.
Referenced by _IRQL_requires_().
|
static |
|
static |
|
static |
Definition at line 378 of file usbdex.c.
|
static |
|
static |
Definition at line 194 of file usbdex.c.
|
static |
Definition at line 45 of file usbdex.c.
Referenced by _IRQL_requires_(), UsbdexAllocatePoolUrb(), UsbdexBuildParametersPath(), UsbdexDetectPoolType(), and UsbdexReadVerifierSettings().
Definition at line 46 of file usbdex.c.
Referenced by UsbdexDetectPoolType().
|
static |
Definition at line 48 of file usbdex.c.
Referenced by UsbdexCallAndWait().
|
static |
Definition at line 49 of file usbdex.c.
Referenced by UsbdexReadVerifierSettings().