DXGKCB_MAP_MEMORY función de devolución de llamada (dispmprt.h)
La función DxgkCbMapMemory asigna un intervalo de direcciones físicas traducidas (asociadas a un recurso de memoria asignado a un adaptador de pantalla) en el espacio del sistema o en el espacio de direcciones virtuales de un proceso en modo de usuario.
Sintaxis
DXGKCB_MAP_MEMORY DxgkcbMapMemory;
NTSTATUS DxgkcbMapMemory(
[in] HANDLE DeviceHandle,
[in] PHYSICAL_ADDRESS TranslatedAddress,
[in] ULONG Length,
[in] BOOLEAN InIoSpace,
[in] BOOLEAN MapToUserMode,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *VirtualAddress
)
{...}
Parámetros
[in] DeviceHandle
Identificador que representa un adaptador de pantalla. El controlador de minipuerto de pantalla obtuvo previamente este identificador en el miembro DeviceHandle de la estructura de DXGKRNL_INTERFACE que se pasó a DxgkDdiStartDevice.
[in] TranslatedAddress
Dirección física traducida base del intervalo de memoria que se va a asignar. El controlador de minipuerto de pantalla obtuvo previamente esta dirección llamando a DxgkCbGetDeviceInformation.
[in] Length
Tamaño, en bytes, del intervalo que se va a asignar.
[in] InIoSpace
Valor booleano que especifica si el intervalo está en espacio de E/S (TRUE) o espacio de memoria (FALSE).
[in] MapToUserMode
Valor booleano que especifica si el intervalo se asigna al espacio en modo de usuario o al espacio del sistema. Si es TRUE, el intervalo se asigna al espacio de direcciones virtuales (modo de usuario) del proceso actual. Si es FALSE, el intervalo se asigna al espacio del sistema. Si InIoSpace es TRUE, se omite este parámetro.
[in] CacheType
Enumerador MEMORY_CACHING_TYPE que especifica el comportamiento de almacenamiento en caché del intervalo asignado.
[out] VirtualAddress
Puntero a una variable que recibe la dirección del principio del intervalo asignado. La forma en que se obtiene acceso al intervalo asignado depende de los valores de InIoSpace y MapToUserMode. En la tabla siguiente se resumen las distintas formas en que se obtiene acceso al intervalo asignado.
Valor de InIoSpace | MapToUserMode es FALSE | MapToUserMode es TRUE |
---|---|---|
FALSE | READ_REGISTER_X WRITE_REGISTER_X | El código en modo de usuario realiza el acceso a memoria normal. |
TRUE | READ_PORT_X WRITE_PORT_X | No es posible. |
Valor devuelto
DxgkCbMapMemory devuelve STATUS_SUCCESS si se realiza correctamente. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.
Comentarios
El tipo de datos PHYSICAL_ADDRESS se define en Ntdef.h.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Plataforma de destino | Escritorio |
Encabezado | dispmprt.h (incluir Dispmprt.h) |
IRQL | PASSIVE_LEVEL |