Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[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.
Valor de retorno
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 .
Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.
Observações
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, ele usa atributos de objeto fornecidos pelo driver quando ele 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 da estrutura e listas lookaside, consulte Usando buffers de memória.
Se os buffers da lista lookaside estiverem sendo alocados do pool de memória paginável, o método WdfMemoryCreateFromLookaside deve 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
);