Função StorPortBuildScatterGatherList (storport.h)
A rotina StorPortBuildScatterGatherList cria uma lista de dispersão/coleta para o buffer de dados especificado.
Sintaxe
ULONG StorPortBuildScatterGatherList(
[in] PVOID HwDeviceExtension,
[in] PVOID Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[in] PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
[in] PVOID Context,
[in] BOOLEAN WriteToDevice,
[in, out] PVOID ScatterGatherBuffer,
[in] ULONG ScatterGatherBufferLength
);
Parâmetros
[in] HwDeviceExtension
Um ponteiro para a extensão do dispositivo de hardware para o HBA (adaptador de barramento de host).
[in] Mdl
Um ponteiro para uma MDL (lista de descritores de memória) que descreve as páginas de memória associadas ao buffer de dados.
[in] CurrentVa
O endereço virtual do buffer de dados.
[in] Length
O comprimento, em bytes, do buffer de dados.
[in] ExecutionRoutine
Um ponteiro para um ExecutionRoutine fornecido pelo miniportor. O driver storport chama essa rotina depois de criar a lista de dispersão/coleta. O driver de miniporte deve executar todas as operações que fazem uso da lista de dispersão/coleta dentro da rotina de execução, não no código que segue a chamada para a rotina StorPortBuildScatterGatherList .
Uma ExecutionRoutine é declarada da seguinte maneira:
VOID
ExecutionRoutine (
IN PVOID *DeviceObject,
IN PVOID *Irp,
IN PSTOR_SCATTER_GATHER_LIST ScatterGather,
IN PVOID Context
);
DeviceObject
Os drivers de miniport devem ignorar esse parâmetro.
Irp
Os drivers de miniport devem ignorar esse parâmetro.
ScatterGather
Um ponteiro para uma estrutura STOR_SCATTER_GATHER_LIST que contém a lista de dispersão/coleta do buffer de dados especificado.
Contexto
O valor de contexto especificado no parâmetro Context da função StorPortBuildScatterGatherList.
O driver storport chama ExecutionRoutine de um driver de miniport em IRQL = DISPATCH_LEVEL.
[in] Context
Um valor de contexto que o driver de porta passa para a rotina de execução especificada no parâmetro ExecutionRoutine . A rotina de execução usa esse valor para identificar exclusivamente a solicitação.
[in] WriteToDevice
Um valor que indica a direção da transferência de DMA. Um valor true indica uma transferência que é do buffer de dados para o dispositivo e um valor de FALSE indica uma transferência que é do dispositivo para o buffer de dados.
[in, out] ScatterGatherBuffer
Um ponteiro para um buffer fornecido pelo miniporto que recebe a lista de dispersão/coleta. Um driver de miniporte pode alocar memória para esse buffer chamando a rotina StorPortAllocatePool .
[in] ScatterGatherBufferLength
O tamanho, em bytes, do buffer apontado pelo parâmetro ScatterGatherBuffer .
Retornar valor
StorPortBuildScatterGatherList retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Essa função não é implementada no sistema operacional ativo. |
|
Indica que a rotina criou a lista de dispersão/coleta com êxito.
Importante Confira 'Comentários'.
|
|
O HwDeviceExtension passado era NULL. |
|
A chamada foi feita em um IRQL inválido. |
|
O sistema não tem registros de mapa suficientes disponíveis para a transferência. |
|
O parâmetro Length é muito grande para caber dentro do buffer. |
Comentários
O driver de miniporto chama StorPortPutScatterGatherList para liberar os recursos que StorPortBuildScatterGatherList alocou ao construir a lista de dispersão/coleta.
O driver de miniporte deve chamar StorPortPutScatterGatherList antes de liberar ou reutilização da memória alocada para a lista de dispersão/coleta.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | storport.h (inclua Storport.h) |
IRQL | DISPATCH_LEVEL |