Função StorPortAllocateDmaMemory (storport.h)

Essa função é a versão estendida da função StorPortAllocateContiguousMemorySpecifyCacheNode. Ele aloca um intervalo de memória não armazenada em cache fisicamente contígua e nãopagada e retorna o endereço físico do buffer alocado.

Sintaxe

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

Um ponteiro para a extensão do dispositivo de hardware para o HBA (adaptador de barramento de host).

[in] NumberOfBytes

O número de bytes a serem alocados.

[in] LowestAcceptableAddress

O endereço físico mais baixo válido para a alocação. Por exemplo, se o dispositivo só puder fazer referência à memória física no intervalo de 8 MB a 16 MB, esse valor será definido como 0x800000 (8 MB).

[in] HighestAcceptableAddress

O endereço físico mais alto válido para a alocação. Por exemplo, se o dispositivo só puder fazer referência à memória física abaixo de 16 MB, esse valor será definido como 0xFFFFFF (16 MB - 1).

[in, optional] BoundaryAddressMultiple

O endereço físico múltiplo que essa alocação não deve cruzar.

[in] CacheType

O tipo de cache desejado para o mapeamento.

[in] PreferredNode

O nó preferencial do qual a alocação deve ser feita se as páginas estiverem disponíveis nesse nó.

[out] BufferPointer

A variável que recebe o endereço inicial do bloco de memória alocado. Após o retorno dessa rotina, se essa variável for zero, não foi possível encontrar um intervalo contíguo para atender à solicitação. Se essa variável não for NULL, ela conterá um ponteiro (por exemplo, um endereço virtual na parte nãopagada do sistema) para a memória fisicamente contígua alocada.

[out] PhysicalAddress

Endereço físico do bloco de memória alocado.

Retornar valor

Essa função retorna um código STOR_STATUS.

Código de retorno Descrição
STOR_STATUS_NOT_IMPLEMENTED Essa função não é implementada no sistema operacional ativo.
STOR_STATUS_SUCCESS A operação foi bem-sucedida.
STOR_STATUS_INSUFFICIENT_RESOURCES A operação falhou ao alocar a memória solicitada devido a recursos insuficientes.

Comentários

Se a solicitação falhar, BufferPointer será definido como NULL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 (versão 1803)
Plataforma de Destino Universal
Cabeçalho storport.h
Regras de conformidade de DDI StorPortIrql

Confira também

StorPortFreeDmaMemory