Skip to content

Commit 77d883a

Browse files
committed
[SDK] Improve KDNET type headers
Split shared data types into kdnetshareddata.h CORE-20385
1 parent 9e09b5c commit 77d883a

2 files changed

Lines changed: 123 additions & 59 deletions

File tree

‎sdk/include/reactos/kdnetextensibility.h‎

Lines changed: 82 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -3,66 +3,96 @@
33
* LICENSE: MIT (https://spdx.org/licenses/MIT)
44
* PURPOSE: Provide the types needed to communicate with Kernel Debugger extensions
55
* COPYRIGHT: Copyright 2022 Hervé Poussineau <hpoussin@reactos.org>
6+
* Copyright 2026 Justin Miller <justin.miller@reactos.org>
67
*/
78

89
#pragma once
910

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>
1612

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
2116

22-
typedef NTSTATUS
23-
(NTAPI *KD_GET_TX_PACKET)(
24-
_In_ PVOID Adapter,
25-
_Out_ PULONG Handle);
17+
struct _DEBUG_DEVICE_DESCRIPTOR;
2618

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);
3238

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
4440

4541
typedef struct _KDNET_EXTENSIBILITY_EXPORTS
4642
{
4743
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;
6359
} KDNET_EXTENSIBILITY_EXPORTS, *PKDNET_EXTENSIBILITY_EXPORTS;
6460

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
6696

6797
typedef struct _KDNET_EXTENSIBILITY_IMPORTS
6898
{
@@ -102,18 +132,11 @@ typedef struct _KDNET_EXTENSIBILITY_IMPORTS
102132
PULONG KdNetHardwareID;
103133
} KDNET_EXTENSIBILITY_IMPORTS, *PKDNET_EXTENSIBILITY_IMPORTS;
104134

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(
117136
_In_ PKDNET_EXTENSIBILITY_IMPORTS ImportTable,
118137
_In_opt_ PCHAR LoaderOptions,
119-
_Inout_ PDEBUG_DEVICE_DESCRIPTOR Device);
138+
_Inout_ struct _DEBUG_DEVICE_DESCRIPTOR *Device);
139+
140+
#ifdef __cplusplus
141+
}
142+
#endif
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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 share the underlying transport state with Kernel Debugger extensions
5+
* COPYRIGHT: Copyright 2022 Hervé Poussineau <hpoussin@reactos.org>
6+
* Copyright 2026 Justin Miller <justin.miller@reactos.org>
7+
*/
8+
9+
#pragma once
10+
11+
#if defined(_AMD64_)
12+
#define MAX_HARDWARE_CONTEXT_SIZE (160*1024*1024)
13+
#else
14+
#define MAX_HARDWARE_CONTEXT_SIZE (16*1024*1024)
15+
#endif
16+
17+
#define TRANSMIT_ASYNC 0x80000000
18+
#define TRANSMIT_HANDLE 0x40000000
19+
#define TRANSMIT_LAST 0x20000000
20+
#define HANDLE_FLAGS (TRANSMIT_ASYNC | TRANSMIT_HANDLE | TRANSMIT_LAST)
21+
22+
#define KDX_EXTENDED_INITIAL_CONNECT 0x1
23+
#define KDX_FORCE_DHCP_OFF 0x2
24+
#define KDX_VALID_FLAGS (KDX_EXTENDED_INITIAL_CONNECT | KDX_FORCE_DHCP_OFF)
25+
26+
#define MAC_ADDRESS_SIZE 6
27+
#define UNDI_DEFAULT_HARDWARE_CONTEXT_SIZE ((512 + 10) * 1024)
28+
29+
typedef struct _KDNET_SHARED_DATA
30+
{
31+
PVOID Hardware;
32+
struct _DEBUG_DEVICE_DESCRIPTOR *Device;
33+
PUCHAR TargetMacAddress;
34+
ULONG LinkSpeed;
35+
ULONG LinkDuplex;
36+
PUCHAR LinkState;
37+
ULONG SerialBaudRate;
38+
ULONG Flags;
39+
UCHAR RestartKdnet;
40+
UCHAR Reserved[3];
41+
} KDNET_SHARED_DATA, *PKDNET_SHARED_DATA;

0 commit comments

Comments
 (0)