Compartilhar via


IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE função de retorno de chamada (wdm.h)

Pré-aloca o espaço de endereço lógico que pode ser usado para mapeamentos futuros. Isso concede a um driver a capacidade de garantir o progresso para futuras chamadas de mapa/mapa.

Sintaxe

IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE IommuReserveLogicalAddressRange;

NTSTATUS IommuReserveLogicalAddressRange(
  [in]           PIOMMU_DMA_DOMAIN Domain,
  [in]           SIZE_T Size,
  [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_TOKEN *LogicalAddressToken
)
{...}

Parâmetros

[in] Domain

Um ponteiro para o IOMMU_DMA_DOMAIN ao qual o endereço lógico reservado 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] Size

O tamanho, em bytes, do intervalo de endereços lógicos a ser reservado. Esse valor deve representar um número inteiro de páginas.

[in, optional] ExplicitLogicalAddress

O endereço lógico do domínio que deve ser reservado. 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 deve ser NULL.

[in, optional] MinLogicalAddress

O endereço lógico mínimo (inclusivo) permitido que pode ser reservado. 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 que pode ser reservado. Se o domínio não tiver sido criado com um alocador lógico registrado, esse campo será ignorado.

[out] LogicalAddressToken

Retorna um IOMMU_DMA_LOGICAL_ADDRESS_TOKEN que representa o intervalo de endereços lógicos reservado.

Retornar valor

STATUS_SUCCESS se a operação for bem-sucedida. Os possíveis valores retornados por erro 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_2 O tamanho fornecido não é um múltiplo de PAGE_SIZE.
STATUS_INVALID_PARAMETER_3 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

Tokens de endereço lógico podem ser liberados por meio de IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE.

Os tokens de endereço lógico devem ter partes de seus intervalos de endereços lógicos mapeados e não mapeados de endereços físicos por meio de IOMMU_MAP_RESERVED_LOGICAL_RANGE e IOMMU_UNMAP_RESERVED_LOGICAL_RANGE.

Requisitos

Requisito Valor
Servidor mínimo com suporte Windows Server 2022
Cabeçalho wdm.h (include Wdm.h)

Confira também

IOMMU_DMA_LOGICAL_ADDRESS_TOKEN

IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE

IOMMU_MAP_RESERVED_LOGICAL_RANGE

IOMMU_UNMAP_RESERVED_LOGICAL_RANGE