ReactOS 0.4.17-dev-1281-g065abb3
xhcientry.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS xHCI Host Controller Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Driver entry and unload
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#include <ntifs.h>
9#include <ndk/exfuncs.h>
10#include "xhcidrv.h"
11
12#define NDEBUG
13#include <debug.h>
14
15#define XHCI_CODE_INTEGRITY_TESTSIGN 0x00000002
16
18{
22
24
25static
26CODE_SEG("INIT")
30{
33
34 Info.Length = sizeof(Info);
35 Info.CodeIntegrityOptions = 0;
36
38 if (!NT_SUCCESS(Status))
39 return FALSE;
40
41 return (Info.CodeIntegrityOptions & XHCI_CODE_INTEGRITY_TESTSIGN) != 0;
42}
43
44extern "C"
45CODE_SEG("INIT")
51{
55
57
58 /* Resolved at run time so older kernels without the export still load us */
59 RtlInitUnicodeString(&RoutineName, L"KseQueryDeviceFlags");
61
63 Config.EvtDriverUnload = XhciEvtDriverUnload;
64 Config.DriverPoolTag = XHCI_TAG_DRIVER;
65
68 {
69 DPRINT1("WdfDriverCreate failed 0x%lx\n", Status);
70 return Status;
71 }
72
75 DPRINT1("Test signing is on, test hooks enabled\n");
76
77 Status = UcxStubBindClass();
78 if (!NT_SUCCESS(Status))
79 DPRINT1("Binding to ucx01000 failed 0x%lx\n", Status);
80
81 return Status;
82}
83
84VOID
87 _In_ WDFDRIVER Driver)
88{
90
91 UcxStubUnbindClass();
92}
#define CODE_SEG(...)
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
#define DPRINT1
Definition: precomp.h:8
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
DRIVER_INITIALIZE DriverEntry
Definition: condrv.c:21
#define L(x)
Definition: resources.c:13
NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
Status
Definition: gdiplustypes.h:24
@ SystemCodeIntegrityInformation
Definition: extypes.h:327
#define _In_
Definition: no_sal2.h:158
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
PDRIVER_OBJECT DriverObject
Definition: hc.h:291
PVOID QueryDeviceFlags
Definition: hc.h:292
BOOLEAN TestMode
Definition: hc.h:293
PVOID NTAPI MmGetSystemRoutineAddress(IN PUNICODE_STRING SystemRoutineName)
Definition: sysldr.c:3672
#define NTAPI
Definition: typedefs.h:36
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG Config
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
_Must_inspect_result_ _In_ WDFDRIVER Driver
Definition: wdfcontrol.h:83
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:215
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
FORCEINLINE VOID WDF_DRIVER_CONFIG_INIT(_Out_ PWDF_DRIVER_CONFIG Config, _In_opt_ PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd)
Definition: wdfdriver.h:148
#define WDF_NO_HANDLE
Definition: wdftypes.h:107
#define WDF_NO_OBJECT_ATTRIBUTES
Definition: wdftypes.h:105
EVT_WDF_DRIVER_DEVICE_ADD XhciEvtDeviceAdd
Definition: xhcidrv.h:41
EVT_WDF_DRIVER_UNLOAD XhciEvtDriverUnload
Definition: xhcidrv.h:38
RtlInitUnicodeString & RoutineName
Definition: xhcientry.cpp:59
XhciDriver DriverObject
Definition: xhcientry.cpp:56
WDF_DRIVER_CONFIG Config
Definition: xhcientry.cpp:53
struct _XHCI_CODE_INTEGRITY XHCI_CODE_INTEGRITY
#define XHCI_CODE_INTEGRITY_TESTSIGN
Definition: xhcientry.cpp:15
static BOOLEAN NTAPI XhciIsTestSigningOn(VOID)
Definition: xhcientry.cpp:29
XhciDriverData XhciDriver
Definition: xhcientry.cpp:23
NTSTATUS Status
Definition: xhcientry.cpp:54
#define XHCI_TAG_DRIVER
Definition: xhciutil.h:11