Función ZwSetInformationVirtualMemory (ntifs.h)
La rutina
Sintaxis
NTSYSAPI NTSTATUS ZwSetInformationVirtualMemory(
[in] HANDLE ProcessHandle,
[in] VIRTUAL_MEMORY_INFORMATION_CLASS VmInformationClass,
[in] ULONG_PTR NumberOfEntries,
[in] PMEMORY_RANGE_ENTRY VirtualAddresses,
[in] PVOID VmInformation,
[in] ULONG VmInformationLength
);
Parámetros
[in] ProcessHandle
Especifica un identificador abierto para el proceso en el contexto del que se va a realizar la operación. Este identificador no puede ser válido. Use la macro NtCurrentProcess, definida en Ntddk.h, para especificar el proceso actual.
[in] VmInformationClass
Especifica el tipo de operación que se va a realizar. Establézcalo en VmPrefetchInformation definido en la enumeración VIRTUAL_MEMORY_INFORMATION_CLASS, consulte ntddk.h.
[in] NumberOfEntries
Número de entradas de la matriz a las que apunta el parámetro VirtualAddresses. Este parámetro no puede ser 0.
[in] VirtualAddresses
Puntero a una matriz de MEMORY_RANGE_ENTRY estructuras en las que cada entrada especifica un intervalo de direcciones virtuales que se va a procesar. Los intervalos de direcciones virtuales pueden cubrir cualquier parte del espacio de direcciones del proceso al que pueda acceder el proceso de destino.
[in] VmInformation
Puntero a un búfer que contiene información de memoria. El formato y el contenido del búfer dependen de la clase de información especificada.
Si VmInformationClass es VmPrefetchInformation, este parámetro no puede ser NULL y debe apuntar a una variable ULONG establecida en 0.
[in] VmInformationLength
Tamaño del búfer al que apunta VmInformation.
Si VmInformationClass es vmPrefetchInformation, debe sizeof (ULONG)
.
Valor devuelto
ZwSetInformationVirtualMemory devuelve STATUS_SUCCESS correcto o el código de error NTSTATUS adecuado en caso de error.
Observaciones
El ZwSetInformationVirtualMemory rutina lo llaman los controladores que conocen el conjunto de direcciones a las que accederán. Si es probable que estas direcciones ya no residan en la memoria (es decir, se han paginado en el disco), llamando a esta rutina en esos intervalos de direcciones antes de que el acceso reduzca la latencia general porque aporta eficazmente esos intervalos de direcciones desde el disco que usan solicitudes de E/S simultáneas grandes siempre que sea posible.
ZwSetInformationVirtualMemory permite a los controladores hacer un uso eficaz del hardware de disco mediante la emisión de E/S grandes y simultáneas siempre que sea posible cuando el controlador proporciona una lista de intervalos de direcciones de proceso a los que se va a acceder. Incluso para un único intervalo de direcciones (por ejemplo, una asignación de archivos), la rutina puede proporcionar mejoras de rendimiento mediante la emisión de una única E/S grande en lugar de las muchas E/S más pequeñas que se emitirían a través de errores de página.
Los controladores llaman a esta rutina exclusivamente para la optimización del rendimiento: la captura previa no es necesaria para acceder a los intervalos de direcciones de destino. La memoria capturada previamente no se agrega al conjunto de trabajo del proceso de destino; se almacena en caché en memoria física. Cuando el proceso de destino accede a los intervalos de direcciones previamente capturados, se agregan al conjunto de trabajo.
Dado que esta llamada no es necesaria para el funcionamiento correcto del controlador, se trata como una sugerencia fuerte por parte del sistema y está sujeta a restricciones de memoria física habituales en las que puede fallar completamente o parcialmente en condiciones de memoria baja. También puede crear presión de memoria si se llama con intervalos de direcciones grandes, por lo que las aplicaciones solo deben capturar previamente los intervalos de direcciones que usarán realmente.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10, versión 1511. |
de la plataforma de destino de |
Universal |
encabezado de |
ntifs.h (incluya Ntddk.h) |
biblioteca de |
NtosKrnl.lib |
DLL de |
NtosKrnl.exe |
irQL | PASSIVE_LEVEL |
reglas de cumplimiento de DDI | HwStorPortProhibitedDIs, PowerIrpDDis |