IOCTL Dispatcher for VMM IOCTLs.
399{
433 PVOID BufferToStoreThreadsAndProcessesDetails;
436 SIZE_T ReturnSize;
437 NTSTATUS Status = STATUS_SUCCESS;
438 UINT32 Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
439
440 switch (Ioctl)
441 {
443
444
445
446
448
449 Status = STATUS_SUCCESS;
450
451 break;
452
454
455
456
457
459 (
PVOID *)&DebuggerReadMemRequest,
460 Irp,
461 IrpStack,
462 &InBuffLength,
463 &OutBuffLength))
464 {
465 Status = STATUS_INVALID_PARAMETER;
466 break;
467 }
468
471 &ReturnSize) ==
TRUE)
472 {
473
474
475
477 }
478 else
479 {
480
481
482
484 }
485
486 break;
487
489
490
491
492
494 (
PVOID *)&DebuggerReadOrWriteMsrRequest,
495 Irp,
496 IrpStack,
497 &InBuffLength,
498 &OutBuffLength))
499 {
500 Status = STATUS_INVALID_PARAMETER;
501 break;
502 }
503
504
505
506
507
508 Status =
DebuggerReadOrWriteMsr(DebuggerReadOrWriteMsrRequest, (UINT64 *)DebuggerReadOrWriteMsrRequest, &ReturnSize);
509
510
511
512
513 if (Status == STATUS_SUCCESS)
514 {
515
516
517
519 }
520
521 break;
522
524
525
526
527
529 (
PVOID *)&DebuggerPteRequest,
530 Irp,
531 IrpStack,
532 &InBuffLength,
533 &OutBuffLength))
534 {
535 Status = STATUS_INVALID_PARAMETER;
536 break;
537 }
538
539
540
541
542
544
545
546
547
549
550 break;
551
553
554
555
556
558 (
PVOID *)&DebuggerNewEventRequest,
559 Irp,
560 IrpStack,
561 &InBuffLength,
562 &OutBuffLength))
563 {
564 Status = STATUS_INVALID_PARAMETER;
565 break;
566 }
567
568
569
570
571
575
576
577
578
580
581 break;
582
584
585
586
587
589 (
PVOID *)&DebuggerNewActionRequest,
590 Irp,
591 IrpStack,
592 &InBuffLength,
593 &OutBuffLength))
594 {
595 Status = STATUS_INVALID_PARAMETER;
596 break;
597 }
598
599
600
601
602
606
607
608
609
611
612 break;
613
615
616
617
618
620 (
PVOID *)&DebuggerHideAndUnhideRequest,
621 Irp,
622 IrpStack,
623 &InBuffLength,
624 &OutBuffLength))
625 {
626 Status = STATUS_INVALID_PARAMETER;
627 break;
628 }
629
630
631
632
633 if (DebuggerHideAndUnhideRequest->IsHide ==
TRUE)
634 {
635
636
637
639 }
640 else
641 {
642
643
644
646 }
647
648
649
650
652
653 break;
654
656
657
658
659
661 (
PVOID *)&DebuggerVa2paAndPa2vaRequest,
662 Irp,
663 IrpStack,
664 &InBuffLength,
665 &OutBuffLength))
666 {
667 Status = STATUS_INVALID_PARAMETER;
668 break;
669 }
670
671
672
673
674
676
677
678
679
681
682 break;
683
685
686
687
688
690 (
PVOID *)&DebuggerEditMemoryRequest,
691 Irp,
692 IrpStack,
693 &InBuffLength,
694 &OutBuffLength))
695 {
696 Status = STATUS_INVALID_PARAMETER;
697 break;
698 }
699
700
701
702
703
704 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength !=
SIZEOF_DEBUGGER_EDIT_MEMORY + DebuggerEditMemoryRequest->CountOf64Chunks *
sizeof(UINT64))
705 {
706 Status = STATUS_INVALID_PARAMETER;
707 break;
708 }
709
710
711
712
713
715
716
717
718
720
721 break;
722
724
725
726
727
729 (
PVOID *)&DebuggerSearchMemoryRequest,
730 Irp,
731 IrpStack,
732 &InBuffLength,
733 &OutBuffLength))
734 {
735 Status = STATUS_INVALID_PARAMETER;
736 break;
737 }
738
739
740
741
742
744 {
745 Status = STATUS_INVALID_PARAMETER;
746 break;
747 }
748
749
750
751
752
753 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength !=
SIZEOF_DEBUGGER_SEARCH_MEMORY + DebuggerSearchMemoryRequest->CountOf64Chunks *
sizeof(UINT64))
754 {
755 Status = STATUS_INVALID_PARAMETER;
756 break;
757 }
758
759
760
761
762
764 {
765
766
767
768
769
771 }
772
773
774
775
776
778
779 break;
780
782
783
784
785
787 (
PVOID *)&DebuggerModifyEventRequest,
788 Irp,
789 IrpStack,
790 &InBuffLength,
791 &OutBuffLength))
792 {
793 Status = STATUS_INVALID_PARAMETER;
794 break;
795 }
796
797
798
799
800
802
803
804
805
807
808 break;
809
811
812
813
814
816 (
PVOID *)&DebuggerFlushBuffersRequest,
817 Irp,
818 IrpStack,
819 &InBuffLength,
820 &OutBuffLength))
821 {
822 Status = STATUS_INVALID_PARAMETER;
823 break;
824 }
825
826
827
828
830
831
832
833
835
836 break;
837
839
840
841
842
844 (
PVOID *)&DebuggerAttachOrDetachToThreadRequest,
845 Irp,
846 IrpStack,
847 &InBuffLength,
848 &OutBuffLength))
849 {
850 Status = STATUS_INVALID_PARAMETER;
851 break;
852 }
853
854
855
856
858
859
860
861
863
864 break;
865
867
868
869
870
872 (
PVOID *)&DebuggeeRequest,
873 Irp,
874 IrpStack,
875 &InBuffLength,
876 &OutBuffLength))
877 {
878 Status = STATUS_INVALID_PARAMETER;
879 break;
880 }
881
882
883
884
886
887
888
889
891
892 break;
893
895
896
897
898
900 (
PVOID *)&DebuggerPauseKernelRequest,
901 Irp,
902 IrpStack,
903 &InBuffLength,
904 &OutBuffLength))
905 {
906 Status = STATUS_INVALID_PARAMETER;
907 break;
908 }
909
910
911
912
914
915
916
917
919
920 break;
921
923
924
925
926
928 (
PVOID *)&DebuggerCommandExecutionFinishedRequest,
929 Irp,
930 IrpStack,
931 &InBuffLength,
932 &OutBuffLength))
933 {
934 Status = STATUS_INVALID_PARAMETER;
935 break;
936 }
937
938
939
940
942
943
944
945
947
948 break;
949
951
952
953
954
956 (
PVOID *)&DebuggerSendUsermodeMessageRequest,
957 Irp,
958 IrpStack,
959 &InBuffLength,
960 &OutBuffLength))
961 {
962 Status = STATUS_INVALID_PARAMETER;
963 break;
964 }
965
966
967
968
969 if (DebuggerSendUsermodeMessageRequest->Length ==
NULL_ZERO ||
971 {
972 Status = STATUS_INVALID_PARAMETER;
973 break;
974 }
975
976
977
978
980
981
982
983
985
986 break;
987
989
990
991
992
994 (
PVOID *)&DebuggerSendBufferFromDebuggeeToDebuggerRequest,
995 Irp,
996 IrpStack,
997 &InBuffLength,
998 &OutBuffLength))
999 {
1000 Status = STATUS_INVALID_PARAMETER;
1001 break;
1002 }
1003
1004
1005
1006
1007 if (DebuggerSendBufferFromDebuggeeToDebuggerRequest->LengthOfBuffer ==
NULL_ZERO ||
1009 {
1010 Status = STATUS_INVALID_PARAMETER;
1011 break;
1012 }
1013
1014
1015
1016
1018
1019
1020
1021
1023
1024 break;
1025
1027
1028
1029
1030
1032 (
PVOID *)&DebuggerKernelTestRequest,
1033 Irp,
1034 IrpStack,
1035 &InBuffLength,
1036 &OutBuffLength))
1037 {
1038 Status = STATUS_INVALID_PARAMETER;
1039 break;
1040 }
1041
1042
1043
1044
1046
1047
1048
1049
1051
1052 break;
1053
1055
1056
1057
1058
1060 (
PVOID *)&DebuggerReservePreallocPoolRequest,
1061 Irp,
1062 IrpStack,
1063 &InBuffLength,
1064 &OutBuffLength))
1065 {
1066 Status = STATUS_INVALID_PARAMETER;
1067 break;
1068 }
1069
1070
1071
1072
1074
1075
1076
1077
1079
1080 break;
1081
1083
1084
1085
1086
1088 (
PVOID *)&DebuggerPreactivationRequest,
1089 Irp,
1090 IrpStack,
1091 &InBuffLength,
1092 &OutBuffLength))
1093 {
1094 Status = STATUS_INVALID_PARAMETER;
1095 break;
1096 }
1097
1098
1099
1100
1102
1103
1104
1105
1107
1108 break;
1109
1111
1112
1113
1114
1116 (
PVOID *)&DebuggerApicRequest,
1117 Irp,
1118 IrpStack,
1119 &InBuffLength,
1120 &OutBuffLength))
1121 {
1122 Status = STATUS_INVALID_PARAMETER;
1123 break;
1124 }
1125
1126
1127
1128
1130
1131 break;
1132
1134
1135
1136
1137
1139 (
PVOID *)&DebuggerQueryIdtRequest,
1140 Irp,
1141 IrpStack,
1142 &InBuffLength,
1143 &OutBuffLength))
1144 {
1145 Status = STATUS_INVALID_PARAMETER;
1146 break;
1147 }
1148
1149
1150
1151
1153
1154
1155
1156
1158
1159 break;
1160
1162
1163
1164
1165
1167 (
PVOID *)&DebuggerBreakpointRequest,
1168 Irp,
1169 IrpStack,
1170 &InBuffLength,
1171 &OutBuffLength))
1172 {
1173 Status = STATUS_INVALID_PARAMETER;
1174 break;
1175 }
1176
1177
1178
1179
1180
1181
1182
1184
1185
1186
1187
1189
1190 break;
1191
1193
1194
1195
1196
1198 (
PVOID *)&SmiOperationRequest,
1199 Irp,
1200 IrpStack,
1201 &InBuffLength,
1202 &OutBuffLength))
1203 {
1204 Status = STATUS_INVALID_PARAMETER;
1205 break;
1206 }
1207
1208
1209
1210
1212
1213
1214
1215
1217
1218 break;
1219
1221
1222
1223
1224
1226 (
PVOID *)&DebuggerUdCommandRequest,
1227 Irp,
1228 IrpStack,
1229 &InBuffLength,
1230 &OutBuffLength))
1231 {
1232 Status = STATUS_INVALID_PARAMETER;
1233 break;
1234 }
1235
1236
1237
1238
1240
1241
1242
1243
1245
1246 break;
1247
1249
1250 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1251
1252 if (!OutBuffLength)
1253 {
1254 Status = STATUS_INVALID_PARAMETER;
1255 break;
1256 }
1257
1258
1259
1260
1261 BufferToStoreThreadsAndProcessesDetails = (
PVOID)Irp->AssociatedIrp.SystemBuffer;
1262
1263
1264
1265
1267
1268
1269
1270
1272
1273 break;
1274
1276
1277
1278
1279
1281 (
PVOID *)&DebuggerUsermodeModulesRequest,
1282 Irp,
1283 IrpStack,
1284 &InBuffLength,
1285 &OutBuffLength))
1286 {
1287 Status = STATUS_INVALID_PARAMETER;
1288 break;
1289 }
1290
1291
1292
1293
1295
1296
1297
1298
1300
1301 break;
1302
1304
1305
1306
1307
1309 (
PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
1310 Irp,
1311 IrpStack,
1312 &InBuffLength,
1313 &OutBuffLength))
1314 {
1315 Status = STATUS_INVALID_PARAMETER;
1316 break;
1317 }
1318
1319
1320
1321
1323 {
1325 }
1327 {
1329 }
1330
1331
1332
1333
1335
1336 break;
1337
1339
1340
1341
1342
1344 (
PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
1345 Irp,
1346 IrpStack,
1347 &InBuffLength,
1348 &OutBuffLength))
1349 {
1350 Status = STATUS_INVALID_PARAMETER;
1351 break;
1352 }
1353
1354
1355
1356
1358 {
1360 DebuggerUsermodeProcessOrThreadQueryRequest,
1361 OutBuffLength);
1362 }
1364 {
1366 DebuggerUsermodeProcessOrThreadQueryRequest,
1367 OutBuffLength);
1368 }
1369
1370
1371
1372
1374
1375 break;
1376
1378
1379
1380
1381
1383 (
PVOID *)&GetInformationThreadRequest,
1384 Irp,
1385 IrpStack,
1386 &InBuffLength,
1387 &OutBuffLength))
1388 {
1389 Status = STATUS_INVALID_PARAMETER;
1390 break;
1391 }
1392
1393
1394
1395
1397
1398
1399
1400
1402
1403 break;
1404
1406
1407
1408
1409
1411 (
PVOID *)&GetInformationProcessRequest,
1412 Irp,
1413 IrpStack,
1414 &InBuffLength,
1415 &OutBuffLength))
1416 {
1417 Status = STATUS_INVALID_PARAMETER;
1418 break;
1419 }
1420
1421
1422
1423
1425
1426
1427
1428
1430
1431 break;
1432
1434
1435
1436
1437
1439 (
PVOID *)&RevServiceRequest,
1440 Irp,
1441 IrpStack,
1442 &InBuffLength,
1443 &OutBuffLength))
1444 {
1445 Status = STATUS_INVALID_PARAMETER;
1446 break;
1447 }
1448
1449
1450
1451
1453
1454
1455
1456
1458
1459 break;
1460
1462
1463
1464
1465
1467 (
PVOID *)&DebuggerPageinRequest,
1468 Irp,
1469 IrpStack,
1470 &InBuffLength,
1471 &OutBuffLength))
1472 {
1473 Status = STATUS_INVALID_PARAMETER;
1474 break;
1475 }
1476
1477
1478
1479
1480
1482
1483
1484
1485
1487
1488 break;
1489
1491
1492
1493
1494
1496 (
PVOID *)&PcitreeRequest,
1497 Irp,
1498 IrpStack,
1499 &InBuffLength,
1500 &OutBuffLength))
1501 {
1502 Status = STATUS_INVALID_PARAMETER;
1503 break;
1504 }
1505
1506
1507
1508
1509
1511
1512
1513
1514
1516
1517 break;
1518
1520
1521
1522
1523
1525 (
PVOID *)&PcidevinfoRequest,
1526 Irp,
1527 IrpStack,
1528 &InBuffLength,
1529 &OutBuffLength))
1530 {
1531 Status = STATUS_INVALID_PARAMETER;
1532 break;
1533 }
1534
1535
1536
1537
1538
1540
1541
1542
1543
1545
1546 break;
1547
1548 default:
1550 Status = STATUS_NOT_IMPLEMENTED;
1551 break;
1552 }
1553
1554 return Status;
1555}
BOOLEAN AttachingQueryDetailsOfActiveDebuggingThreadsAndProcesses(PVOID BufferToStoreDetails, UINT32 BufferSize)
Query details of active debugging threads.
Definition Attaching.c:1393
VOID AttachingTargetProcess(PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS Request)
Dispatch and perform attaching tasks.
Definition Attaching.c:1425
BOOLEAN BreakpointAddNew(PDEBUGGEE_BP_PACKET BpDescriptorArg, BOOLEAN SwitchToTargetMemoryLayout)
Add new breakpoints.
Definition BreakpointCommands.c:950
#define EnableInstantEventMechanism
Enable or disable the instant event mechanism.
Definition Configuration.h:70
BOOLEAN DebuggerParseEvent(PDEBUGGER_GENERAL_EVENT_DETAIL EventDetails, PDEBUGGER_EVENT_AND_ACTION_RESULT ResultsToReturn, BOOLEAN InputFromVmxRoot)
Routine for parsing events.
Definition Debugger.c:3163
BOOLEAN DebuggerParseEventsModification(PDEBUGGER_MODIFY_EVENTS DebuggerEventModificationRequest, BOOLEAN InputFromVmxRoot, BOOLEAN PoolManagerAllocatedMemory)
Parse and validate requests to enable/disable/clear from the user-mode.
Definition Debugger.c:3728
BOOLEAN DebuggerParseAction(PDEBUGGER_GENERAL_ACTION ActionDetails, PDEBUGGER_EVENT_AND_ACTION_RESULT ResultsToReturn, BOOLEAN InputFromVmxRoot)
Routine for validating and parsing actions that are coming from the user-mode.
Definition Debugger.c:3307
BOOLEAN DebuggerCommandBringPagein(PDEBUGGER_PAGE_IN_REQUEST PageinRequest)
routines for the .pagein command
Definition DebuggerCommands.c:1532
NTSTATUS DebuggerCommandPreactivateFunctionality(PDEBUGGER_PREACTIVATE_COMMAND PreactivateRequest)
Preactivate a special functionality.
Definition DebuggerCommands.c:1500
NTSTATUS DebuggerCommandReservePreallocatedPools(PDEBUGGER_PREALLOC_COMMAND PreallocRequest)
Reserve and allocate pre-allocated buffers.
Definition DebuggerCommands.c:1376
NTSTATUS DebuggerReadOrWriteMsr(PDEBUGGER_READ_AND_WRITE_ON_MSR ReadOrWriteMsrRequest, UINT64 *UserBuffer, PSIZE_T ReturnSize)
Perform rdmsr, wrmsr commands.
Definition DebuggerCommands.c:337
NTSTATUS DebuggerCommandSignalExecutionState(PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL DebuggerFinishedExecutionRequest)
Perform the command finished signal.
Definition DebuggerCommands.c:1312
NTSTATUS DebuggerCommandSearchMemory(PDEBUGGER_SEARCH_MEMORY SearchMemRequest)
Start searching memory.
Definition DebuggerCommands.c:1191
BOOLEAN DebuggerCommandReadMemory(PDEBUGGER_READ_MEMORY ReadMemRequest, PVOID UserBuffer, PSIZE_T ReturnSize)
Read memory for different commands.
Definition DebuggerCommands.c:74
NTSTATUS DebuggerCommandSendMessage(PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER DebuggerSendUsermodeMessageRequest)
Send the user-mode buffer to debugger.
Definition DebuggerCommands.c:1331
NTSTATUS DebuggerCommandSendGeneralBufferToDebugger(PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER DebuggeeBufferRequest)
Send general buffers from the debuggee to the debugger.
Definition DebuggerCommands.c:1353
NTSTATUS DebuggerCommandFlush(PDEBUGGER_FLUSH_LOGGING_BUFFERS DebuggerFlushBuffersRequest)
Perform the flush requests to vmx-root and vmx non-root buffers.
Definition DebuggerCommands.c:1292
NTSTATUS DebuggerCommandEditMemory(PDEBUGGER_EDIT_MEMORY EditMemRequest)
Edit physical and virtual memory.
Definition DebuggerCommands.c:490
VOID ExtensionCommandPerformQueryIdtEntriesRequest(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtQueryRequest, BOOLEAN ReadFromVmxRoot)
Perform query for IDT entries.
Definition ExtensionCommands.c:92
VOID ExtensionCommandVa2paAndPa2va(PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS AddressDetails, BOOLEAN OperateOnVmxRoot)
routines for !va2pa and !pa2va commands
Definition ExtensionCommands.c:114
VOID ExtensionCommandPcidevinfo(PDEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET PcidevinfoPacket, BOOLEAN OperateOnVmxRoot)
Request PCI device info.
Definition ExtensionCommands.c:760
UINT32 ExtensionCommandPerformActionsForApicRequests(PDEBUGGER_APIC_REQUEST ApicRequest)
Perform actions regarding APIC.
Definition ExtensionCommands.c:23
BOOLEAN ExtensionCommandPte(PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PteDetails, BOOLEAN IsOperatingInVmxRoot)
routines for !pte command
Definition ExtensionCommands.c:261
VOID ExtensionCommandPcitree(PDEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET PcitreePacket, BOOLEAN OperateOnVmxRoot)
routines for PCIe tree
Definition ExtensionCommands.c:697
VOID KdHaltSystem(PDEBUGGER_PAUSE_PACKET_RECEIVED PausePacket)
Halt the system.
Definition Kd.c:3489
VOID TestKernelPerformTests(PDEBUGGER_PERFORM_KERNEL_TESTS KernelTestRequest)
Perform the kernel-side tests.
Definition KernelTests.c:22
BOOLEAN ProcessQueryList(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest, PVOID AddressToSaveDetail, UINT32 BufferSize)
Query process details (list).
Definition Process.c:649
BOOLEAN ProcessQueryCount(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest)
Query process details (count).
Definition Process.c:616
BOOLEAN ProcessQueryDetails(PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET GetInformationProcessRequest)
Query process details.
Definition Process.c:675
NTSTATUS SerialConnectionPrepare(PDEBUGGER_PREPARE_DEBUGGEE DebuggeeRequest)
Perform tasks relating to stepping (step-in & step-out) requests.
Definition SerialConnection.c:341
BOOLEAN ThreadQueryDetails(PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET GetInformationThreadRequest)
Query thread details.
Definition Thread.c:712
BOOLEAN ThreadQueryList(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest, PVOID AddressToSaveDetail, UINT32 BufferSize)
Query thread details (list).
Definition Thread.c:686
BOOLEAN ThreadQueryCount(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest)
Query thread details (count).
Definition Thread.c:653
BOOLEAN UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest, UINT32 ActionRequestInputLength, UINT32 ActionRequestOutputLength)
Dispatch the user-mode commands.
Definition Ud.c:642
BOOLEAN UserAccessGetLoadedModules(PUSERMODE_LOADED_MODULE_DETAILS ProcessLoadedModuleRequest, UINT32 BufferSize)
Get details about loaded modules.
Definition UserAccess.c:779
IMPORT_EXPORT_VMM BOOLEAN TransparentHideDebuggerWrapper(DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE *TransparentModeRequest)
Wrapper for hiding debugger on transparent-mode (activate transparent-mode).
Definition HyperEvade.c:25
IMPORT_EXPORT_VMM BOOLEAN VmFuncSmmPerformSmiOperation(SMI_OPERATION_PACKETS *SmiOperationRequest, BOOLEAN ApplyFromVmxRootMode)
Perform actions related to System Management Interrupts (SMIs).
Definition Export.c:1140
IMPORT_EXPORT_VMM BOOLEAN TransparentUnhideDebuggerWrapper(DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE *TransparentModeRequest)
Deactivate transparent-mode.
Definition HyperEvade.c:125
IMPORT_EXPORT_VMM BOOLEAN ConfigureInitializeExecTrapOnAllProcessors()
routines for initializing user-mode, kernel-mode exec trap
Definition Configuration.c:32
VOID LoaderUninitVmmAndDebugger()
Uninitialize the VMM and the debugger.
Definition Loader.c:417