xref: /reactos/ntoskrnl/include/internal/kd64.h (revision 144e984b)
1 /*
2  * PROJECT:         ReactOS Kernel
3  * LICENSE:         GPL - See COPYING in the top level directory
4  * FILE:            ntoskrnl/include/internal/kd64.h
5  * PURPOSE:         Internal header for the KD64 Library
6  * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
7  */
8 
9 #pragma once
10 
11 //
12 // Default size of the DbgPrint log buffer
13 //
14 #if DBG
15 #define KD_DEFAULT_LOG_BUFFER_SIZE  0x8000
16 #else
17 #define KD_DEFAULT_LOG_BUFFER_SIZE  0x1000
18 #endif
19 
20 //
21 // Default size of the Message and Path buffers
22 //
23 #define KDP_MSG_BUFFER_SIZE 0x1000
24 
25 //
26 // Maximum supported number of breakpoints
27 //
28 #define KD_BREAKPOINT_MAX   32
29 
30 //
31 // Highest limit starting which we consider that breakpoint addresses
32 // are either in system space, or in user space but inside shared DLLs.
33 //
34 // I'm wondering whether this can be computed using MmHighestUserAddress
35 // or whether there is already some #define somewhere else...
36 // See http://www.drdobbs.com/windows/faster-dll-load-load/184416918
37 // and http://www.drdobbs.com/rebasing-win32-dlls/184416272
38 // for a tentative explanation.
39 //
40 #define KD_HIGHEST_USER_BREAKPOINT_ADDRESS  (PVOID)0x60000000  // MmHighestUserAddress
41 
42 //
43 // Breakpoint Status Flags
44 //
45 #define KD_BREAKPOINT_ACTIVE    0x01
46 #define KD_BREAKPOINT_PENDING   0x02
47 #define KD_BREAKPOINT_SUSPENDED 0x04
48 #define KD_BREAKPOINT_EXPIRED   0x08
49 
50 //
51 // Structure for Breakpoints
52 //
53 typedef struct _BREAKPOINT_ENTRY
54 {
55     ULONG Flags;
56     ULONG_PTR DirectoryTableBase;
57     PVOID Address;
58     KD_BREAKPOINT_TYPE Content;
59 } BREAKPOINT_ENTRY, *PBREAKPOINT_ENTRY;
60 
61 //
62 // Debug and Multi-Processor Switch Routine Definitions
63 //
64 typedef
65 BOOLEAN
66 (NTAPI *PKDEBUG_ROUTINE)(
67     IN PKTRAP_FRAME TrapFrame,
68     IN PKEXCEPTION_FRAME ExceptionFrame,
69     IN PEXCEPTION_RECORD ExceptionRecord,
70     IN PCONTEXT Context,
71     IN KPROCESSOR_MODE PreviousMode,
72     IN BOOLEAN SecondChance
73 );
74 
75 typedef
76 BOOLEAN
77 (NTAPI *PKDEBUG_SWITCH_ROUTINE)(
78     IN PEXCEPTION_RECORD ExceptionRecord,
79     IN PCONTEXT Context,
80     IN BOOLEAN SecondChance
81 );
82 
83 //
84 // Initialization Routines
85 //
86 BOOLEAN
87 NTAPI
88 KdInitSystem(
89     _In_ ULONG BootPhase,
90     _In_opt_ PLOADER_PARAMETER_BLOCK LoaderBlock
91 );
92 
93 VOID
94 NTAPI
95 KdUpdateDataBlock(
96     VOID
97 );
98 
99 //
100 // Determines if the kernel debugger must handle a particular trap
101 //
102 BOOLEAN
103 NTAPI
104 KdIsThisAKdTrap(
105     IN PEXCEPTION_RECORD ExceptionRecord,
106     IN PCONTEXT Context,
107     IN KPROCESSOR_MODE PreviousMode
108 );
109 
110 //
111 // Multi-Processor Switch Support
112 //
113 BOOLEAN
114 NTAPI
115 KdpSwitchProcessor(
116     IN PEXCEPTION_RECORD ExceptionRecord,
117     IN OUT PCONTEXT ContextRecord,
118     IN BOOLEAN SecondChanceException
119 );
120 
121 //
122 // Time Slip Support
123 //
124 VOID
125 NTAPI
126 KdpTimeSlipWork(
127     IN PVOID Context
128 );
129 
130 VOID
131 NTAPI
132 KdpTimeSlipDpcRoutine(
133     IN PKDPC Dpc,
134     IN PVOID DeferredContext,
135     IN PVOID SystemArgument1,
136     IN PVOID SystemArgument2
137 );
138 
139 //
140 // Debug Trap Handlers
141 //
142 BOOLEAN
143 NTAPI
144 KdpStub(
145     IN PKTRAP_FRAME TrapFrame,
146     IN PKEXCEPTION_FRAME ExceptionFrame,
147     IN PEXCEPTION_RECORD ExceptionRecord,
148     IN PCONTEXT ContextRecord,
149     IN KPROCESSOR_MODE PreviousMode,
150     IN BOOLEAN SecondChanceException
151 );
152 
153 BOOLEAN
154 NTAPI
155 KdpTrap(
156     IN PKTRAP_FRAME TrapFrame,
157     IN PKEXCEPTION_FRAME ExceptionFrame,
158     IN PEXCEPTION_RECORD ExceptionRecord,
159     IN PCONTEXT ContextRecord,
160     IN KPROCESSOR_MODE PreviousMode,
161     IN BOOLEAN SecondChanceException
162 );
163 
164 //
165 // Port Locking
166 //
167 VOID
168 NTAPI
169 KdpPortLock(
170     VOID
171 );
172 
173 VOID
174 NTAPI
175 KdpPortUnlock(
176     VOID
177 );
178 
179 BOOLEAN
180 NTAPI
181 KdpPollBreakInWithPortLock(
182     VOID
183 );
184 
185 //
186 // Debugger Enter, Exit, Enable and Disable
187 //
188 BOOLEAN
189 NTAPI
190 KdEnterDebugger(
191     IN PKTRAP_FRAME TrapFrame,
192     IN PKEXCEPTION_FRAME ExceptionFrame
193 );
194 
195 VOID
196 NTAPI
197 KdExitDebugger(
198     IN BOOLEAN Enable
199 );
200 
201 NTSTATUS
202 NTAPI
203 KdEnableDebuggerWithLock(
204     IN BOOLEAN NeedLock
205 );
206 
207 NTSTATUS
208 NTAPI
209 KdDisableDebuggerWithLock(
210     IN BOOLEAN NeedLock
211 );
212 
213 //
214 // Debug Event Handlers
215 //
216 NTSTATUS
217 NTAPI
218 KdpPrint(
219     _In_ ULONG ComponentId,
220     _In_ ULONG Level,
221     _In_reads_bytes_(Length) PCHAR String,
222     _In_ USHORT Length,
223     _In_ KPROCESSOR_MODE PreviousMode,
224     _In_ PKTRAP_FRAME TrapFrame,
225     _In_ PKEXCEPTION_FRAME ExceptionFrame,
226     _Out_ PBOOLEAN Handled
227 );
228 
229 USHORT
230 NTAPI
231 KdpPrompt(
232     _In_reads_bytes_(PromptLength) PCHAR PromptString,
233     _In_ USHORT PromptLength,
234     _Out_writes_bytes_(MaximumResponseLength) PCHAR ResponseString,
235     _In_ USHORT MaximumResponseLength,
236     _In_ KPROCESSOR_MODE PreviousMode,
237     _In_ PKTRAP_FRAME TrapFrame,
238     _In_ PKEXCEPTION_FRAME ExceptionFrame
239 );
240 
241 VOID
242 NTAPI
243 KdpSymbol(
244     IN PSTRING DllPath,
245     IN PKD_SYMBOLS_INFO SymbolInfo,
246     IN BOOLEAN Unload,
247     IN KPROCESSOR_MODE PreviousMode,
248     IN PCONTEXT ContextRecord,
249     IN PKTRAP_FRAME TrapFrame,
250     IN PKEXCEPTION_FRAME ExceptionFrame
251 );
252 
253 VOID
254 NTAPI
255 KdpCommandString(
256     IN PSTRING NameString,
257     IN PSTRING CommandString,
258     IN KPROCESSOR_MODE PreviousMode,
259     IN PCONTEXT ContextRecord,
260     IN PKTRAP_FRAME TrapFrame,
261     IN PKEXCEPTION_FRAME ExceptionFrame
262 );
263 
264 //
265 // State Change Notifications
266 //
267 VOID
268 NTAPI
269 KdpReportLoadSymbolsStateChange(
270     IN PSTRING PathName,
271     IN PKD_SYMBOLS_INFO SymbolInfo,
272     IN BOOLEAN Unload,
273     IN OUT PCONTEXT Context
274 );
275 
276 VOID
277 NTAPI
278 KdpReportCommandStringStateChange(
279     IN PSTRING NameString,
280     IN PSTRING CommandString,
281     IN OUT PCONTEXT Context
282 );
283 
284 BOOLEAN
285 NTAPI
286 KdpReportExceptionStateChange(
287     IN PEXCEPTION_RECORD ExceptionRecord,
288     IN OUT PCONTEXT Context,
289     IN BOOLEAN SecondChanceException
290 );
291 
292 //
293 // Breakpoint Support
294 //
295 ULONG
296 NTAPI
297 KdpAddBreakpoint(
298     IN PVOID Address
299 );
300 
301 VOID
302 NTAPI
303 KdSetOwedBreakpoints(
304     VOID
305 );
306 
307 BOOLEAN
308 NTAPI
309 KdpDeleteBreakpoint(
310     IN ULONG BpEntry
311 );
312 
313 BOOLEAN
314 NTAPI
315 KdpDeleteBreakpointRange(
316     IN PVOID Base,
317     IN PVOID Limit
318 );
319 
320 VOID
321 NTAPI
322 KdpSuspendBreakPoint(
323     IN ULONG BpEntry
324 );
325 
326 VOID
327 NTAPI
328 KdpRestoreAllBreakpoints(
329     VOID
330 );
331 
332 VOID
333 NTAPI
334 KdpSuspendAllBreakPoints(
335     VOID
336 );
337 
338 //
339 // Routine to determine if it is safe to disable the debugger
340 //
341 NTSTATUS
342 NTAPI
343 KdpAllowDisable(
344     VOID
345 );
346 
347 //
348 // Safe memory read & write Support
349 //
350 NTSTATUS
351 NTAPI
352 KdpCopyMemoryChunks(
353     _In_ ULONG64 Address,
354     _In_ PVOID Buffer,
355     _In_ ULONG TotalSize,
356     _In_ ULONG ChunkSize,
357     _In_ ULONG Flags,
358     _Out_opt_ PULONG ActualSize
359 );
360 
361 //
362 // Internal memory handling routines for KD isolation
363 //
364 VOID
365 NTAPI
366 KdpMoveMemory(
367     _In_ PVOID Destination,
368     _In_ PVOID Source,
369     _In_ SIZE_T Length
370 );
371 
372 VOID
373 NTAPI
374 KdpZeroMemory(
375     _In_ PVOID Destination,
376     _In_ SIZE_T Length
377 );
378 
379 //
380 // Low Level Support Routines for the KD API
381 //
382 
383 //
384 // Version
385 //
386 VOID
387 NTAPI
388 KdpSysGetVersion(
389     IN PDBGKD_GET_VERSION64 Version
390 );
391 
392 //
393 // Context
394 //
395 VOID
396 NTAPI
397 KdpGetStateChange(
398     IN PDBGKD_MANIPULATE_STATE64 State,
399     IN PCONTEXT Context
400 );
401 
402 VOID
403 NTAPI
404 KdpSetContextState(
405     IN PDBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange,
406     IN PCONTEXT Context
407 );
408 
409 //
410 // MSR
411 //
412 NTSTATUS
413 NTAPI
414 KdpSysReadMsr(
415     IN ULONG Msr,
416     OUT PLARGE_INTEGER MsrValue
417 );
418 
419 NTSTATUS
420 NTAPI
421 KdpSysWriteMsr(
422     IN ULONG Msr,
423     IN PLARGE_INTEGER MsrValue
424 );
425 
426 //
427 // Bus
428 //
429 NTSTATUS
430 NTAPI
431 KdpSysReadBusData(
432     IN ULONG BusDataType,
433     IN ULONG BusNumber,
434     IN ULONG SlotNumber,
435     IN ULONG Offset,
436     IN PVOID Buffer,
437     IN ULONG Length,
438     OUT PULONG ActualLength
439 );
440 
441 NTSTATUS
442 NTAPI
443 KdpSysWriteBusData(
444     IN ULONG BusDataType,
445     IN ULONG BusNumber,
446     IN ULONG SlotNumber,
447     IN ULONG Offset,
448     IN PVOID Buffer,
449     IN ULONG Length,
450     OUT PULONG ActualLength
451 );
452 
453 //
454 // Control Space
455 //
456 NTSTATUS
457 NTAPI
458 KdpSysReadControlSpace(
459     IN ULONG Processor,
460     IN ULONG64 BaseAddress,
461     IN PVOID Buffer,
462     IN ULONG Length,
463     OUT PULONG ActualLength
464 );
465 
466 NTSTATUS
467 NTAPI
468 KdpSysWriteControlSpace(
469     IN ULONG Processor,
470     IN ULONG64 BaseAddress,
471     IN PVOID Buffer,
472     IN ULONG Length,
473     OUT PULONG ActualLength
474 );
475 
476 //
477 // I/O Space
478 //
479 NTSTATUS
480 NTAPI
481 KdpSysReadIoSpace(
482     IN ULONG InterfaceType,
483     IN ULONG BusNumber,
484     IN ULONG AddressSpace,
485     IN ULONG64 IoAddress,
486     IN PVOID DataValue,
487     IN ULONG DataSize,
488     OUT PULONG ActualDataSize
489 );
490 
491 NTSTATUS
492 NTAPI
493 KdpSysWriteIoSpace(
494     IN ULONG InterfaceType,
495     IN ULONG BusNumber,
496     IN ULONG AddressSpace,
497     IN ULONG64 IoAddress,
498     IN PVOID DataValue,
499     IN ULONG DataSize,
500     OUT PULONG ActualDataSize
501 );
502 
503 //
504 // Low Memory
505 //
506 NTSTATUS
507 NTAPI
508 KdpSysCheckLowMemory(
509     IN ULONG Flags
510 );
511 
512 //
513 // Internal routine for sending strings directly to the debugger
514 //
515 VOID
516 __cdecl
517 KdpDprintf(
518     _In_ PCHAR Format,
519     ...);
520 
521 BOOLEAN
522 NTAPI
523 KdpPrintString(
524     _In_ PSTRING Output);
525 
526 VOID
527 NTAPI
528 KdLogDbgPrint(
529     _In_ PSTRING String);
530 
531 //
532 // Global KD Data
533 //
534 extern DBGKD_GET_VERSION64 KdVersionBlock;
535 extern KDDEBUGGER_DATA64 KdDebuggerDataBlock;
536 extern LIST_ENTRY KdpDebuggerDataListHead;
537 extern KSPIN_LOCK KdpDataSpinLock;
538 extern LARGE_INTEGER KdPerformanceCounterRate;
539 extern LARGE_INTEGER KdTimerStart;
540 extern ULONG KdDisableCount;
541 extern KD_CONTEXT KdpContext;
542 extern PKDEBUG_ROUTINE KiDebugRoutine;
543 extern PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine;
544 extern BOOLEAN KdBreakAfterSymbolLoad;
545 extern BOOLEAN KdPitchDebugger;
546 extern BOOLEAN KdAutoEnableOnEvent;
547 extern BOOLEAN KdBlockEnable;
548 extern BOOLEAN KdIgnoreUmExceptions;
549 extern BOOLEAN KdPreviouslyEnabled;
550 extern BOOLEAN KdpDebuggerStructuresInitialized;
551 extern BOOLEAN KdEnteredDebugger;
552 extern KDPC KdpTimeSlipDpc;
553 extern KTIMER KdpTimeSlipTimer;
554 extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem;
555 extern LONG KdpTimeSlipPending;
556 extern PKEVENT KdpTimeSlipEvent;
557 extern KSPIN_LOCK KdpTimeSlipEventLock;
558 extern BOOLEAN KdpPortLocked;
559 extern BOOLEAN KdpControlCPressed;
560 extern BOOLEAN KdpContextSent;
561 extern KSPIN_LOCK KdpDebuggerLock;
562 extern LARGE_INTEGER KdTimerStop, KdTimerStart, KdTimerDifference;
563 
564 extern CHAR KdpMessageBuffer[KDP_MSG_BUFFER_SIZE];
565 extern CHAR KdpPathBuffer[KDP_MSG_BUFFER_SIZE];
566 
567 extern CHAR KdPrintDefaultCircularBuffer[KD_DEFAULT_LOG_BUFFER_SIZE];
568 extern PCHAR KdPrintWritePointer;
569 extern ULONG KdPrintRolloverCount;
570 extern PCHAR KdPrintCircularBuffer;
571 extern ULONG KdPrintBufferSize;
572 extern ULONG KdPrintBufferChanges;
573 extern KSPIN_LOCK KdpPrintSpinLock;
574 
575 extern BREAKPOINT_ENTRY KdpBreakpointTable[KD_BREAKPOINT_MAX];
576 extern KD_BREAKPOINT_TYPE KdpBreakpointInstruction;
577 extern BOOLEAN KdpOweBreakpoint;
578 extern BOOLEAN BreakpointsSuspended;
579 extern ULONG KdpNumInternalBreakpoints;
580 extern ULONG_PTR KdpCurrentSymbolStart, KdpCurrentSymbolEnd;
581 extern ULONG TraceDataBuffer[40];
582 extern ULONG TraceDataBufferPosition;
583 
584 //
585 // Debug Filter Component Table
586 //
587 #define MAX_KD_COMPONENT_TABLE_ENTRIES  (DPFLTR_ENDOFTABLE_ID + 1)
588 extern ULONG KdComponentTableSize;
589 extern PULONG KdComponentTable[MAX_KD_COMPONENT_TABLE_ENTRIES];
590 
591 //
592 // Debug Filter Masks
593 //
594 extern ULONG Kd_WIN2000_Mask;
595 extern ULONG Kd_SYSTEM_Mask;
596 extern ULONG Kd_SMSS_Mask;
597 extern ULONG Kd_SETUP_Mask;
598 extern ULONG Kd_NTFS_Mask;
599 extern ULONG Kd_FSTUB_Mask;
600 extern ULONG Kd_CRASHDUMP_Mask;
601 extern ULONG Kd_CDAUDIO_Mask;
602 extern ULONG Kd_CDROM_Mask;
603 extern ULONG Kd_CLASSPNP_Mask;
604 extern ULONG Kd_DISK_Mask;
605 extern ULONG Kd_REDBOOK_Mask;
606 extern ULONG Kd_STORPROP_Mask;
607 extern ULONG Kd_SCSIPORT_Mask;
608 extern ULONG Kd_SCSIMINIPORT_Mask;
609 extern ULONG Kd_CONFIG_Mask;
610 extern ULONG Kd_I8042PRT_Mask;
611 extern ULONG Kd_SERMOUSE_Mask;
612 extern ULONG Kd_LSERMOUS_Mask;
613 extern ULONG Kd_KBDHID_Mask;
614 extern ULONG Kd_MOUHID_Mask;
615 extern ULONG Kd_KBDCLASS_Mask;
616 extern ULONG Kd_MOUCLASS_Mask;
617 extern ULONG Kd_TWOTRACK_Mask;
618 extern ULONG Kd_WMILIB_Mask;
619 extern ULONG Kd_ACPI_Mask;
620 extern ULONG Kd_AMLI_Mask;
621 extern ULONG Kd_HALIA64_Mask;
622 extern ULONG Kd_VIDEO_Mask;
623 extern ULONG Kd_SVCHOST_Mask;
624 extern ULONG Kd_VIDEOPRT_Mask;
625 extern ULONG Kd_TCPIP_Mask;
626 extern ULONG Kd_DMSYNTH_Mask;
627 extern ULONG Kd_NTOSPNP_Mask;
628 extern ULONG Kd_FASTFAT_Mask;
629 extern ULONG Kd_SAMSS_Mask;
630 extern ULONG Kd_PNPMGR_Mask;
631 extern ULONG Kd_NETAPI_Mask;
632 extern ULONG Kd_SCSERVER_Mask;
633 extern ULONG Kd_SCCLIENT_Mask;
634 extern ULONG Kd_SERIAL_Mask;
635 extern ULONG Kd_SERENUM_Mask;
636 extern ULONG Kd_UHCD_Mask;
637 extern ULONG Kd_RPCPROXY_Mask;
638 extern ULONG Kd_AUTOCHK_Mask;
639 extern ULONG Kd_DCOMSS_Mask;
640 extern ULONG Kd_UNIMODEM_Mask;
641 extern ULONG Kd_SIS_Mask;
642 extern ULONG Kd_FLTMGR_Mask;
643 extern ULONG Kd_WMICORE_Mask;
644 extern ULONG Kd_BURNENG_Mask;
645 extern ULONG Kd_IMAPI_Mask;
646 extern ULONG Kd_SXS_Mask;
647 extern ULONG Kd_FUSION_Mask;
648 extern ULONG Kd_IDLETASK_Mask;
649 extern ULONG Kd_SOFTPCI_Mask;
650 extern ULONG Kd_TAPE_Mask;
651 extern ULONG Kd_MCHGR_Mask;
652 extern ULONG Kd_IDEP_Mask;
653 extern ULONG Kd_PCIIDE_Mask;
654 extern ULONG Kd_FLOPPY_Mask;
655 extern ULONG Kd_FDC_Mask;
656 extern ULONG Kd_TERMSRV_Mask;
657 extern ULONG Kd_W32TIME_Mask;
658 extern ULONG Kd_PREFETCHER_Mask;
659 extern ULONG Kd_RSFILTER_Mask;
660 extern ULONG Kd_FCPORT_Mask;
661 extern ULONG Kd_PCI_Mask;
662 extern ULONG Kd_DMIO_Mask;
663 extern ULONG Kd_DMCONFIG_Mask;
664 extern ULONG Kd_DMADMIN_Mask;
665 extern ULONG Kd_WSOCKTRANSPORT_Mask;
666 extern ULONG Kd_VSS_Mask;
667 extern ULONG Kd_PNPMEM_Mask;
668 extern ULONG Kd_PROCESSOR_Mask;
669 extern ULONG Kd_DMSERVER_Mask;
670 extern ULONG Kd_SR_Mask;
671 extern ULONG Kd_INFINIBAND_Mask;
672 extern ULONG Kd_IHVDRIVER_Mask;
673 extern ULONG Kd_IHVVIDEO_Mask;
674 extern ULONG Kd_IHVAUDIO_Mask;
675 extern ULONG Kd_IHVNETWORK_Mask;
676 extern ULONG Kd_IHVSTREAMING_Mask;
677 extern ULONG Kd_IHVBUS_Mask;
678 extern ULONG Kd_HPS_Mask;
679 extern ULONG Kd_RTLTHREADPOOL_Mask;
680 extern ULONG Kd_LDR_Mask;
681 extern ULONG Kd_TCPIP6_Mask;
682 extern ULONG Kd_ISAPNP_Mask;
683 extern ULONG Kd_SHPC_Mask;
684 extern ULONG Kd_STORPORT_Mask;
685 extern ULONG Kd_STORMINIPORT_Mask;
686 extern ULONG Kd_PRINTSPOOLER_Mask;
687 extern ULONG Kd_VSSDYNDISK_Mask;
688 extern ULONG Kd_VERIFIER_Mask;
689 extern ULONG Kd_VDS_Mask;
690 extern ULONG Kd_VDSBAS_Mask;
691 extern ULONG Kd_VDSDYN_Mask;   // Specified in Vista+
692 extern ULONG Kd_VDSDYNDR_Mask;
693 extern ULONG Kd_VDSLDR_Mask;   // Specified in Vista+
694 extern ULONG Kd_VDSUTIL_Mask;
695 extern ULONG Kd_DFRGIFC_Mask;
696 extern ULONG Kd_DEFAULT_Mask;
697 extern ULONG Kd_MM_Mask;
698 extern ULONG Kd_DFSC_Mask;
699 extern ULONG Kd_WOW64_Mask;
700 //
701 // Components specified in Vista+, some of which we also use in ReactOS
702 //
703 extern ULONG Kd_ALPC_Mask;
704 extern ULONG Kd_WDI_Mask;
705 extern ULONG Kd_PERFLIB_Mask;
706 extern ULONG Kd_KTM_Mask;
707 extern ULONG Kd_IOSTRESS_Mask;
708 extern ULONG Kd_HEAP_Mask;
709 extern ULONG Kd_WHEA_Mask;
710 extern ULONG Kd_USERGDI_Mask;
711 extern ULONG Kd_MMCSS_Mask;
712 extern ULONG Kd_TPM_Mask;
713 extern ULONG Kd_THREADORDER_Mask;
714 extern ULONG Kd_ENVIRON_Mask;
715 extern ULONG Kd_EMS_Mask;
716 extern ULONG Kd_WDT_Mask;
717 extern ULONG Kd_FVEVOL_Mask;
718 extern ULONG Kd_NDIS_Mask;
719 extern ULONG Kd_NVCTRACE_Mask;
720 extern ULONG Kd_LUAFV_Mask;
721 extern ULONG Kd_APPCOMPAT_Mask;
722 extern ULONG Kd_USBSTOR_Mask;
723 extern ULONG Kd_SBP2PORT_Mask;
724 extern ULONG Kd_COVERAGE_Mask;
725 extern ULONG Kd_CACHEMGR_Mask;
726 extern ULONG Kd_MOUNTMGR_Mask;
727 extern ULONG Kd_CFR_Mask;
728 extern ULONG Kd_TXF_Mask;
729 extern ULONG Kd_KSECDD_Mask;
730 extern ULONG Kd_FLTREGRESS_Mask;
731 extern ULONG Kd_MPIO_Mask;
732 extern ULONG Kd_MSDSM_Mask;
733 extern ULONG Kd_UDFS_Mask;
734 extern ULONG Kd_PSHED_Mask;
735 extern ULONG Kd_STORVSP_Mask;
736 extern ULONG Kd_LSASS_Mask;
737 extern ULONG Kd_SSPICLI_Mask;
738 extern ULONG Kd_CNG_Mask;
739 extern ULONG Kd_EXFAT_Mask;
740 extern ULONG Kd_FILETRACE_Mask;
741 extern ULONG Kd_XSAVE_Mask;
742 extern ULONG Kd_SE_Mask;
743 extern ULONG Kd_DRIVEEXTENDER_Mask;
744 //
745 // Components specified in Windows 8
746 //
747 extern ULONG Kd_POWER_Mask;
748 extern ULONG Kd_CRASHDUMPXHCI_Mask;
749 extern ULONG Kd_GPIO_Mask;
750 extern ULONG Kd_REFS_Mask;
751 extern ULONG Kd_WER_Mask;
752 //
753 // Components specified in Windows 10
754 //
755 extern ULONG Kd_CAPIMG_Mask;
756 extern ULONG Kd_VPCI_Mask;
757 extern ULONG Kd_STORAGECLASSMEMORY_Mask;
758 extern ULONG Kd_FSLIB_Mask;
759