Compartir a través de


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

Asigna previamente el espacio de direcciones lógicos que se puede usar para futuras asignaciones. Esto concede a un controlador la capacidad de garantizar el progreso hacia delante para futuras llamadas de asignación o desasignación.

Sintaxis

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

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

[in] Size

Tamaño, en bytes, del intervalo de direcciones lógico que se va a reservar. Este valor debe representar un número entero de páginas.

[in, optional] ExplicitLogicalAddress

Dirección lógica de dominio que se debe reservar. 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 de direcciones lógicas explícita, este campo debe ser NULL.

[in, optional] MinLogicalAddress

Dirección lógica mínima (inclusiva) permitida que se puede reservar. Si el dominio no se creó con un asignador lógico registrado, se omitirá este campo.

[in, optional] MaxLogicalAddress

Dirección lógica máxima (inclusiva) permitida que se puede reservar. Si el dominio no se creó con un asignador lógico registrado, se omitirá este campo.

[out] LogicalAddressToken

Devuelve un IOMMU_DMA_LOGICAL_ADDRESS_TOKEN que representa el intervalo de direcciones lógicas reservado.

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_2 El tamaño proporcionado no es un múltiplo de PAGE_SIZE.
STATUS_INVALID_PARAMETER_3 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

Los tokens de dirección lógica se pueden liberar a través de IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE.

Los tokens de dirección lógica deben tener partes de sus intervalos de direcciones lógicos asignados y sin asignar desde direcciones físicas a través de IOMMU_MAP_RESERVED_LOGICAL_RANGE y IOMMU_UNMAP_RESERVED_LOGICAL_RANGE.

Requisitos

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

Consulte también

IOMMU_DMA_LOGICAL_ADDRESS_TOKEN

IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE

IOMMU_MAP_RESERVED_LOGICAL_RANGE

IOMMU_UNMAP_RESERVED_LOGICAL_RANGE