Compartilhar via


Função WdfMemoryCreateFromLookaside (wdfmemory.h)

[Aplica-se somente ao KMDF]

O método WdfMemoryCreateFromLookaside cria um objeto de memória de estrutura e obtém um buffer de memória de uma lista lookaside especificada.

Sintaxe

NTSTATUS WdfMemoryCreateFromLookaside(
  [in]  WDFLOOKASIDE Lookaside,
  [out] WDFMEMORY    *Memory
);

Parâmetros

[in] Lookaside

Um identificador para um objeto lookaside-list da estrutura obtido chamando WdfLookasideListCreate.

[out] Memory

Um ponteiro para um local que recebe um identificador para o novo objeto de memória da estrutura.

Retornar valor

WdfMemoryCreateFromLookaside retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método retornará um dos seguintes valores:

Código de retorno Descrição
STATUS_INVALID_PARAMETER
Um parâmetro inválido foi detectado.
STATUS_INSUFFICIENT_RESOURCES
Não havia memória suficiente.
 

Esse método também pode retornar outros valores NTSTATUS.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

Depois que o driver chama WdfLookasideListCreate para criar um objeto lookaside-list, o driver pode chamar WdfMemoryCreateFromLookaside para obter um buffer da lista lookaside.

A estrutura fornece um identificador para um objeto de memória que representa o buffer. Quando a estrutura cria o objeto de memória, ela usa atributos de objeto que o driver forneceu quando chamou WdfMemoryCreateFromLookaside.

Quando o driver terminar de usar um objeto de memória obtido de uma lista lookaside, o driver deverá chamar WdfObjectDelete para retornar o objeto de memória para a lista lookaside.

Para obter mais informações sobre objetos de memória de estrutura e listas lookaside, consulte Usando buffers de memória.

Se os buffers lookaside-list estiverem sendo alocados do pool de memória paginável, o método WdfMemoryCreateFromLookaside deverá ser chamado em IRQL <= APC_LEVEL. Caso contrário, o método pode ser chamado em IRQL <= DISPATCH_LEVEL.

Exemplos

O exemplo de código a seguir cria uma lista lookaside e armazena o identificador da lista no espaço de contexto do objeto de dispositivo definido pelo driver. Em seguida, o driver obtém um buffer da lista lookaside.

PDRIVER_CONTEXT  driverContext;
WDFMEMORY  memHandle;

driverContext = GetDriverContext(driver);

status = WdfLookasideListCreate(
                                WDF_NO_OBJECT_ATTRIBUTES,
                                sizeof(MY_LOOKASIDE_BUFFER),
                                NonPagedPool,
                                WDF_NO_OBJECT_ATTRIBUTES,
                                MY_POOL_TAG,
                                &driverContext->LookasideListHandle
                                );
...
status = WdfMemoryCreateFromLookaside(
                                      driverContext->LookasideListHandle,
                                      &memHandle
                                      );

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdfmemory.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL Consulte a seção Observações.
Regras de conformidade da DDI DriverCreate(kmdf)

Confira também

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete