ReactOS 0.4.17-dev-1281-g065abb3
slotdev.cpp File Reference
#include "xhcidrv.h"
#include <acpiioct.h>
#include <drivers/usb3/hubucx.h>
#include <debug.h>
Include dependency graph for slotdev.cpp:

Go to the source code of this file.

Classes

struct  _XHCI_TUNNEL_DSM_WORK
 

Macros

#define NDEBUG
 
#define XHCI_USB_DSM_REVISION   0
 
#define XHCI_USB_DSM_TUNNEL_STATE   10
 
#define XHCI_USB_DSM_PORT_NATIVE   1
 
#define XHCI_USB_DSM_PORT_TUNNELED   2
 
#define XHCI_DEFAULT_CONTEXT_MASK   0x00000003
 
#define XHCI_ROUTE_TIER_MAX   15
 
#define XHCI_ROUTE_TIER_BITS   4
 

Typedefs

typedef struct _XHCI_TUNNEL_DSM_WORK XHCI_TUNNEL_DSM_WORK
 
typedef struct _XHCI_TUNNEL_DSM_WORK * PXHCI_TUNNEL_DSM_WORK
 

Enumerations

enum  : ULONG {
  XhciDeviceFatalSlotInUse = 0x1014 , XhciDeviceFatalAddressDefault = 0x1015 , XhciDeviceFatalEnableSlot = 0x1016 , XhciDeviceFatalDeconfigure = 0x1017 ,
  XhciDeviceFatalDisableSlot = 0x1018 , XhciDeviceFatalResetDevice = 0x1019
}
 
enum  : ULONG {
  XhciDeviceCheckSlotInUse = 0x00020000 , XhciDeviceCheckAddressDefault = 0x00040000 , XhciDeviceCheckDeconfigure = 0x00080000 , XhciDeviceCheckDisableSlot = 0x00100000 ,
  XhciDeviceCheckResetDevice = 0x00200000
}
 

Functions

 WDF_DECLARE_CONTEXT_TYPE_WITH_NAME (XhciUsbDevice, XhciGetUsbDeviceContext)
 
 WDF_DECLARE_CONTEXT_TYPE_WITH_NAME (XHCI_TUNNEL_DSM_WORK, XhciGetTunnelDsmWork)
 
static PVOID NTAPI XhciRequestPayload (_In_ WDFREQUEST Request)
 
 _IRQL_requires_ (PASSIVE_LEVEL) static ULONG64 NTAPI XhciEvaluateDsmValue(_In_ WDFDEVICE Device
 Sends a synchronous IOCTL to the specified device object.
 
_In_ const GUID _In_ ULONG _In_ ULONG _In_reads_bytes_opt_ (ArgumentLength) const VOID *Argument
 
 PAGED_CODE ()
 
 if (Input==NULL)
 
 ACPI_METHOD_SET_ARGUMENT_BUFFER (Next, Uuid, sizeof(*Uuid))
 
 ACPI_METHOD_SET_ARGUMENT_INTEGER (Next, Revision)
 
 ACPI_METHOD_SET_ARGUMENT_INTEGER (Next, Function)
 
 ACPI_METHOD_SET_ARGUMENT_BUFFER (Next, Argument, ArgumentLength)
 
RtlZeroMemory & Output (Output)
 
WDF_MEMORY_DESCRIPTOR_INIT_BUFFER & OutputDescriptor (Output)
 
 if (!NT_SUCCESS(Status))
 
else if (Output.Header.Signature !=ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE)
 
else if (Output.Header.Count !=0 &&Output.Header.Argument[0].DataLength !=0)
 
 ExFreePoolWithTag (Input, XHCI_TAG_CONTROLLER)
 
static BOOLEAN NTAPI XhciCommandSucceeded (_In_ const XhciCommand *Command)
 
static VOID NTAPI XhciEvtUsbDeviceCleanup (_In_ WDFOBJECT Object)
 
 _IRQL_requires_max_ (DISPATCH_LEVEL) VOID XhciUsbDevice
 
NTSTATUS NTAPI XhciEvtControllerUsbDeviceAdd (_In_ UCXCONTROLLER UcxController, _In_ PUCXUSBDEVICE_INFO UcxUsbDeviceInfo, _In_ PUCXUSBDEVICE_INIT UsbDeviceInit)
 
VOID NTAPI XhciEvtUsbDeviceEndpointsConfigure (_In_ UCXCONTROLLER UcxController, _In_ WDFREQUEST Request)
 
VOID NTAPI XhciEvtUsbDeviceEnable (_In_ UCXCONTROLLER UcxController, _In_ WDFREQUEST Request)
 
VOID NTAPI XhciEvtUsbDeviceDisable (_In_ UCXCONTROLLER UcxController, _In_ WDFREQUEST Request)
 
VOID NTAPI XhciEvtUsbDeviceReset (_In_ UCXCONTROLLER UcxController, _In_ WDFREQUEST Request)
 
VOID NTAPI XhciEvtUsbDeviceAddress (_In_ UCXCONTROLLER UcxController, _In_ WDFREQUEST Request)
 
VOID NTAPI XhciEvtUsbDeviceUpdate (_In_ UCXCONTROLLER UcxController, _In_ WDFREQUEST Request)
 
VOID NTAPI XhciEvtUsbDeviceHubInfo (_In_ UCXCONTROLLER UcxController, _In_ WDFREQUEST Request)
 

Variables

static const GUID XhciGuidUsbDsm
 
static EVT_WDF_OBJECT_CONTEXT_CLEANUP XhciEvtUsbDeviceCleanup
 
_In_ const GUID * Uuid
 
_In_ const GUID _In_ ULONG Revision
 
_In_ const GUID _In_ ULONG _In_ ULONG Function
 
_In_ const GUID _In_ ULONG _In_ ULONG _In_ USHORT ArgumentLength
 
PACPI_EVAL_INPUT_BUFFER_COMPLEX Input = (PACPI_EVAL_INPUT_BUFFER_COMPLEX)ExAllocatePoolZero(PagedPool, Size, XHCI_TAG_CONTROLLER)
 
PACPI_METHOD_ARGUMENT Next = &Input->Argument[0]
 
WDF_MEMORY_DESCRIPTOR InputDescriptor
 
WDF_MEMORY_DESCRIPTOR OutputDescriptor
 
ULONG64 Value = 0
 
ULONG Length
 
ULONG Size
 
NTSTATUS Status
 
Input Signature = ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE
 
Input MethodNameAsUlong = 'MSD_'
 
Input ArgumentCount = 4
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 12 of file slotdev.cpp.

◆ XHCI_DEFAULT_CONTEXT_MASK

#define XHCI_DEFAULT_CONTEXT_MASK   0x00000003

Slot context bit 0 plus the default control endpoint at DCI 1.

Definition at line 57 of file slotdev.cpp.

◆ XHCI_ROUTE_TIER_BITS

#define XHCI_ROUTE_TIER_BITS   4

Definition at line 60 of file slotdev.cpp.

◆ XHCI_ROUTE_TIER_MAX

#define XHCI_ROUTE_TIER_MAX   15

Definition at line 59 of file slotdev.cpp.

◆ XHCI_USB_DSM_PORT_NATIVE

#define XHCI_USB_DSM_PORT_NATIVE   1

Definition at line 23 of file slotdev.cpp.

◆ XHCI_USB_DSM_PORT_TUNNELED

#define XHCI_USB_DSM_PORT_TUNNELED   2

Definition at line 24 of file slotdev.cpp.

◆ XHCI_USB_DSM_REVISION

#define XHCI_USB_DSM_REVISION   0

Definition at line 21 of file slotdev.cpp.

◆ XHCI_USB_DSM_TUNNEL_STATE

#define XHCI_USB_DSM_TUNNEL_STATE   10

Definition at line 22 of file slotdev.cpp.

Typedef Documentation

◆ PXHCI_TUNNEL_DSM_WORK

◆ XHCI_TUNNEL_DSM_WORK

Context of the work item that asks ACPI for a root port's tunnel state.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum : ULONG
Enumerator
XhciDeviceFatalSlotInUse 
XhciDeviceFatalAddressDefault 
XhciDeviceFatalEnableSlot 
XhciDeviceFatalDeconfigure 
XhciDeviceFatalDisableSlot 
XhciDeviceFatalResetDevice 

Definition at line 36 of file slotdev.cpp.

37{
44};
@ XhciDeviceFatalAddressDefault
Definition: slotdev.cpp:39
@ XhciDeviceFatalDisableSlot
Definition: slotdev.cpp:42
@ XhciDeviceFatalDeconfigure
Definition: slotdev.cpp:41
@ XhciDeviceFatalSlotInUse
Definition: slotdev.cpp:38
@ XhciDeviceFatalEnableSlot
Definition: slotdev.cpp:40
@ XhciDeviceFatalResetDevice
Definition: slotdev.cpp:43

◆ anonymous enum

anonymous enum : ULONG
Enumerator
XhciDeviceCheckSlotInUse 
XhciDeviceCheckAddressDefault 
XhciDeviceCheckDeconfigure 
XhciDeviceCheckDisableSlot 
XhciDeviceCheckResetDevice 

Definition at line 47 of file slotdev.cpp.

48{
49 XhciDeviceCheckSlotInUse = 0x00020000,
51 XhciDeviceCheckDeconfigure = 0x00080000,
52 XhciDeviceCheckDisableSlot = 0x00100000,
54};
@ XhciDeviceCheckAddressDefault
Definition: slotdev.cpp:50
@ XhciDeviceCheckDisableSlot
Definition: slotdev.cpp:52
@ XhciDeviceCheckDeconfigure
Definition: slotdev.cpp:51
@ XhciDeviceCheckResetDevice
Definition: slotdev.cpp:53
@ XhciDeviceCheckSlotInUse
Definition: slotdev.cpp:49

Function Documentation

◆ _In_reads_bytes_opt_()

_In_ const GUID _In_ ULONG _In_ ULONG _In_reads_bytes_opt_ ( ArgumentLength  ) const

◆ _IRQL_requires_()

_IRQL_requires_ ( PASSIVE_LEVEL  )

Sends a synchronous IOCTL to the specified device object.

Evaluates _DSM on the controller ACPI object with a buffer as Arg3; returns up to 8 result bytes, 0 on failure.

Definition at line 184 of file slotdev.cpp.

190{
191 PAGED_CODE();
192
193 m_Controller = Controller;
194 m_Handle = UsbDevice;
195 RtlCopyMemory(&m_Info, Info, sizeof(m_Info));
196 m_ContextSize = Controller->m_Registers.ContextSize();
197 KeInitializeSpinLock(&m_ReconfigureLock);
198
199 /* Allocated once so that enabling after a controller reset never needs memory */
200 m_Output = Controller->m_Buffers.Acquire(m_ContextSize * XHCI_DEVICE_CONTEXT_COUNT);
201 if (m_Output == NULL)
202 {
203 DPRINT1("No output device context for USB device %p\n", UsbDevice);
205 }
206
207 m_Input = Controller->m_Buffers.Acquire(m_ContextSize * XHCI_INPUT_CONTEXT_COUNT);
208 if (m_Input == NULL)
209 {
210 DPRINT1("No input context for USB device %p\n", UsbDevice);
212 }
213
214 DPRINT("USB device %p: speed %d, root port %lu, depth %lu, TT hub %p\n",
215 UsbDevice, m_Info.DeviceSpeed, m_Info.PortPath.PortPath[0],
216 m_Info.PortPath.PortPathDepth, m_Info.TtHub);
217 return STATUS_SUCCESS;
218}
#define DPRINT1
Definition: precomp.h:8
#define NULL
Definition: types.h:112
#define KeInitializeSpinLock(sl)
Definition: env_spec_w32.h:604
_In_ UCXUSBDEVICE UsbDevice
Definition: hostctl.h:31
#define STATUS_SUCCESS
Definition: shellext.h:65
PAGED_CODE()
#define DPRINT
Definition: sndvol32.h:73
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
#define XHCI_DEVICE_CONTEXT_COUNT
Definition: xhcihw.h:449
#define XHCI_INPUT_CONTEXT_COUNT
Definition: xhcihw.h:450

◆ _IRQL_requires_max_()

_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.

Definition at line 391 of file slotdev.cpp.

396{
397 ULONG SlotId = m_SlotId;
398
399 if (SlotId == 0)
400 {
401 DPRINT("Doorbell for DCI %lu of device %p without a slot\n", Dci, this);
402 return;
403 }
404
405 /* DB Target in bits 7:0, DB Stream ID in bits 31:16 (xHCI 5.6) */
406 m_Controller->m_Registers.RingDoorbell(SlotId, (Dci & 0xFF) | (StreamId << 16));
407}
uint32_t ULONG
Definition: typedefs.h:59

◆ ACPI_METHOD_SET_ARGUMENT_BUFFER() [1/2]

ACPI_METHOD_SET_ARGUMENT_BUFFER ( Next  ,
Argument  ,
ArgumentLength   
)

◆ ACPI_METHOD_SET_ARGUMENT_BUFFER() [2/2]

ACPI_METHOD_SET_ARGUMENT_BUFFER ( Next  ,
Uuid  ,
sizeof *  Uuid 
)

◆ ACPI_METHOD_SET_ARGUMENT_INTEGER() [1/2]

ACPI_METHOD_SET_ARGUMENT_INTEGER ( Next  ,
Function   
)

◆ ACPI_METHOD_SET_ARGUMENT_INTEGER() [2/2]

ACPI_METHOD_SET_ARGUMENT_INTEGER ( Next  ,
Revision   
)

◆ ExFreePoolWithTag()

ExFreePoolWithTag ( Input  ,
XHCI_TAG_CONTROLLER   
)

◆ if() [1/4]

if ( !  NT_SUCCESSStatus)

Definition at line 143 of file slotdev.cpp.

144 {
145 DPRINT1("_DSM %08lx function %lu failed 0x%lx\n", Uuid->Data1, Function, Status);
146 }
Status
Definition: gdiplustypes.h:24
_In_ const GUID _In_ ULONG _In_ ULONG Function
Definition: slotdev.cpp:86
_In_ const GUID * Uuid
Definition: slotdev.cpp:84

◆ if() [2/4]

if ( Input  = = NULL)

Definition at line 112 of file slotdev.cpp.

113 {
114 DPRINT1("No memory for _DSM function %lu\n", Function);
115 return 0;
116 }

◆ if() [3/4]

Definition at line 151 of file slotdev.cpp.

152 {
153 /* QUIRK: the result type is not checked, any 1 to 8 byte value decodes */
154 Length = min(Output.Header.Argument[0].DataLength, sizeof(Value));
158 Length);
159 }
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG _In_ PVOID Argument
Definition: dispmprt.h:1288
#define min(a, b)
Definition: monoChain.cc:55
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
PUSB_ROOT_HUB_NAME Output
Definition: userreq.cpp:699
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413

◆ if() [4/4]

Definition at line 147 of file slotdev.cpp.

148 {
149 DPRINT1("_DSM function %lu returned signature 0x%08lx\n", Function, Output.Header.Signature);
150 }

◆ Output()

RtlZeroMemory & Output ( Output  )

◆ OutputDescriptor()

WDF_MEMORY_DESCRIPTOR_INIT_BUFFER & OutputDescriptor ( Output  )

◆ PAGED_CODE()

PAGED_CODE ( )

◆ WDF_DECLARE_CONTEXT_TYPE_WITH_NAME() [1/2]

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME ( XHCI_TUNNEL_DSM_WORK  ,
XhciGetTunnelDsmWork   
)

◆ WDF_DECLARE_CONTEXT_TYPE_WITH_NAME() [2/2]

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME ( XhciUsbDevice  ,
XhciGetUsbDeviceContext   
)

◆ XhciCommandSucceeded()

static BOOLEAN NTAPI XhciCommandSucceeded ( _In_ const XhciCommand *  Command)
static

Definition at line 168 of file slotdev.cpp.

170{
171 return Command->Status != STATUS_NO_SUCH_DEVICE &&
173}
Definition: shell.h:41
#define STATUS_NO_SUCH_DEVICE
Definition: udferr_usr.h:136

Referenced by XhciUsbDevice::ReconfigureCommandDone().

◆ XhciEvtControllerUsbDeviceAdd()

NTSTATUS NTAPI XhciEvtControllerUsbDeviceAdd ( _In_ UCXCONTROLLER  UcxController,
_In_ PUCXUSBDEVICE_INFO  UcxUsbDeviceInfo,
_In_ PUCXUSBDEVICE_INIT  UsbDeviceInit 
)

Definition at line 1793 of file slotdev.cpp.

1797{
1800 UCXUSBDEVICE UsbDevice;
1802
1803 PAGED_CODE();
1804
1815
1816 /* Suspend, resume and characteristics are not offered, so the structure ends before them */
1817 Callbacks.Size = FIELD_OFFSET(UCX_USBDEVICE_EVENT_CALLBACKS, EvtUsbDeviceSuspend);
1819
1821 Attributes.EvtCleanupCallback = XhciEvtUsbDeviceCleanup;
1822
1823 Status = UcxUsbDeviceCreate(UcxController, &UsbDeviceInit, &Attributes, &UsbDevice);
1824 if (!NT_SUCCESS(Status))
1825 {
1826 DPRINT1("UcxUsbDeviceCreate failed 0x%lx\n", Status);
1827 return Status;
1828 }
1829
1830 /* On failure UCX deletes the object and the cleanup callback frees what was acquired */
1832 UsbDevice,
1834}
LONG NTSTATUS
Definition: precomp.h:26
const struct winhelp_callbacks Callbacks
Definition: callback.c:161
static XhciController * FromUcx(_In_ UCXCONTROLLER UcxController)
Definition: hc.cpp:176
static XhciUsbDevice * FromUcx(_In_ UCXUSBDEVICE UsbDevice)
Definition: slotdev.cpp:178
_In_ ULONG Attributes
Definition: dispmprt.h:1077
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
NTSTATUS Status
Definition: slotdev.cpp:102
static EVT_WDF_OBJECT_CONTEXT_CLEANUP XhciEvtUsbDeviceCleanup
Definition: slotdev.cpp:62
_In_ PUCXUSBDEVICE_INFO UcxUsbDeviceInfo
_In_ PUCXUSBDEVICE_INFO _In_ PUCXUSBDEVICE_INIT UsbDeviceInit
FORCEINLINE VOID NTAPI UcxUsbDeviceInitSetEventCallbacks(_Inout_ PUCXUSBDEVICE_INIT UsbDeviceInit, _In_ PUCX_USBDEVICE_EVENT_CALLBACKS EventCallbacks)
Definition: ucxusbdevice.h:450
FORCEINLINE VOID NTAPI UCX_USBDEVICE_EVENT_CALLBACKS_INIT(_Out_ PUCX_USBDEVICE_EVENT_CALLBACKS Callbacks, _In_ PFN_UCX_USBDEVICE_ENDPOINTS_CONFIGURE EvtUsbDeviceEndpointsConfigure, _In_ PFN_UCX_USBDEVICE_ENABLE EvtUsbDeviceEnable, _In_ PFN_UCX_USBDEVICE_DISABLE EvtUsbDeviceDisable, _In_ PFN_UCX_USBDEVICE_RESET EvtUsbDeviceReset, _In_ PFN_UCX_USBDEVICE_ADDRESS EvtUsbDeviceAddress, _In_ PFN_UCX_USBDEVICE_UPDATE EvtUsbDeviceUpdate, _In_ PFN_UCX_USBDEVICE_HUB_INFO EvtUsbDeviceHubInfo, _In_ PFN_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD EvtUsbDeviceDefaultEndpointAdd, _In_ PFN_UCX_USBDEVICE_ENDPOINT_ADD EvtUsbDeviceEndpointAdd)
Definition: ucxusbdevice.h:364
#define WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(_attributes, _contexttype)
Definition: wdfobject.h:170
EVT_UCX_USBDEVICE_ADDRESS XhciEvtUsbDeviceAddress
Definition: xhcidrv.h:49
EVT_UCX_USBDEVICE_DISABLE XhciEvtUsbDeviceDisable
Definition: xhcidrv.h:47
EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD XhciEvtUsbDeviceDefaultEndpointAdd
Definition: xhcidrv.h:52
EVT_UCX_USBDEVICE_ENDPOINT_ADD XhciEvtUsbDeviceEndpointAdd
Definition: xhcidrv.h:53
EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE XhciEvtUsbDeviceEndpointsConfigure
Definition: xhcidrv.h:45
EVT_UCX_USBDEVICE_ENABLE XhciEvtUsbDeviceEnable
Definition: xhcidrv.h:46
EVT_UCX_USBDEVICE_RESET XhciEvtUsbDeviceReset
Definition: xhcidrv.h:48
EVT_UCX_USBDEVICE_HUB_INFO XhciEvtUsbDeviceHubInfo
Definition: xhcidrv.h:51
EVT_UCX_USBDEVICE_UPDATE XhciEvtUsbDeviceUpdate
Definition: xhcidrv.h:50

◆ XhciEvtUsbDeviceAddress()

VOID NTAPI XhciEvtUsbDeviceAddress ( _In_ UCXCONTROLLER  UcxController,
_In_ WDFREQUEST  Request 
)

Definition at line 1886 of file slotdev.cpp.

1889{
1891
1893 XhciUsbDevice::FromUcx(Payload->Header.UsbDevice)->Address(Request, Payload);
1894}
VOID Address(_In_ WDFREQUEST Request, _Inout_ PUSBDEVICE_ADDRESS Payload)
Definition: slotdev.cpp:839
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
static PVOID NTAPI XhciRequestPayload(_In_ WDFREQUEST Request)
Definition: slotdev.cpp:67
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
struct _USBDEVICE_ADDRESS * PUSBDEVICE_ADDRESS

◆ XhciEvtUsbDeviceCleanup()

static VOID NTAPI XhciEvtUsbDeviceCleanup ( _In_ WDFOBJECT  Object)
static

Definition at line 252 of file slotdev.cpp.

254{
255 XhciGetUsbDeviceContext(Object)->Cleanup(Object);
256}
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object

◆ XhciEvtUsbDeviceDisable()

VOID NTAPI XhciEvtUsbDeviceDisable ( _In_ UCXCONTROLLER  UcxController,
_In_ WDFREQUEST  Request 
)

Definition at line 1862 of file slotdev.cpp.

1865{
1867
1869 XhciUsbDevice::FromUcx(Payload->Header.UsbDevice)->Disable(Request);
1870}
VOID Disable(_In_ WDFREQUEST Request)
Definition: slotdev.cpp:1421
struct _USBDEVICE_DISABLE * PUSBDEVICE_DISABLE

◆ XhciEvtUsbDeviceEnable()

VOID NTAPI XhciEvtUsbDeviceEnable ( _In_ UCXCONTROLLER  UcxController,
_In_ WDFREQUEST  Request 
)

Definition at line 1850 of file slotdev.cpp.

1853{
1855
1857 XhciUsbDevice::FromUcx(Payload->Header.UsbDevice)->Enable(Request, Payload);
1858}
VOID Enable(_In_ WDFREQUEST Request, _Inout_ PUSBDEVICE_ENABLE Payload)
Definition: slotdev.cpp:731
struct _USBDEVICE_ENABLE * PUSBDEVICE_ENABLE

◆ XhciEvtUsbDeviceEndpointsConfigure()

VOID NTAPI XhciEvtUsbDeviceEndpointsConfigure ( _In_ UCXCONTROLLER  UcxController,
_In_ WDFREQUEST  Request 
)

Definition at line 1838 of file slotdev.cpp.

1841{
1843
1845 XhciUsbDevice::FromUcx(Payload->Header.UsbDevice)->EndpointsConfigure(Request, Payload);
1846}
VOID EndpointsConfigure(_In_ WDFREQUEST Request, _Inout_ PENDPOINTS_CONFIGURE Payload)
Definition: slotdev.cpp:1194
struct _ENDPOINTS_CONFIGURE * PENDPOINTS_CONFIGURE

◆ XhciEvtUsbDeviceHubInfo()

VOID NTAPI XhciEvtUsbDeviceHubInfo ( _In_ UCXCONTROLLER  UcxController,
_In_ WDFREQUEST  Request 
)

Definition at line 1910 of file slotdev.cpp.

1913{
1915
1917 XhciUsbDevice::FromUcx(Payload->Header.UsbDevice)->HubInfo(Request, Payload);
1918}
VOID HubInfo(_In_ WDFREQUEST Request, _In_ const USBDEVICE_HUB_INFO *Payload)
Definition: slotdev.cpp:1142
struct _USBDEVICE_HUB_INFO * PUSBDEVICE_HUB_INFO

◆ XhciEvtUsbDeviceReset()

VOID NTAPI XhciEvtUsbDeviceReset ( _In_ UCXCONTROLLER  UcxController,
_In_ WDFREQUEST  Request 
)

Definition at line 1874 of file slotdev.cpp.

1877{
1879
1881 XhciUsbDevice::FromUcx(Payload->Header.UsbDevice)->Reset(Request);
1882}
VOID Reset(_In_ WDFREQUEST Request)
Definition: slotdev.cpp:1493
struct _USBDEVICE_RESET * PUSBDEVICE_RESET

◆ XhciEvtUsbDeviceUpdate()

VOID NTAPI XhciEvtUsbDeviceUpdate ( _In_ UCXCONTROLLER  UcxController,
_In_ WDFREQUEST  Request 
)

Definition at line 1898 of file slotdev.cpp.

1901{
1903
1905 XhciUsbDevice::FromUcx(Payload->Header.UsbDevice)->Update(Request, Payload);
1906}
VOID Update(_In_ WDFREQUEST Request, _Inout_ PUSBDEVICE_UPDATE Payload)
Definition: slotdev.cpp:1059
struct _USBDEVICE_UPDATE * PUSBDEVICE_UPDATE

◆ XhciRequestPayload()

static PVOID NTAPI XhciRequestPayload ( _In_ WDFREQUEST  Request)
static

Definition at line 67 of file slotdev.cpp.

69{
71
73 WdfRequestGetParameters(Request, &Parameters);
74 return Parameters.Parameters.Others.Arg1;
75}
_In_ HANDLE _In_ CONST PDXGKMDT_OPM_GET_INFO_PARAMETERS Parameters
Definition: dispmprt.h:321
FORCEINLINE VOID WDF_REQUEST_PARAMETERS_INIT(_Out_ PWDF_REQUEST_PARAMETERS Parameters)
Definition: wdfrequest.h:211

Referenced by XhciEvtUsbDeviceAddress(), XhciEvtUsbDeviceDisable(), XhciEvtUsbDeviceEnable(), XhciEvtUsbDeviceEndpointsConfigure(), XhciEvtUsbDeviceHubInfo(), XhciEvtUsbDeviceReset(), and XhciEvtUsbDeviceUpdate().

Variable Documentation

◆ ArgumentCount

◆ ArgumentLength

◆ Function

Definition at line 86 of file slotdev.cpp.

Referenced by if().

◆ Input

◆ InputDescriptor

Definition at line 97 of file slotdev.cpp.

◆ Length

Definition at line 100 of file slotdev.cpp.

◆ MethodNameAsUlong

Input MethodNameAsUlong = 'MSD_'

Definition at line 119 of file slotdev.cpp.

◆ Next

Next = &Input->Argument[0]

Definition at line 96 of file slotdev.cpp.

Referenced by __ALIGNED(), FxDmaTransactionBase::_CalculateRequiredMapRegisters(), _Struct_size_bytes_(), AcpiEvDeleteGpeHandlers(), AcpiExReleaseAllMutexes(), AcpiGetLoaderAcpiBiosNode(), AcpiHwDeletePciList(), AcpiPsCompleteThisOp(), AcpiPsDeleteParseTree(), AcpiPsGetDepthNext(), AcpiUtDeleteAddressLists(), AddDisplayDevice(), ArbpSeedRangeList(), AVrfInitializeVerifier(), DeviceMachine::CallRequest(), DeviceMachine::CallWait(), CloneAddrInfo(), CmpDereferenceNameControlBlockWithLock(), co_IntUpdateWindows(), ATL::CAtlList< E, ETraits >::CreateNode(), DECLARE_INTERFACE_(), DeviceMachine::Delay(), ATL::CAtlPlex::Destroy(), DosAllocateMemory(), DosLoadDriver(), EnumVARIANT_Next(), ExFreeToZone(), ExSwapinWorkerThreads(), Ext2bhReaperThread(), Ext2CleanupAllMcbs(), Ext2DestroyMdl(), Ext2FcbReaperThread(), Ext2FlushFiles(), Ext2InvalidateVolumes(), Ext2IsHandleCountZero(), Ext2McbReaperThread(), Ext2MountVolume(), Ext2PurgeVolume(), Ext2QueryUnusedFcb(), Ext2ShutDown(), XhciRootHub::FillSpeeds(), find_next_pci_vendor_capability(), find_pci_vendor_capabilities(), XhciRegisters::FindExtendedCapability(), XhciUsbDevice::FinishReconfigure(), FreeMemoryManagement(), FreeRedirection(), FrLdrHeapRemoveFreeList(), get_mmioFromProfile(), GetEnhancedVar(), GetNextListEntry(), GetNextString(), GetPossibleSettings(), GetTimeZoneEntryByIndex(), HalpAcpiFindRsdtPhase0(), HubDescFindInterface(), HubDescNextMsOs20(), HubSha1Compress(), InfpCacheFreeLine(), InfpCacheFreeSection(), InfpFreeLine(), InfpFreeSection(), InitializeModeTable(), XhciBulkRing::InsertLink(), XhciIsochRing::InsertLink(), IntSendChildNCPaint(), IopArbPortGetNextAlias(), KdbGetHistoryEntry(), KeRegisterNmiCallback(), LdrpCheckForLoadedDllHandle(), LdrpNameToOrdinal(), LdrpRunShimEngineInitRoutine(), NBFlushPacketQueue(), NBSendPackets(), NdrFullPointerXlatFree(), CZipEnumerator::NextUnique(), NtSetInformationProcess(), XhciUsbDevice::OnDisableSlotDone(), PciBuildRequirementsList(), PortCompletionDpc(), DeviceMachine::PrepareConfigLists(), psh_glyph_compute_extrema(), QueryDNS(), DeviceMachine::Request(), RtlDeleteOwnersRanges(), RtlGetNextRange(), RtlpDphCoalesceFreeIntoAvailable(), RtlpDphFreeDelayedBlocksFromHeap(), RtlpDphRemoveFromFreeList(), RtlpDphTakeNodeFromUnusedList(), RtlpPageHeapDestroy(), RtlpReleaseWaitBlockLockExclusive(), RtlpReleaseWaitBlockLockLastShared(), RtlpRemoveHeapFromProcessList(), run_tests(), SettingsPageProc(), CEnumMergedFolder::Skip(), HubMachine::StartDromOrSkip(), XhciUsbDevice::SubmitDisableSlot(), SYSLINK_GetNextLink(), test_pack_FULL_PTR_TO_REFID_ELEMENT(), test_pack_INTERNET_BUFFERSA(), test_pack_INTERNET_BUFFERSW(), test_pack_SINGLE_LIST_ENTRY(), TestXListFunctional(), DeviceMachine::Then(), USBH_OpenConfiguration(), USBPORT_FlushPendingTransfers(), UserUpdateWindows(), VGADDI_FreeSavedScreenBits(), DeviceMachine::Wait(), and XhciControlRing::WriteTd().

◆ OutputDescriptor

WDF_MEMORY_DESCRIPTOR OutputDescriptor

Definition at line 98 of file slotdev.cpp.

◆ Revision

◆ Signature

Definition at line 118 of file slotdev.cpp.

◆ Size

Initial value:
#define ACPI_METHOD_ARGUMENT_LENGTH(DataLength)
Definition: acpiioct.h:153
_In_ const GUID _In_ ULONG _In_ ULONG _In_ USHORT ArgumentLength
Definition: slotdev.cpp:89

Definition at line 101 of file slotdev.cpp.

◆ Status

Initial value:
= WdfIoTargetSendIoctlSynchronously(WdfDeviceGetIoTarget(Device),
#define IOCTL_ACPI_EVAL_METHOD
Definition: acpiioct.h:194
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
Definition: hubucx.h:258
WDF_MEMORY_DESCRIPTOR InputDescriptor
Definition: slotdev.cpp:97
WDF_MEMORY_DESCRIPTOR OutputDescriptor
Definition: slotdev.cpp:98

Definition at line 102 of file slotdev.cpp.

Referenced by XhciEvtControllerUsbDeviceAdd().

◆ Uuid

◆ Value

Definition at line 99 of file slotdev.cpp.

◆ XhciEvtUsbDeviceCleanup

EVT_WDF_OBJECT_CONTEXT_CLEANUP XhciEvtUsbDeviceCleanup
static

Definition at line 62 of file slotdev.cpp.

Referenced by XhciEvtControllerUsbDeviceAdd().

◆ XhciGuidUsbDsm

const GUID XhciGuidUsbDsm
static
Initial value:
=
{ 0xce2ee385, 0x00e6, 0x48cb, { 0x9f, 0x05, 0x2e, 0xdb, 0x92, 0x7c, 0x48, 0x99 } }

Definition at line 18 of file slotdev.cpp.