Compartir a través de


Función StorPortAllocateDmaMemory (storport.h)

Esta función es la versión extendida de la función StorPortAllocateContiguousMemorySpecifyCacheNode. Asigna un intervalo de memoria no paginada físicamente contigua, no paginada y devuelve la dirección física del búfer asignado.

Sintaxis

ULONG StorPortAllocateDmaMemory(
  [in]           PVOID               HwDeviceExtension,
  [in]           SIZE_T              NumberOfBytes,
  [in]           PHYSICAL_ADDRESS    LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS    HighestAcceptableAddress,
  [in, optional] PHYSICAL_ADDRESS    BoundaryAddressMultiple,
  [in]           MEMORY_CACHING_TYPE CacheType,
  [in]           NODE_REQUIREMENT    PreferredNode,
  [out]          PVOID               *BufferPointer,
  [out]          PPHYSICAL_ADDRESS   PhysicalAddress
);

Parámetros

[in] HwDeviceExtension

Puntero a la extensión de dispositivo de hardware para el adaptador de bus host (HBA).

[in] NumberOfBytes

Número de bytes que se van a asignar.

[in] LowestAcceptableAddress

La dirección física más baja que es válida para la asignación. Por ejemplo, si el dispositivo solo puede hacer referencia a la memoria física en el intervalo de 8 MB a 16 MB, este valor se establecería en 0x800000 (8 MB).

[in] HighestAcceptableAddress

Dirección física más alta que es válida para la asignación. Por ejemplo, si el dispositivo solo puede hacer referencia a la memoria física por debajo de 16 MB, este valor se establecería en 0xFFFFFF (16 MB - 1).

[in, optional] BoundaryAddressMultiple

Dirección física múltiple que esta asignación no debe cruzar.

[in] CacheType

Tipo de caché deseado para la asignación.

[in] PreferredNode

Nodo preferido desde el que se debe realizar la asignación si las páginas están disponibles en ese nodo.

[out] BufferPointer

Variable que recibe la dirección inicial del bloque de memoria asignado. Tras la devolución de esta rutina, si esta variable es cero, no se encontró un intervalo contiguo para satisfacer la solicitud. Si esta variable no es NULL, contiene un puntero (por ejemplo, una dirección virtual en la parte no paginada del sistema) a la memoria físicamente contigua asignada.

[out] PhysicalAddress

Dirección física del bloque de memoria asignado.

Valor devuelto

Esta función devuelve un código STOR_STATUS.

Código devuelto Descripción
STOR_STATUS_NOT_IMPLEMENTED Esta función no se implementa en el sistema operativo activo.
STOR_STATUS_SUCCESS La operación se realizó correctamente.
STOR_STATUS_INSUFFICIENT_RESOURCES La operación no pudo asignar la memoria solicitada debido a recursos insuficientes.

Comentarios

Si se produce un error en la solicitud, BufferPointer se establecerá en NULL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10 (versión 1803)
Plataforma de destino Universal
Encabezado storport.h
Reglas de cumplimiento de DDI StorPortIrql

Consulte también

StorPortFreeDmaMemory