13#include <reactos/buildno.h>
20#define KdpBufferSize (1024 * 512)
34#define KdpScreenLineLengthDefault 80
212 else if (BootPhase == 1)
235 else if (BootPhase >= 2)
300 DPRINT(
"Status: 0x%08lx - EOF offset: %I64d\n",
308 DPRINT(
"Status: 0x%08lx - Position: %I64d\n",
317 DPRINT(
"ZwSetInformationFile(FilePositionInfo) returned: 0x%08lx\n",
Status);
333 DPRINT1(
"Failed to create log file thread: 0x%08lx\n",
Status);
339 ZwSetInformationThread(ThreadHandle,
415 else if (BootPhase == 1)
526 else if (BootPhase == 1)
555 PKD_DISPATCH_TABLE CurrentTable;
578 CurrentEntry = CurrentEntry->
Flink)
584 CurrentTable->KdpPrintRoutine(MessageData->Buffer, MessageData->Length);
633 Result = kdHandleException;
635 if (
Result != kdHandleException)
664 CHAR MessageBuffer[512];
670 RtlZeroMemory(MessageHeader->Buffer, MessageHeader->MaximumLength);
674 MessageData->Length = 0;
714 ResponseString.Buffer = MessageBuffer;
715 ResponseString.Length = 0;
716 ResponseString.MaximumLength =
min(
sizeof(MessageBuffer),
717 MessageData->MaximumLength);
718 ResponseString.MaximumLength =
min(ResponseString.MaximumLength,
733 ResponseString.MaximumLength);
#define FILE_NON_DIRECTORY_FILE
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define FILE_ATTRIBUTE_NORMAL
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define KeRaiseIrql(irql, oldIrql)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeInitializeSpinLock(sl)
#define ExGetPreviousMode
#define InterlockedExchangeAddUL(Addend, Value)
struct _FileName FileName
@ FilePositionInformation
#define FILE_SYNCHRONOUS_IO_NONALERT
#define FILE_WRITE_THROUGH
#define FILE_SEQUENTIAL_ONLY
#define KeRosDumpStackFrames(Frames, Count)
NTHALAPI VOID NTAPI HalDisplayString(PUCHAR String)
VOID NTAPI InbvAcquireDisplayOwnership(VOID)
VOID NTAPI InbvInstallDisplayStringFilter(_In_ INBV_DISPLAY_STRING_FILTER DisplayFilter)
VOID NTAPI InbvNotifyDisplayOwnershipLost(_In_ INBV_RESET_DISPLAY_PARAMETERS Callback)
BOOLEAN NTAPI InbvCheckDisplayOwnership(VOID)
VOID NTAPI InbvSetTextColor(_In_ ULONG Color)
BOOLEAN NTAPI InbvEnableDisplayString(_In_ BOOLEAN Enable)
BOOLEAN NTAPI InbvResetDisplay(VOID)
VOID NTAPI InbvSetScrollRegion(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom)
VOID NTAPI InbvSolidColorFill(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ ULONG Color)
BOOLEAN NTAPI InbvIsBootDriverInstalled(VOID)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
BOOLEAN NTAPI KdpPrintString(_In_ PSTRING Output)
BOOLEAN NTAPI KdPortInitializeEx(PCPPORT PortInformation, ULONG ComPortNumber)
VOID NTAPI KdPortPutByteEx(PCPPORT PortInformation, UCHAR ByteToSend)
KD_CONTINUE_TYPE KdbEnterDebuggerException(IN PEXCEPTION_RECORD64 ExceptionRecord, IN KPROCESSOR_MODE PreviousMode, IN PCONTEXT Context, IN BOOLEAN FirstChance)
KDB Exception filter.
VOID KdbSymProcessSymbols(_Inout_ PLDR_DATA_TABLE_ENTRY LdrEntry, _In_ BOOLEAN Load)
Load symbols from image mapping. If this fails,.
BOOLEAN KdbpSymFindModule(IN PVOID Address OPTIONAL, IN INT Index OPTIONAL, OUT PLDR_DATA_TABLE_ENTRY *pLdrEntry)
Find a module...
VOID KbdDisableMouse(VOID)
VOID KbdEnableMouse(VOID)
SIZE_T KdbpReadCommand(_Out_ PCHAR Buffer, _In_ SIZE_T Size)
Reads a line of user input from the terminal.
#define DEFAULT_DEBUG_PORT
#define DEFAULT_DEBUG_BAUD_RATE
static VOID NTAPI KdpLoggerThread(PVOID Context)
static volatile ULONG KdpFreeBytes
static VOID NTAPI KdpScreenPrint(PCHAR String, ULONG Length)
NTSTATUS NTAPI KdpSerialInit(_In_ PKD_DISPATCH_TABLE DispatchTable, _In_ ULONG BootPhase)
static ULONG KdbgNextApiNumber
static HANDLE KdpLogFileHandle
VOID NTAPI KdbpReleaseLock(_In_ PKSPIN_LOCK SpinLock, _In_ KIRQL OldIrql)
static ULONG KdpScreenLineBufferPos
static NTSTATUS KdbgContinueStatus
VOID NTAPI KdSendPacket(_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_opt_ PSTRING MessageData, _Inout_ PKD_CONTEXT Context)
KDP_DEBUG_MODE KdpDebugMode
KDSTATUS NTAPI KdReceivePacket(_In_ ULONG PacketType, _Out_ PSTRING MessageHeader, _Out_ PSTRING MessageData, _Out_ PULONG DataLength, _Inout_ PKD_CONTEXT Context)
VOID KdpScreenRelease(VOID)
KIRQL NTAPI KdbpAcquireLock(_In_ PKSPIN_LOCK SpinLock)
static PCHAR KdpDebugBuffer
static BOOLEAN KdbgFirstChanceException
static CHAR KdpScreenLineBuffer[KdpScreenLineLengthDefault+1]
static EXCEPTION_RECORD64 KdbgExceptionRecord
PKDP_INIT_ROUTINE InitRoutines[KdMax]
static KSPIN_LOCK KdpSerialSpinLock
NTSTATUS NTAPI KdpScreenInit(_In_ PKD_DISPATCH_TABLE DispatchTable, _In_ ULONG BootPhase)
NTSTATUS NTAPI KdpDebugLogInit(_In_ PKD_DISPATCH_TABLE DispatchTable, _In_ ULONG BootPhase)
static CONTEXT KdbgContext
static KSPIN_LOCK KdpDebugLogSpinLock
static VOID NTAPI KdpPrintToLogFile(PCHAR String, ULONG Length)
static KEVENT KdpLoggerThreadEvent
static ULONG KdpScreenLineLength
VOID KdpScreenAcquire(VOID)
ANSI_STRING KdpLogFileName
static BOOLEAN KdpLoggingEnabled
static VOID NTAPI KdpSerialPrint(PCHAR String, ULONG Length)
static volatile ULONG KdpCurrentPosition
#define KdpScreenLineLengthDefault
#define ExFreePoolWithTag(_P, _T)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define THREAD_ALL_ACCESS
NTSYSAPI NTSTATUS NTAPI NtWriteFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID WriteBuffer, IN ULONG WriteBufferLength, IN PLARGE_INTEGER FileOffset OPTIONAL, IN PULONG LockOperationKey OPTIONAL)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define KeSetContextPc(Context, ProgramCounter)
#define KeGetContextPc(Context)
BOOLEAN FASTCALL KeTestSpinLock(IN PKSPIN_LOCK SpinLock)
BOOLEAN FASTCALL KeTryToAcquireSpinLockAtDpcLevel(IN OUT PKSPIN_LOCK SpinLock)
VOID FASTCALL KiReleaseSpinLock(IN PKSPIN_LOCK SpinLock)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define STATUS_ASSERTION_FAILURE
#define STATUS_PORT_DISCONNECTED
#define STATUS_DEVICE_DOES_NOT_EXIST
#define FileStandardInformation
#define KdPacketNeedsResend
union _DBGKD_ANY_WAIT_STATE_CHANGE::@3510 u
DBGKM_EXCEPTION64 Exception
DBGKD_LOAD_SYMBOLS64 LoadSymbols
DBGKD_GET_STRING GetString
union _DBGKD_DEBUG_IO::@3507 u
union _DBGKD_MANIPULATE_STATE64::@3518 u
EXCEPTION_RECORD64 ExceptionRecord
struct _LIST_ENTRY * Flink
#define RTL_CONSTANT_STRING(s)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_OBJECT_PATH_NOT_FOUND
#define STATUS_UNSUCCESSFUL
#define STATUS_OBJECT_NAME_NOT_FOUND
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
#define DbgKdGetContextApi
#define DbgKdLoadSymbolsStateChange
#define DbgKdPrintStringApi
#define DbgKdSetContextApi
#define PACKET_TYPE_KD_STATE_MANIPULATE
#define DbgKdGetStringApi
struct _DBGKD_ANY_WAIT_STATE_CHANGE * PDBGKD_ANY_WAIT_STATE_CHANGE
struct _DBGKD_MANIPULATE_STATE64 * PDBGKD_MANIPULATE_STATE64
#define DbgKdExceptionStateChange
#define PACKET_TYPE_KD_STATE_CHANGE64
struct _DBGKD_DEBUG_IO * PDBGKD_DEBUG_IO
#define PACKET_TYPE_KD_DEBUG_IO
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql