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ógico 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 de endereço lógico explícito, esse campo deverá 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 permitido máximo (inclusivo) 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.

Valor de retorno

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_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 Os endereços lógicos mínimos e máximos fornecidos não puderam ser atendidos.
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.

Observações

Os 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 mapeadas e não mapeadas de endereços físicos por meio de IOMMU_MAP_RESERVED_LOGICAL_RANGE e IOMMU_UNMAP_RESERVED_LOGICAL_RANGE.

Requisitos

Requisito Valor
servidor com suporte mínimo Windows Server 2022
cabeçalho wdm.h (inclua Wdm.h)

Consulte também

IOMMU_DMA_LOGICAL_ADDRESS_TOKEN

IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE

IOMMU_MAP_RESERVED_LOGICAL_RANGE

IOMMU_UNMAP_RESERVED_LOGICAL_RANGE