IOMMU_MAP_LOGICAL_RANGE_EX função de retorno de chamada (wdm.h)
Mapeia o espaço de endereço físico para o espaço de endereço lógico de um IOMMU_DMA_DOMAIN.
Sintaxe
IOMMU_MAP_LOGICAL_RANGE_EX IommuMapLogicalRangeEx;
NTSTATUS IommuMapLogicalRangeEx(
[in] PIOMMU_DMA_DOMAIN Domain,
[in] ULONG Permissions,
[in] PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap,
[in, optional] PIOMMU_DMA_LOGICAL_ADDRESS ExplicitLogicalAddress,
[in, optional] PIOMMU_DMA_LOGICAL_ADDRESS MinLogicalAddress,
[in, optional] PIOMMU_DMA_LOGICAL_ADDRESS MaxLogicalAddress,
[out] PIOMMU_DMA_LOGICAL_ADDRESS LogicalAddressOut
)
{...}
Parâmetros
[in] Domain
Um ponteiro para o IOMMU_DMA_DOMAIN ao qual o endereço lógico mapeado pertencerá. O domínio deve ser do tipo DomainTypeTranslate. Para obter mais informações sobre tipos de domínio, consulte IOMMU_DMA_DOMAIN_TYPE.
[in] Permissions
Um campo de bits que representa as permissões a serem definidas para o intervalo que está sendo mapeado. Consulte Comentários para obter os bits de permissão disponíveis.
[in] PhysicalAddressToMap
O IOMMU_MAP_PHYSICAL_ADDRESS que será mapeado para o domínio.
[in, optional] ExplicitLogicalAddress
O endereço lógico de domínio para o qual o endereço físico deve ser mapeado. Se o domínio não tiver sido criado com um alocador lógico registrado, esse campo será necessário. Se o domínio foi criado com um alocador lógico registrado que não dá suporte à alocação explícita de endereço lógico, esse campo deverá ser NULL.
[in, optional] MinLogicalAddress
O endereço lógico mínimo (inclusivo) permitido para o qual o endereço físico deve ser mapeado. Se o domínio não tiver sido criado com um alocador lógico registrado, esse campo será ignorado.
[in, optional] MaxLogicalAddress
O endereço lógico máximo (inclusivo) permitido para o qual o endereço físico deve ser mapeado. Se o domínio não tiver sido criado com um alocador lógico registrado, esse campo será ignorado.
[out] LogicalAddressOut
Retorna o endereço lógico resultante do mapeamento.
Retornar valor
STATUS_SUCCESS se a operação for bem-sucedida. Os valores de retorno de erro possíveis incluem os seguintes códigos de status.
Código de retorno | Descrição |
---|---|
STATUS_INVALID_PARAMETER_1 | O domínio fornecido não é do tipo DomainTypeTranslate. |
STATUS_INVALID_PARAMETER_3 | O IOMMU_MAP_PHYSICAL_ADDRESS fornecido não representa memória física alinhada à página e tem um tamanho que é um múltiplo de PAGE_SIZE. |
STATUS_INVALID_PARAMETER_4 | O ExplicitLogicalAddress fornecido não está alinhado à página. |
STATUS_INVALID_PARAMETER_MIX | Não foi possível atender aos endereços lógicos mínimos e máximos fornecidos. |
STATUS_IN_USE | O ExplicitLogicalAddress já está mapeado ou parcialmente mapeado. |
STATUS_NOT_SUPPORTED | Um ExplicitLogicalAddress foi fornecido para um domínio com um alocador lógico que não permite alocação explícita de endereço lógico. Ou um ExplicitLogicalAddress não foi fornecido para um domínio sem alocador lógico. |
Para obter mais informações, consulte Valores NTSTATUS.
Comentários
Para remover o mapa do endereço lógico criado por IOMMU_MAP_LOGICAL_RANGE_EX, use IOMMU_UNMAP_LOGICAL_RANGE; atualmente, não há equivalente a Ex para desmapeamento do intervalo de endereços lógicos.
O campo de permissões é um campo de bits que descreve as permissões de acesso para as páginas a serem mapeadas.
Os bits são definidos da seguinte maneira:
Bit 0 = Read Access
Bit 1 = Write Access
Bits 31-2 = Reserved (0)
Requisitos
Requisito | Valor |
---|---|
Servidor mínimo com suporte | Windows Server 2022 |
Cabeçalho | wdm.h (inclua Wdm.h) |