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)

Confira também

IOMMU_DMA_DOMAIN_TYPE

IOMMU_MAP_PHYSICAL_ADDRESS

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX