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