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