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