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