Compartir a través de


Función MmMapIoSpaceEx (wdm.h)

La rutina MmMapIoSpaceEx asigna el intervalo de direcciones físicos especificado al espacio del sistema no paginado mediante la protección de página especificada.

Sintaxis

PVOID MmMapIoSpaceEx(
  [in] PHYSICAL_ADDRESS PhysicalAddress,
  [in] SIZE_T           NumberOfBytes,
  [in] ULONG            Protect
);

Parámetros

[in] PhysicalAddress

Especifica la dirección física inicial del intervalo de E/S que se va a asignar.

[in] NumberOfBytes

Especifica un valor mayor que cero, que indica el número de bytes que se van a asignar.

[in] Protect

Marca bits que especifican la protección que se va a usar para el intervalo asignado. El autor de la llamada debe establecer uno de los siguientes bits de marca en el parámetro Protect .

Bit de marca Significado
PAGE_READONLY El intervalo asignado solo se puede leer, no escribir.
PAGE_READWRITE El intervalo asignado se puede leer o escribir.
PAGE_EXECUTE El intervalo asignado se puede ejecutar, pero no leer o escribir.
PAGE_EXECUTE_READ El intervalo asignado se puede ejecutar o leer, pero no escribir.
PAGE_EXECUTE_READWRITE El intervalo asignado se puede ejecutar, leer o escribir.
 

Además, el autor de la llamada puede establecer uno (pero no ambos) de los siguientes bits de marca opcionales en el parámetro Protect .

Bit de marca Significado
PAGE_NOCACHE Especifica memoria no almacenada en caché.
PAGE_WRITECOMBINE Especifica la memoria combinada de escritura (el procesador no debe almacenar en caché la memoria, pero el procesador puede combinar las escrituras en la memoria).

Valor devuelto

MmMapIoSpaceEx devuelve la dirección virtual base que asigna la dirección física base del intervalo. Si el espacio para asignar el intervalo no es suficiente, devuelve NULL.

Comentarios

Un controlador debe llamar a esta rutina durante el inicio del dispositivo si recibe recursos traducidos de tipo CmResourceTypeMemory en una estructura de CM_PARTIAL_RESOURCE_DESCRIPTOR . MmMapIoSpaceEx asigna la dirección física devuelta en la lista de recursos a una dirección virtual a través de la cual el controlador puede acceder a los registros del dispositivo.

Por ejemplo, los controladores de los dispositivos PIO que asignan búferes de E/S a largo plazo pueden llamar a esta rutina para que dichos búferes sean accesibles o para que la memoria del dispositivo sea accesible.

Para obtener más información sobre el uso de esta rutina, consulte Asignación de Bus-Relative direcciones a direcciones virtuales.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 10.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

Consulte también

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace