> Windows Syscalls
ntoskrnl.exeT1542.001T1106

NtQueryDriverEntryOrder

Lee la lista DriverOrder UEFI de la plataforma — el orden en que cargan las entradas Driver#### UEFI al arranque.

Prototipo

NTSTATUS NtQueryDriverEntryOrder(
  PULONG Ids,
  PULONG Count
);

Argumentos

NameTypeDirDescription
IdsPULONGoutArreglo asignado por el llamador que recibe la lista ordenada de IDs Driver####.
CountPULONGin/outEn entrada: capacidad de Ids en entradas. En salida: número de IDs devueltos.

IDs de syscalls por versión de Windows

Versión de WindowsID de syscallBuild
Win10 15070x12Cwin10-1507
Win10 16070x132win10-1607
Win10 17030x137win10-1703
Win10 17090x13Awin10-1709
Win10 18030x13Cwin10-1803
Win10 18090x13Dwin10-1809
Win10 19030x13Ewin10-1903
Win10 19090x13Ewin10-1909
Win10 20040x144win10-2004
Win10 20H20x144win10-20h2
Win10 21H10x144win10-21h1
Win10 21H20x145win10-21h2
Win10 22H20x145win10-22h2
Win11 21H20x14Bwin11-21h2
Win11 22H20x14Dwin11-22h2
Win11 23H20x14Dwin11-23h2
Win11 24H20x14Fwin11-24h2
Server 20160x132winserver-2016
Server 20190x13Dwinserver-2019
Server 20220x14Awinserver-2022
Server 20250x14Fwinserver-2025

Módulo del kernel

ntoskrnl.exeNtQueryDriverEntryOrder

APIs relacionadas

NtSetDriverEntryOrderNtEnumerateDriverEntriesNtAddDriverEntryNtModifyDriverEntryNtDeleteDriverEntrybcdedit /enum FIRMWARE

Stub del syscall

4C 8B D1            mov r10, rcx
B8 4F 01 00 00      mov eax, 0x14F
F6 04 25 08 03 FE 7F 01   test byte ptr [0x7FFE0308], 1
75 03               jne short +3
0F 05               syscall
C3                  ret
CD 2E               int 2Eh
C3                  ret

Notas no documentadas

Compañero de la familia BCD `NtQueryBootEntryOrder` pero operando sobre entradas **drivers** UEFI en vez de entradas del cargador de SO. La variable NVRAM DriverOrder controla qué drivers de plataforma (Driver0000, Driver0001, ...) carga el firmware antes de ceder el control al cargador de SO; consultarla es la ruta de inspección de solo lectura. Requiere SeSystemEnvironmentPrivilege. En sistemas no UEFI/CSM la syscall devuelve STATUS_NOT_IMPLEMENTED. El comando `bcdedit /enum FIRMWARE` es la superficie de modo usuario más comúnmente vista ejerciendo esta ruta.

Uso común por malware

Valor de reconocimiento durante tradecraft centrado en firmware: un atacante a punto de intentar persistencia UEFI puede enumerar DriverOrder para (a) entender qué drivers OEM/plataforma se ejecutan primero, (b) identificar un slot cuyo número esté sin usar para que una entrada Driver#### implantada sea recogida, o (c) confirmar que un Driver#### ya implantado precede al traspaso al cargador de SO. Combinar con NtQuerySystemEnvironmentValueEx para enumeración completa. Solo lectura por sí mismo — sin daño directo a nivel kernel.

Oportunidades de detección

El volumen de llamadas legítimas es extremadamente bajo — esencialmente bcdedit.exe, manage-bde y herramientas firmware OEM. ETW Microsoft-Windows-Kernel-General registra accesos de lectura de firmware incluyendo DriverOrder. La transición de habilitación de privilegio (SeSystemEnvironmentPrivilege vía NtAdjustPrivilegesToken) es el punto de control defensivo más temprano. Emparejar telemetría de contexto de proceso con el evento de auditoría para señalar malware en modo usuario enumerando la configuración de arranque.

Ejemplos de syscalls directos

asmx64 direct stub (Win11 24H2)

; Direct syscall stub for NtQueryDriverEntryOrder (SSN 0x14F, Win11 24H2)
NtQueryDriverEntryOrder PROC
    mov  r10, rcx
    mov  eax, 14Fh
    syscall
    ret
NtQueryDriverEntryOrder ENDP

cEnumerate UEFI DriverOrder

// Privilege gate first.
BOOLEAN was;
RtlAdjustPrivilege(SE_SYSTEM_ENVIRONMENT_PRIVILEGE, TRUE, FALSE, &was);

ULONG ids[32] = {0};
ULONG count = ARRAYSIZE(ids);
NTSTATUS s = NtQueryDriverEntryOrder(ids, &count);
if (NT_SUCCESS(s)) {
    for (ULONG i = 0; i < count; ++i) {
        // ids[i] is the Driver#### identifier in load order.
        // Pair with NtQuerySystemEnvironmentValueEx(L"Driver####", EFI_GLOBAL_VARIABLE,...)
        // to dereference each entry's device-path and load-options.
    }
}

Mapeos MITRE ATT&CK

Last verified: 2026-05-20