DXGKCB_MAP_MEMORY função de retorno de chamada (dispmprt.h)
A função DxgkCbMapMemory mapeia um intervalo de endereços físicos traduzidos (associados a um recurso de memória atribuído a um adaptador de exibição) para o espaço do sistema ou o espaço de endereço virtual de um processo de modo de usuário.
Sintaxe
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
Um identificador que representa um adaptador de exibição. O driver de miniporto de exibição obteve anteriormente esse identificador no membro DeviceHandle da estrutura DXGKRNL_INTERFACE que foi passada para DxgkDdiStartDevice.
[in] TranslatedAddress
O endereço físico traduzido base do intervalo de memória a ser mapeado. O driver de miniporto de exibição obteve esse endereço anteriormente chamando DxgkCbGetDeviceInformation.
[in] Length
O tamanho, em bytes, do intervalo a ser mapeado.
[in] InIoSpace
Um valor booliano que especifica se o intervalo está no espaço de E/S (TRUE) ou no espaço de memória (FALSE).
[in] MapToUserMode
Um valor booliano que especifica se o intervalo é mapeado para espaço no modo de usuário ou espaço do sistema. Se TRUE, o intervalo será mapeado para o espaço de endereço virtual (modo usuário) do processo atual. Se FALSE, o intervalo será mapeado para o espaço do sistema. Se InIoSpace for TRUE, esse parâmetro será ignorado.
[in] CacheType
Um enumerador MEMORY_CACHING_TYPE que especifica o comportamento de cache do intervalo mapeado.
[out] VirtualAddress
Um ponteiro para uma variável que recebe o endereço do início do intervalo mapeado. A maneira como o intervalo mapeado é acessado depende dos valores de InIoSpace e MapToUserMode. A tabela a seguir resume as diferentes maneiras pelas quais o intervalo mapeado é acessado.
Valor de InIoSpace | MapToUserMode é FALSE | MapToUserMode é TRUE |
---|---|---|
FALSE | READ_REGISTER_X WRITE_REGISTER_X | O código do modo de usuário executa o acesso à memória comum. |
TRUE | READ_PORT_X WRITE_PORT_X | Não é possível. |
Retornar valor
DxgkCbMapMemory retornará STATUS_SUCCESS se for bem-sucedido. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.
Comentários
O tipo de dados PHYSICAL_ADDRESS é definido em Ntdef.h.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | dispmprt.h (inclua Dispmprt.h) |
IRQL | PASSIVE_LEVEL |