|
3 | 3 | * LICENSE: MIT (https://spdx.org/licenses/MIT) |
4 | 4 | * PURPOSE: Provide the types needed to communicate with Kernel Debugger extensions |
5 | 5 | * COPYRIGHT: Copyright 2022 Hervé Poussineau <hpoussin@reactos.org> |
| 6 | + * Copyright 2026 Justin Miller <justin.miller@reactos.org> |
6 | 7 | */ |
7 | 8 |
|
8 | 9 | #pragma once |
9 | 10 |
|
10 | | -typedef NTSTATUS |
11 | | -(NTAPI *KD_GET_RX_PACKET)( |
12 | | - _In_ PVOID Adapter, |
13 | | - _Out_ PULONG Handle, |
14 | | - _Out_ PVOID *Packet, |
15 | | - _Out_ PULONG Length); |
| 11 | +#include <reactos/kdnetshareddata.h> |
16 | 12 |
|
17 | | -typedef VOID |
18 | | -(NTAPI *KD_RELEASE_RX_PACKET)( |
19 | | - _In_ PVOID Adapter, |
20 | | - _In_ ULONG Handle); |
| 13 | +#ifdef __cplusplus |
| 14 | +extern "C" { |
| 15 | +#endif |
21 | 16 |
|
22 | | -typedef NTSTATUS |
23 | | -(NTAPI *KD_GET_TX_PACKET)( |
24 | | - _In_ PVOID Adapter, |
25 | | - _Out_ PULONG Handle); |
| 17 | +struct _DEBUG_DEVICE_DESCRIPTOR; |
26 | 18 |
|
27 | | -typedef NTSTATUS |
28 | | -(NTAPI *KD_SEND_TX_PACKET)( |
29 | | - _In_ PVOID Adapter, |
30 | | - _In_ ULONG Handle, |
31 | | - _In_ ULONG Length); |
| 19 | +typedef NTSTATUS (NTAPI *KD_INITIALIZE_CONTROLLER)(_In_ PKDNET_SHARED_DATA KdNet); |
| 20 | +typedef VOID (NTAPI *KD_SHUTDOWN_CONTROLLER)(_In_ PVOID Adapter); |
| 21 | +typedef VOID (NTAPI *KD_SET_HIBERNATE_RANGE)(VOID); |
| 22 | +typedef NTSTATUS (NTAPI *KD_DEVICE_CONTROL)(_In_ PVOID Adapter, _In_ ULONG RequestCode, |
| 23 | + _In_reads_bytes_(InputBufferLength) PVOID InputBuffer, _In_ ULONG InputBufferLength, |
| 24 | + _Out_writes_bytes_(OutputBufferLength) PVOID OutputBuffer, _In_ ULONG OutputBufferLength); |
| 25 | +typedef NTSTATUS (NTAPI *KD_GET_RX_PACKET)(_In_ PVOID Adapter, _Out_ PULONG Handle, |
| 26 | + _Out_ PVOID *Packet, _Out_ PULONG Length); |
| 27 | +typedef VOID (NTAPI *KD_RELEASE_RX_PACKET)(_In_ PVOID Adapter, _In_ ULONG Handle); |
| 28 | +typedef NTSTATUS (NTAPI *KD_GET_TX_PACKET)(_In_ PVOID Adapter, _Out_ PULONG Handle); |
| 29 | +typedef NTSTATUS (NTAPI *KD_SEND_TX_PACKET)(_In_ PVOID Adapter, _In_ ULONG Handle, _In_ ULONG Length); |
| 30 | +typedef PVOID (NTAPI *KD_GET_PACKET_ADDRESS)(_In_ PVOID Adapter, _In_ ULONG Handle); |
| 31 | +typedef ULONG (NTAPI *KD_GET_PACKET_LENGTH)(_In_ PVOID Adapter, _In_ ULONG Handle); |
| 32 | +typedef ULONG (NTAPI *KD_GET_HARDWARE_CONTEXT_SIZE)(_In_ struct _DEBUG_DEVICE_DESCRIPTOR *Device); |
| 33 | +typedef NTSTATUS (NTAPI *KD_READ_SERIAL_BYTE)(_In_ PVOID Adapter, _Out_ PUCHAR Byte); |
| 34 | +typedef NTSTATUS (NTAPI *KD_WRITE_SERIAL_BYTE)(_In_ PVOID Adapter, _In_ UCHAR Byte); |
| 35 | +typedef NTSTATUS (NTAPI *DEBUG_SERIAL_OUTPUT_INIT)(_In_opt_ struct _DEBUG_DEVICE_DESCRIPTOR *pDevice, |
| 36 | + _Out_opt_ PPHYSICAL_ADDRESS PAddress); |
| 37 | +typedef VOID (NTAPI *DEBUG_SERIAL_OUTPUT_BYTE)(_In_ UCHAR byte); |
32 | 38 |
|
33 | | -typedef PVOID |
34 | | -(NTAPI *KD_GET_PACKET_ADDRESS)( |
35 | | - _In_ PVOID Adapter, |
36 | | - _In_ ULONG Handle); |
37 | | - |
38 | | -typedef ULONG |
39 | | -(NTAPI *KD_GET_PACKET_LENGTH)( |
40 | | - _In_ PVOID Adapter, |
41 | | - _In_ ULONG Handle); |
42 | | - |
43 | | -#define KDNET_EXT_EXPORTS 13 |
| 39 | +#define KDNET_EXT_EXPORTS 15 |
44 | 40 |
|
45 | 41 | typedef struct _KDNET_EXTENSIBILITY_EXPORTS |
46 | 42 | { |
47 | 43 | ULONG FunctionCount; |
48 | | - PVOID KdInitializeController; |
49 | | - PVOID KdShutdownController; |
50 | | - PVOID KdSetHibernateRange; |
51 | | - KD_GET_RX_PACKET KdGetRxPacket; |
52 | | - KD_RELEASE_RX_PACKET KdReleaseRxPacket; |
53 | | - KD_GET_TX_PACKET KdGetTxPacket; |
54 | | - KD_SEND_TX_PACKET KdSendTxPacket; |
55 | | - KD_GET_PACKET_ADDRESS KdGetPacketAddress; |
56 | | - KD_GET_PACKET_LENGTH KdGetPacketLength; |
57 | | - PVOID KdGetHardwareContextSize; |
58 | | - PVOID KdDeviceControl; |
59 | | - PVOID KdReadSerialByte; |
60 | | - PVOID KdWriteSerialByte; |
61 | | - PVOID DebugSerialOutputInit; |
62 | | - PVOID DebugSerialOutputByte; |
| 44 | + KD_INITIALIZE_CONTROLLER KdInitializeController; |
| 45 | + KD_SHUTDOWN_CONTROLLER KdShutdownController; |
| 46 | + KD_SET_HIBERNATE_RANGE KdSetHibernateRange; |
| 47 | + KD_GET_RX_PACKET KdGetRxPacket; |
| 48 | + KD_RELEASE_RX_PACKET KdReleaseRxPacket; |
| 49 | + KD_GET_TX_PACKET KdGetTxPacket; |
| 50 | + KD_SEND_TX_PACKET KdSendTxPacket; |
| 51 | + KD_GET_PACKET_ADDRESS KdGetPacketAddress; |
| 52 | + KD_GET_PACKET_LENGTH KdGetPacketLength; |
| 53 | + KD_GET_HARDWARE_CONTEXT_SIZE KdGetHardwareContextSize; |
| 54 | + KD_DEVICE_CONTROL KdDeviceControl; |
| 55 | + KD_READ_SERIAL_BYTE KdReadSerialByte; |
| 56 | + KD_WRITE_SERIAL_BYTE KdWriteSerialByte; |
| 57 | + DEBUG_SERIAL_OUTPUT_INIT DebugSerialOutputInit; |
| 58 | + DEBUG_SERIAL_OUTPUT_BYTE DebugSerialOutputByte; |
63 | 59 | } KDNET_EXTENSIBILITY_EXPORTS, *PKDNET_EXTENSIBILITY_EXPORTS; |
64 | 60 |
|
65 | | -#define KDNET_EXT_IMPORTS 30 |
| 61 | +typedef PHYSICAL_ADDRESS (NTAPI *KDNET_GET_PHYSICAL_ADDRESS)(_In_ PVOID Va); |
| 62 | +typedef VOID (NTAPI *KDNET_STALL_EXECUTION_PROCESSOR)(ULONG Microseconds); |
| 63 | +typedef UCHAR (NTAPI *KDNET_READ_REGISTER_UCHAR)(_In_ PUCHAR Register); |
| 64 | +typedef USHORT (NTAPI *KDNET_READ_REGISTER_USHORT)(_In_ PUSHORT Register); |
| 65 | +typedef ULONG (NTAPI *KDNET_READ_REGISTER_ULONG)(_In_ PULONG Register); |
| 66 | +typedef ULONG64 (NTAPI *KDNET_READ_REGISTER_ULONG64)(_In_ ULONG64 *Register); |
| 67 | +typedef VOID (NTAPI *KDNET_WRITE_REGISTER_UCHAR)(_In_ PUCHAR Register, _In_ UCHAR Value); |
| 68 | +typedef VOID (NTAPI *KDNET_WRITE_REGISTER_USHORT)(_In_ PUSHORT Register, _In_ USHORT Value); |
| 69 | +typedef VOID (NTAPI *KDNET_WRITE_REGISTER_ULONG)(_In_ PULONG Register, _In_ ULONG Value); |
| 70 | +typedef VOID (NTAPI *KDNET_WRITE_REGISTER_ULONG64)(_In_ ULONG64 *Register, _In_ ULONG64 Value); |
| 71 | +typedef UCHAR (NTAPI *KDNET_READ_PORT_UCHAR)(_In_ PUCHAR Port); |
| 72 | +typedef USHORT (NTAPI *KDNET_READ_PORT_USHORT)(_In_ PUSHORT Port); |
| 73 | +typedef ULONG (NTAPI *KDNET_READ_PORT_ULONG)(_In_ PULONG Port); |
| 74 | +typedef ULONG64 (NTAPI *KDNET_READ_PORT_ULONG64)(_In_ ULONG64 *Port); |
| 75 | +typedef VOID (NTAPI *KDNET_WRITE_PORT_UCHAR)(_In_ PUCHAR Port, _In_ UCHAR Value); |
| 76 | +typedef VOID (NTAPI *KDNET_WRITE_PORT_USHORT)(_In_ PUSHORT Port, _In_ USHORT Value); |
| 77 | +typedef VOID (NTAPI *KDNET_WRITE_PORT_ULONG)(_In_ PULONG Port, _In_ ULONG Value); |
| 78 | +typedef VOID (NTAPI *KDNET_WRITE_PORT_ULONG64)(_In_ PULONG Port, _In_ ULONG64 Value); |
| 79 | +typedef ULONG (NTAPI *KDNET_GET_PCI_DATA_BY_OFFSET)(_In_ ULONG BusNumber, _In_ ULONG SlotNumber, |
| 80 | + _Out_writes_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length); |
| 81 | +typedef ULONG (NTAPI *KDNET_SET_PCI_DATA_BY_OFFSET)(_In_ ULONG BusNumber, _In_ ULONG SlotNumber, |
| 82 | + _In_reads_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length); |
| 83 | +typedef VOID (NTAPI *KDNET_SET_HIBER_RANGE)(_In_opt_ PVOID MemoryMap, _In_ ULONG Flags, |
| 84 | + _In_ PVOID Address, _In_ ULONG_PTR Length, _In_ ULONG Tag); |
| 85 | +typedef VOID (NTAPI *KDNET_BUGCHECK_EX)(_In_ ULONG BugCheckCode, |
| 86 | + _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, |
| 87 | + _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4); |
| 88 | +typedef PVOID (NTAPI *KDNET_MAP_PHYSICAL_MEMORY_64)(_In_ PHYSICAL_ADDRESS PhysicalAddress, |
| 89 | + _In_ ULONG NumberPages, _In_ BOOLEAN FlushCurrentTLB); |
| 90 | +typedef VOID (NTAPI *KDNET_UNMAP_VIRTUAL_ADDRESS)(_In_ PVOID VirtualAddress, |
| 91 | + _In_ ULONG NumberPages, _In_ BOOLEAN FlushCurrentTLB); |
| 92 | +typedef ULONG64 (NTAPI *KDNET_READ_CYCLE_COUNTER)(_Out_opt_ ULONG64 *Frequency); |
| 93 | +typedef VOID (NTAPI *KDNET_DBGPRINT)(_In_ PCHAR pFmt, ...); |
| 94 | + |
| 95 | +#define KDNET_EXT_IMPORTS 33 |
66 | 96 |
|
67 | 97 | typedef struct _KDNET_EXTENSIBILITY_IMPORTS |
68 | 98 | { |
@@ -102,18 +132,11 @@ typedef struct _KDNET_EXTENSIBILITY_IMPORTS |
102 | 132 | PULONG KdNetHardwareID; |
103 | 133 | } KDNET_EXTENSIBILITY_IMPORTS, *PKDNET_EXTENSIBILITY_IMPORTS; |
104 | 134 |
|
105 | | -extern PKDNET_EXTENSIBILITY_EXPORTS KdNetExtensibilityExports; |
106 | | - |
107 | | -#define KdGetRxPacket KdNetExtensibilityExports->KdGetRxPacket |
108 | | -#define KdReleaseRxPacket KdNetExtensibilityExports->KdReleaseRxPacket |
109 | | -#define KdGetTxPacket KdNetExtensibilityExports->KdGetTxPacket |
110 | | -#define KdSendTxPacket KdNetExtensibilityExports->KdSendTxPacket |
111 | | -#define KdGetPacketAddress KdNetExtensibilityExports->KdGetPacketAddress |
112 | | -#define KdGetPacketLength KdNetExtensibilityExports->KdGetPacketLength |
113 | | - |
114 | | -NTSTATUS |
115 | | -NTAPI |
116 | | -KdInitializeLibrary( |
| 135 | +NTSTATUS NTAPI KdInitializeLibrary( |
117 | 136 | _In_ PKDNET_EXTENSIBILITY_IMPORTS ImportTable, |
118 | 137 | _In_opt_ PCHAR LoaderOptions, |
119 | | - _Inout_ PDEBUG_DEVICE_DESCRIPTOR Device); |
| 138 | + _Inout_ struct _DEBUG_DEVICE_DESCRIPTOR *Device); |
| 139 | + |
| 140 | +#ifdef __cplusplus |
| 141 | +} |
| 142 | +#endif |
0 commit comments