Condividi tramite


IOMMU_MAP_LOGICAL_RANGE_EX funzione di callback (wdm.h)

Esegue il mapping dello spazio indirizzi fisico nello spazio indirizzi logico di un IOMMU_DMA_DOMAIN.

Sintassi

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
)
{...}

Parametri

[in] Domain

Puntatore al IOMMU_DMA_DOMAIN a cui appartiene l'indirizzo logico mappato. Il dominio deve essere di tipo DomainTypeTranslate. Per altre informazioni sui tipi di dominio, vedere IOMMU_DMA_DOMAIN_TYPE.

[in] Permissions

Campo di bit che rappresenta le autorizzazioni da impostare per l'intervallo di cui viene eseguito il mapping. Per i bit di autorizzazione disponibili, vedere la sezione Note.

[in] PhysicalAddressToMap

Il IOMMU_MAP_PHYSICAL_ADDRESS di cui verrà eseguito il mapping al dominio.

[in, optional] ExplicitLogicalAddress

Indirizzo logico del dominio a cui deve essere mappato l'indirizzo fisico. Se il dominio non è stato creato con un allocatore logico registrato, questo campo è obbligatorio. Se il dominio è stato creato con un allocatore logico registrato che non supporta l'allocazione esplicita degli indirizzi logici, questo campo deve essere NULL.

[in, optional] MinLogicalAddress

Indirizzo logico minimo (inclusivo) a cui deve essere mappato l'indirizzo fisico. Se il dominio non è stato creato con un allocatore logico registrato, questo campo verrà ignorato.

[in, optional] MaxLogicalAddress

Indirizzo logico massimo (inclusivo) a cui deve essere mappato l'indirizzo fisico. Se il dominio non è stato creato con un allocatore logico registrato, questo campo verrà ignorato.

[out] LogicalAddressOut

Restituisce l'indirizzo logico risultante dal mapping.

Valore restituito

STATUS_SUCCESS se l'operazione ha esito positivo. I valori restituiti di errore possibili includono i codici di stato seguenti.

Codice restituito Descrizione
STATUS_INVALID_PARAMETER_1 Il dominio specificato non è di tipo DomainTypeTranslate.
STATUS_INVALID_PARAMETER_3 Il IOMMU_MAP_PHYSICAL_ADDRESS fornito non rappresenta la memoria fisica allineata alla pagina e ha una dimensione multipla di PAGE_SIZE.
STATUS_INVALID_PARAMETER_4 Il valore ExplicitLogicalAddress specificato non è allineato alla pagina.
STATUS_INVALID_PARAMETER_MIX Non è stato possibile soddisfare gli indirizzi logici min e max specificati.
STATUS_IN_USE ExplicitLogicalAddress è già mappato o parzialmente mappato.
STATUS_NOT_SUPPORTED È stato fornito un oggetto ExplicitLogicalAddress per un dominio con un allocatore logico che non consente l'allocazione esplicita degli indirizzi logici. In alternativa, non è stato fornito un oggetto ExplicitLogicalAddress per un dominio senza allocatore logico.

Per altre informazioni, vedere Valori NTSTATUS.

Commenti

Per rimuovere il mapping dell'indirizzo logico creato da IOMMU_MAP_LOGICAL_RANGE_EX, usare IOMMU_UNMAP_LOGICAL_RANGE; attualmente non esiste alcun equivalente ex per l'annullamento del mapping dell'intervallo di indirizzi logici.

Il campo autorizzazioni è un campo di bit che descrive le autorizzazioni di accesso per le pagine di cui eseguire il mapping.

I bit sono definiti come segue:

Bit 0 = Read Access

Bit 1 = Write Access

Bits 31-2 = Reserved (0)

Requisiti

Requisito Valore
Server minimo supportato Windows Server 2022
Intestazione wdm.h (include Wdm.h)

Vedi anche

IOMMU_DMA_DOMAIN_TYPE

IOMMU_MAP_PHYSICAL_ADDRESS

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX