IOMMU_MAP_LOGICAL_RANGE_EX función de devolución de llamada (wdm.h)

Asigna el espacio de direcciones físicos al espacio de direcciones lógico de un IOMMU_DMA_DOMAIN.

Sintaxis

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

Puntero a la IOMMU_DMA_DOMAIN a la que pertenecerá la dirección lógica asignada. El dominio debe ser de tipo DomainTypeTranslate. Para obtener más información sobre los tipos de dominio, consulte IOMMU_DMA_DOMAIN_TYPE.

[in] Permissions

Campo de bits que representa los permisos que se van a establecer para el intervalo que se va a asignar. Vea Comentarios para los bits de permiso disponibles.

[in] PhysicalAddressToMap

El IOMMU_MAP_PHYSICAL_ADDRESS que se asignará al dominio.

[in, optional] ExplicitLogicalAddress

Dirección lógica de dominio a la que se debe asignar la dirección física. Si el dominio no se creó con un asignador lógico registrado, se requiere este campo. Si el dominio se creó con un asignador lógico registrado que no admite la asignación explícita de direcciones lógicas, este campo debe ser NULL.

[in, optional] MinLogicalAddress

Dirección lógica mínima (inclusiva) a la que se debe asignar la dirección física. Si el dominio no se creó con un asignador lógico registrado, este campo se omitirá.

[in, optional] MaxLogicalAddress

Dirección lógica máxima permitida (inclusiva) a la que se debe asignar la dirección física. Si el dominio no se creó con un asignador lógico registrado, este campo se omitirá.

[out] LogicalAddressOut

Devuelve la dirección lógica resultante de la asignación.

Valor devuelto

STATUS_SUCCESS si la operación se realiza correctamente. Entre los posibles valores devueltos de error se incluyen los siguientes códigos de estado.

Código devuelto Descripción
STATUS_INVALID_PARAMETER_1 El dominio proporcionado no es de tipo DomainTypeTranslate.
STATUS_INVALID_PARAMETER_3 El IOMMU_MAP_PHYSICAL_ADDRESS proporcionado no representa la memoria física alineada con páginas y tiene un tamaño que es un múltiplo de PAGE_SIZE.
STATUS_INVALID_PARAMETER_4 ExplicitLogicalAddress proporcionado no está alineado con páginas.
STATUS_INVALID_PARAMETER_MIX No se pudieron satisfacer las direcciones lógicas mínimas y máximas proporcionadas.
STATUS_IN_USE ExplicitLogicalAddress ya está asignado o parcialmente asignado.
STATUS_NOT_SUPPORTED Se proporcionó un ExplicitLogicalAddress para un dominio con un asignador lógico que no permite la asignación explícita de direcciones lógicas. O bien, no se proporcionó un explicitLogicalAddress para un dominio sin asignador lógico.

Para obtener más información, vea Valores NTSTATUS.

Comentarios

Para desasignación de la dirección lógica creada por IOMMU_MAP_LOGICAL_RANGE_EX, use IOMMU_UNMAP_LOGICAL_RANGE; actualmente no hay ningún equivalente ex para la desasignación del intervalo de direcciones lógicos.

El campo de permisos es un campo de bits que describe los permisos de acceso para las páginas que se van a asignar.

Los bits se definen de la siguiente manera:

Bit 0 = Read Access

Bit 1 = Write Access

Bits 31-2 = Reserved (0)

Requisitos

Requisito Value
Servidor mínimo compatible Windows Server 2022
Encabezado wdm.h (incluya Wdm.h)

Consulte también

IOMMU_DMA_DOMAIN_TYPE

IOMMU_MAP_PHYSICAL_ADDRESS

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX