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.
[Solo se aplica a KMDF]
El método WdfDmaTransactionCancel intenta cancelar una transacción DMA que está esperando la asignación de registros de mapa.
Sintaxis
BOOLEAN WdfDmaTransactionCancel(
[in] WDFDMATRANSACTION DmaTransaction
);
Parámetros
[in] DmaTransaction
Identificador del objeto de transacción DMA que representa la transacción que se va a cancelar. El controlador debe haber inicializado esta transacción.
Valor devuelto
WdfDmaTransactionCancel devuelve TRUE si el marco cancela correctamente la asignación del registro de asignación. En este caso, no se completa ninguna transferencia y el marco no realiza devoluciones de llamada DMA adicionales en la transacción hasta que se vuelve a iniciar.
El método devuelve FALSE si otro subproceso ya está procesando esta transacción o si el controlador aún no ha llamado a WdfDmaTransactionExecute. En el primer caso, el marco está llamando actualmente o llamará a EvtProgramDma o EvtReserveDma. En este momento, un controlador que especificó un perfil DMA en modo del sistema podría llamar a WdfDmaTransactionStopSystemTransfer.
El método también devuelve FALSE si se llama a con una transacción asignada desde un habilitador de DMA versión 2.
Observaciones
El controlador puede llamar a WdfDmaTransactionCancel desde un EvtRequestCancel función de devolución de llamada de evento que proporciona en una llamada a WdfRequestMarkCancelableEx. Para obtener un ejemplo de código que muestre cómo hacerlo, vea WdfDmaTransactionStopSystemTransfer.
El controlador también puede llamar a WdfDmaTransactionCancel desde una función de devolución de llamada de evento EvtIoCanceledOnQueue.
La cancelación solo puede realizarse correctamente si la llamada a WdfDmaTransactionCancel se produce después de que la llamada a WdfDmaTransactionExecute, pero antes de que el método WdfDmaTransactionExecuteExecute haya iniciado la asignación DMA. Para obtener más información, vea Cancelar transacciones DMA.
El controlador debe llamar a WdfDmaTransactionCancel después de llamar a WdfDmaTransactionInitialize, pero antes de llamar a WdfDmaTransactionRelease o WdfObjectDelete para eliminar el objeto de transacción.
No llame a WdfDmaTransactionCancel después de llamar al marco EvtProgramDma o EvtReserveDma.
Un controlador debe solicitar el uso de DMA versión 3 antes de llamar a WdfDmaTransactionCancel. Para seleccionar DMA versión 3, establezca el WdmDmaVersionOverride miembro de WDF_DMA_ENABLER_CONFIG en 3.
Si un controlador llama a WdfDmaTransactionCancel en una transacción asignada desde un habilitador de DMA versión 2, el marco genera un error de comprobador y WdfDmaTransactionCancel devuelve FALSE. En este caso, no se intenta cancelar la transacción.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 8 |
de la plataforma de destino de | Universal |
versión mínima de KMDF | 1.11 |
encabezado | wdfdmatransaction.h (incluya Wdf.h) |
Biblioteca | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
irQL | <=DISPATCH_LEVEL |
reglas de cumplimiento de DDI | DriverCreate(kmdf) |