Skip to content

Commit 8bef246

Browse files
hpoussinDarkFire01
authored andcommitted
[SDK] Implement type header for KDNET and its extensions
CORE-20385
1 parent 9e3a4d5 commit 8bef246

1 file changed

Lines changed: 119 additions & 0 deletions

File tree

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/*
2+
* PROJECT: ReactOS Kernel Debugger over Network extension driver headers
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: Provide the types needed to communicate with Kernel Debugger extensions
5+
* COPYRIGHT: Copyright 2022 Hervé Poussineau <hpoussin@reactos.org>
6+
*/
7+
8+
#pragma once
9+
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);
16+
17+
typedef VOID
18+
(NTAPI *KD_RELEASE_RX_PACKET)(
19+
_In_ PVOID Adapter,
20+
_In_ ULONG Handle);
21+
22+
typedef NTSTATUS
23+
(NTAPI *KD_GET_TX_PACKET)(
24+
_In_ PVOID Adapter,
25+
_Out_ PULONG Handle);
26+
27+
typedef NTSTATUS
28+
(NTAPI *KD_SEND_TX_PACKET)(
29+
_In_ PVOID Adapter,
30+
_In_ ULONG Handle,
31+
_In_ ULONG Length);
32+
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
44+
45+
typedef struct _KDNET_EXTENSIBILITY_EXPORTS
46+
{
47+
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;
63+
} KDNET_EXTENSIBILITY_EXPORTS, *PKDNET_EXTENSIBILITY_EXPORTS;
64+
65+
#define KDNET_EXT_IMPORTS 30
66+
67+
typedef struct _KDNET_EXTENSIBILITY_IMPORTS
68+
{
69+
ULONG FunctionCount;
70+
PKDNET_EXTENSIBILITY_EXPORTS Exports;
71+
KDNET_GET_PCI_DATA_BY_OFFSET GetPciDataByOffset;
72+
KDNET_SET_PCI_DATA_BY_OFFSET SetPciDataByOffset;
73+
KDNET_GET_PHYSICAL_ADDRESS GetPhysicalAddress;
74+
KDNET_STALL_EXECUTION_PROCESSOR StallExecutionProcessor;
75+
KDNET_READ_REGISTER_UCHAR ReadRegisterUChar;
76+
KDNET_READ_REGISTER_USHORT ReadRegisterUShort;
77+
KDNET_READ_REGISTER_ULONG ReadRegisterULong;
78+
KDNET_READ_REGISTER_ULONG64 ReadRegisterULong64;
79+
KDNET_WRITE_REGISTER_UCHAR WriteRegisterUChar;
80+
KDNET_WRITE_REGISTER_USHORT WriteRegisterUShort;
81+
KDNET_WRITE_REGISTER_ULONG WriteRegisterULong;
82+
KDNET_WRITE_REGISTER_ULONG64 WriteRegisterULong64;
83+
KDNET_READ_PORT_UCHAR ReadPortUChar;
84+
KDNET_READ_PORT_USHORT ReadPortUShort;
85+
KDNET_READ_PORT_ULONG ReadPortULong;
86+
KDNET_READ_PORT_ULONG64 ReadPortULong64;
87+
KDNET_WRITE_PORT_UCHAR WritePortUChar;
88+
KDNET_WRITE_PORT_USHORT WritePortUShort;
89+
KDNET_WRITE_PORT_ULONG WritePortULong;
90+
KDNET_WRITE_PORT_ULONG64 WritePortULong64;
91+
KDNET_SET_HIBER_RANGE SetHiberRange;
92+
KDNET_BUGCHECK_EX BugCheckEx;
93+
KDNET_MAP_PHYSICAL_MEMORY_64 MapPhysicalMemory64;
94+
KDNET_UNMAP_VIRTUAL_ADDRESS UnmapVirtualAddress;
95+
KDNET_READ_CYCLE_COUNTER ReadCycleCounter;
96+
KDNET_DBGPRINT KdNetDbgPrintf;
97+
PVOID VmbusInitialize; /* optional */
98+
PVOID GetHypervisorVendorId; /* optional */
99+
ULONG ExecutionEnvironment;
100+
NTSTATUS *KdNetErrorStatus;
101+
PWCHAR *KdNetErrorString;
102+
PULONG KdNetHardwareID;
103+
} KDNET_EXTENSIBILITY_IMPORTS, *PKDNET_EXTENSIBILITY_IMPORTS;
104+
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(
117+
_In_ PKDNET_EXTENSIBILITY_IMPORTS ImportTable,
118+
_In_opt_ PCHAR LoaderOptions,
119+
_Inout_ PDEBUG_DEVICE_DESCRIPTOR Device);

0 commit comments

Comments
 (0)