Leer en inglés

Compartir a través de


Función StorPortAllocateHostMemoryBuffer (storport.h)

StorPortAllocateHostMemoryBuffer asigna uno o varios intervalos de memoria físicamente contiguos que se usarán como búfer de memoria de host (HMB).

Sintaxis

ULONG StorPortAllocateHostMemoryBuffer(
  [in]           PVOID            HwDeviceExtension,
  [in]           SIZE_T           MinimumBytes,
  [in]           SIZE_T           PreferredBytes,
  [in]           ULONGLONG        UtilizationBytes,
  [in]           ULONG            AlignmentBytes,
  [in]           PHYSICAL_ADDRESS LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS HighestAcceptableAddress,
  [in, optional] PHYSICAL_ADDRESS BoundaryAddressMultiple,
  [in, out]      PACCESS_RANGE    PhysicalAddressRanges,
  [in, out]      PULONG           PhysicalAddressRangeCount
);

Parámetros

[in] HwDeviceExtension

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

[in] MinimumBytes

Cantidad mínima de memoria que será útil para el dispositivo, en bytes. Un valor de 0 indica que cualquier tamaño de memoria hasta el tamaño preferido es aceptable.

[in] PreferredBytes

Cantidad de memoria que prefiere el dispositivo, en bytes. Debe ser un múltiplo del tamaño de página.

[in] UtilizationBytes

Número total de bloques asignados en el dispositivo, en bytes.

[in] AlignmentBytes

Requisito de alineación del búfer de memoria del host del dispositivo.

[in] LowestAcceptableAddress

Dirección física más baja 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 inferior a 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. Este parámetro no se usa actualmente y debe establecerse en 0.

[in, out] PhysicalAddressRanges

Matriz de intervalos de direcciones físicos que componen el búfer de memoria del host. El autor de la llamada debe proporcionar una matriz asignada previamente. storPortAllocateHostMemoryBuffer rellenará la matriz con uno o varios intervalos de direcciones físicos.

[in, out] PhysicalAddressRangeCount

Número de entradas de PhysicalAddressRanges. Esta función actualizará este parámetro para indicar cuántos intervalos de direcciones físicos ha rellenado.

Valor devuelto

storPortAllocateHostMemoryBuffer devuelve uno de los siguientes códigos de estado:

Código devuelto Descripción
STOR_STATUS_SUCCESS La matriz de PhysicalAddressRanges contiene uno o varios intervalos de direcciones físicos válidos que representan el búfer de memoria del host.
STOR_STATUS_INVALID_PARAMETER Esto podría indicar un valor mínimo mayor que un valor máximo, un tamaño no alineado con páginas o que PhysicalAddressRanges está vacío.
STOR_STATUS_INSUFFICIENT_RESOURCES No se pudo asignar el búfer de memoria del host.

Observaciones

HMB es la memoria que el dispositivo puede usar directamente y exclusivamente. Sin embargo, el dispositivo puede usar esta memoria, pero debe asegurarse de que no haya pérdida de datos o daños en los datos en caso de una eliminación sorpresa o pérdida de energía inesperada.

En función de la directiva de asignación, esta función puede asignar tanto como el tamaño preferido del dispositivo, tan poco como el tamaño mínimo del dispositivo o ninguna memoria en absoluto.

Esta función intentará asignar tan pocos intervalos de direcciones físicamente contiguos como sea posible, pero puede que tenga que usar varios intervalos de direcciones físicos para satisfacer el tamaño de HMB deseado.

El autor de la llamada debe llamar posteriormente a storPortFreeHostMemoryBuffer cuando se realiza con el búfer de memoria del host.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de storport.h (incluya Storport.h)

Consulte también

StorPortFreeHostMemoryBuffer