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 |