Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[Se aplica a KMDF y UMDF]
El método WdfMemoryAssignBuffer asigna un búfer especificado a un objeto de memoria que creó un controlador llamando a WdfMemoryCreatePreallocated.
Sintaxis
NTSTATUS WdfMemoryAssignBuffer(
[in] WDFMEMORY Memory,
[in] PVOID Buffer,
[in] size_t BufferSize
);
Parámetros
[in] Memory
Identificador de un objeto de memoria de marco que se obtuvo llamando a WdfMemoryCreatePreallocated.
[in] Buffer
Puntero a un búfer proporcionado por el controlador.
[in] BufferSize
Tamaño distinto de cero, en bytes, del búfer al que apunta el búfer.
Valor devuelto
WdfMemoryAssignBuffer devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:
| Código de retorno | Descripción |
|---|---|
|
Se detectó un parámetro no válido. |
Este método también puede devolver otros valores de NTSTATUS.
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Observaciones
El método puede asignar un búfer a un objeto de memoria que WdfMemoryCreatePreallocated creado, pero no a un objeto de memoria que WdfMemoryCreate creado.
El búfer al que apunta el búfer de se puede asignar desde el grupo de memoria paginable o no paginable. Si el controlador asigna el búfer del grupo paginable o si el búfer procede de un grupo paginable porque procede de una aplicación en modo de usuario, el controlador debe tener acceso al búfer solo en irQL < DISPATCH_LEVEL. (Tenga en cuenta que el EvtCleanupCallback del controlador y EvtDestroyCallback funciones de devolución de llamada, si se proporciona, se puede llamar a en IRQL <= DISPATCH_LEVEL).
Para obtener más información sobre los objetos de memoria del marco, vea Uso de búferes de memoria.
Ejemplos
En el ejemplo de código siguiente se asigna un búfer y, a continuación, se asigna el búfer a un objeto de memoria de marco.
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 |
|---|---|
| de la plataforma de destino de | Universal |
| versión mínima de KMDF | 1.0 |
| versión mínima de UMDF | 2.0 |
| encabezado | wdfmemory.h (incluya Wdf.h) |
| Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| irQL | Cualquier nivel |
| reglas de cumplimiento de DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCrea, MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |