Função WdfMemoryAssignBuffer (wdfmemory.h)
[Aplica-se a KMDF e UMDF]
O método WdfMemoryAssignBuffer atribui um buffer especificado a um objeto de memória que um driver criou chamando WdfMemoryCreatePreallocated.
Sintaxe
NTSTATUS WdfMemoryAssignBuffer(
[in] WDFMEMORY Memory,
[in] PVOID Buffer,
[in] size_t BufferSize
);
Parâmetros
[in] Memory
Um identificador para um objeto de memória de estrutura que foi obtido chamando WdfMemoryCreatePreallocated.
[in] Buffer
Um ponteiro para um buffer fornecido pelo driver.
[in] BufferSize
O tamanho diferente de zero, em bytes, do buffer para o qual o Buffer aponta.
Retornar valor
WdfMemoryAssignBuffer retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro inválido foi detectado. |
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
O método pode atribuir um buffer a um objeto de memória que WdfMemoryCreatePreallocated criou, mas não a um objeto de memória que WdfMemoryCreate criou.
O buffer para o qual o parâmetro Buffer aponta pode ser alocado do pool de memória paginável ou não paginável. Se o driver alocar o buffer do pool paginável ou se o buffer for do pool paginável porque ele veio de um aplicativo no modo de usuário, o driver deverá acessar o buffer somente no IRQL < DISPATCH_LEVEL. (Observe que as funções de retorno de chamada EvtCleanupCallback e EvtDestroyCallback do driver, se fornecidas, podem ser chamadas em IRQL <= DISPATCH_LEVEL.)
Para obter mais informações sobre objetos de memória de estrutura, consulte Usando buffers de memória.
Exemplos
O exemplo de código a seguir aloca um buffer e atribui o buffer a um objeto de memória de estrutura.
PVOID pNewBuffer = NULL;
pNewBuffer = ExAllocatePoolWithTag(
NonPagedPool,
NEW_BUFFER_SIZE,
MY_DRIVER_TAG
);
if (pNewBuffer == NULL){
goto Error;
}
status = WdfMemoryAssignBuffer(
memHandle,
pNewBuffer,
NEW_BUFFER_SIZE
);
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | wdfmemory.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Qualquer nível |
Regras de conformidade de DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |