#include "ucx01000.h"
#include <debug.h>
Go to the source code of this file.
|
| VOID NTAPI | UcxEvtRootHubHeldTransferCancel (_In_ WDFREQUEST Request) |
| |
| VOID NTAPI | UcxEvtRootHubInterruptTransfer (_In_ WDFQUEUE Queue, _In_ WDFREQUEST Request, _In_ size_t OutputBufferLength, _In_ size_t InputBufferLength, _In_ ULONG IoControlCode) |
| |
| static BOOLEAN NTAPI | UcxClassifyRootHubRequest (_In_ const UCX_ROOTHUB_CONFIG *Config, _In_ const USB_DEFAULT_PIPE_SETUP_PACKET *Setup, _Out_ PFN_UCX_ROOTHUB_CONTROL_URB *Callback) |
| |
| VOID NTAPI | UcxEvtRootHubControlTransfer (_In_ WDFQUEUE Queue, _In_ WDFREQUEST Request, _In_ size_t OutputBufferLength, _In_ size_t InputBufferLength, _In_ ULONG IoControlCode) |
| |
◆ NDEBUG
◆ UCX_DIRECTION_IN
◆ UCX_RECIPIENT
◆ UCX_RECIPIENT_DEVICE
| #define UCX_RECIPIENT_DEVICE 0 |
◆ UCX_RECIPIENT_OTHER
◆ UCX_REQUEST_TYPE
◆ UCX_TYPE_CLASS
◆ UCX_TYPE_STANDARD
◆ UcxClassifyRootHubRequest()
TRUE for the seven hub requests with their own callback slot, even if empty.
Definition at line 376 of file rhub.cpp.
380{
386
388
390 {
391 switch (
Setup->bRequest)
392 {
395 break;
397 :
Config->EvtRootHubClearPortFeature;
399
402 break;
404 :
Config->EvtRootHubGetPortStatus;
406
409 break;
411 :
Config->EvtRootHubSetPortFeature;
413 }
414 }
415
416
419 {
422 }
423
425}
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE ACPI_HANDLE ACPI_HANDLE *OutHandle ACPI_HANDLE *OutHandle void *Context void *Context ACPI_EVENT_HANDLER Handler UINT32 UINT32 ACPI_GPE_HANDLER void *Context UINT32 ACPI_NOTIFY_HANDLER void *Context ACPI_ADR_SPACE_TYPE ACPI_ADR_SPACE_HANDLER ACPI_ADR_SPACE_SETUP Setup
_In_ ULONG _In_ ULONG _In_opt_ DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK Callback
#define UCX_RECIPIENT(Type)
#define UCX_RECIPIENT_DEVICE
#define UCX_TYPE_STANDARD
#define UCX_REQUEST_TYPE(Type)
#define UCX_DIRECTION_IN(Type)
#define UCX_RECIPIENT_OTHER
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG Config
#define USB_REQUEST_GET_STATUS
#define USB_REQUEST_SET_FEATURE
#define USB_REQUEST_CLEAR_FEATURE
#define USB_REQUEST_GET_PORT_ERR_COUNT
Referenced by UcxEvtRootHubControlTransfer().
◆ UcxEvtRootHubControlTransfer()
Definition at line 429 of file rhub.cpp.
435{
440
444
445 if (!
RootHub->m_Controller->BlockReset())
446 {
449 return;
450 }
451
452
454
455
458
461
462 RootHub->m_Controller->UnblockReset();
463
465 {
466 DPRINT1(
"Root hub %p has no callback for request 0x%x type 0x%x\n",
470 }
471}
#define STATUS_NOT_SUPPORTED
#define UNREFERENCED_PARAMETER(P)
static BOOLEAN NTAPI UcxClassifyRootHubRequest(_In_ const UCX_ROOTHUB_CONFIG *Config, _In_ const USB_DEFAULT_PIPE_SETUP_PACKET *Setup, _Out_ PFN_UCX_ROOTHUB_CONTROL_URB *Callback)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ PGUID _In_ ULONG OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
EVT_UCX_ROOTHUB_CONTROL_URB * PFN_UCX_ROOTHUB_CONTROL_URB
_Must_inspect_result_ _In_ UCXCONTROLLER _In_ PUCX_ROOTHUB_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXROOTHUB * RootHub
#define STATUS_NO_SUCH_DEVICE
struct _USB_DEFAULT_PIPE_SETUP_PACKET * PUSB_DEFAULT_PIPE_SETUP_PACKET
_In_opt_ PUSB_CONFIGURATION_DESCRIPTOR _Inout_ PUSBD_INTERFACE_LIST_ENTRY _Outptr_ PURB * Urb
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
◆ UcxEvtRootHubHeldTransferCancel()
| VOID NTAPI UcxEvtRootHubHeldTransferCancel |
( |
_In_ WDFREQUEST |
Request | ) |
|
Definition at line 281 of file rhub.cpp.
283{
285
286 {
288
291 }
292
293 DPRINT(
"Held status change transfer %p canceled\n",
Request);
295}
◆ UcxEvtRootHubInterruptTransfer()
Definition at line 300 of file rhub.cpp.
306{
312
316
318
319 {
321
323
325 State->PortChangeGeneration ==
State->PortChangeGenerationProcessed;
326
328 {
329 State->PortChangeGenerationProcessed =
State->PortChangeGeneration;
330 }
331 else
332 {
336 }
337 }
338
340 {
341 DPRINT1(
"Root hub %p could not hold status change transfer %p 0x%lx\n",
RootHub,
Request, HoldStatus);
342 WdfRequestComplete(
Request, HoldStatus);
343 return;
344 }
345
346 if (Hold)
347 return;
348
349 if (!
RootHub->m_Controller->BlockReset())
350 {
353 return;
354 }
355
357 RootHub->m_Controller->UnblockReset();
358}
#define NT_SUCCESS(StatCode)
#define UCXHUB_URB_FLAG_PEND_INTERRUPT_TX
EVT_WDF_REQUEST_CANCEL UcxEvtRootHubHeldTransferCancel
#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER