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 |
---|---|
|
Um parâmetro inválido foi detectado. |
|
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) |