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) |