Envío de solicitudes de E/S de forma asincrónica
Para poder enviar una solicitud de E/S de forma asincrónica a un destino de E/S, debe dar formato a la solicitud. En la tabla siguiente se enumeran los métodos de objeto de destino de E/S a los que el controlador puede llamar para dar formato a las solicitudes de E/S.
Método | Propósito |
---|---|
Da formato a una solicitud de lectura |
|
Da formato a una solicitud de escritura |
|
Da formato a una solicitud de control de dispositivo |
|
Da formato a una solicitud de control de dispositivo interna |
|
Da formato a una solicitud de control de dispositivo interno no estándar |
Para enviar una solicitud de E/S de forma asincrónica, el controlador debe:
Dar formato a la solicitud.
Use uno de los métodos enumerados en la tabla anterior para dar formato a las solicitudes. Para obtener información detallada sobre cómo usar estos métodos, consulte las páginas de referencia de los métodos.
Registre una función de devolución de llamada CompletionRoutine .
Si envía solicitudes de forma asincrónica, normalmente quiere que el marco notifique al controlador cuando otro controlador complete cada solicitud. El controlador debe definir una función de devolución de llamada CompletionRoutine y registrarla llamando a WdfRequestSetCompletionRoutine. Para obtener más información, consulte Finalización de solicitudes de E/S.
Envíe la solicitud.
Después de que el controlador dé formato a la solicitud y registre una función de devolución de llamada CompletionRoutine , el controlador debe llamar a WdfRequestSend. Este método permite enviar solicitudes de forma sincrónica o asincrónica, según las marcas establecidas en el parámetro RequestOptions . Para obtener una manera más sencilla de enviar solicitudes de E/S de forma sincrónica, consulte Envío de solicitudes de E /S de forma sincrónica. Para obtener información sobre cómo obtener el estado de finalización de una solicitud asincrónica o para cualquier solicitud que se envíe mediante una llamada a WdfRequestSend, consulte Finalización de solicitudes de E/S.
Un controlador que llama a WdfRequestSend para enviar una solicitud de E/S puede intentar cancelar la solicitud más adelante. Para obtener más información, consulte Cancelación de solicitudes de E/S.
Algunos controladores pueden enviar una única solicitud de E/S a varios dispositivos y, por tanto, a varios destinos de E/S mediante una llamada a WdfRequestSend más de una vez para cada solicitud. Estos controladores deben llamar a WdfRequestChangeTarget antes de cada llamada a WdfRequestSend después del primero para comprobar que la solicitud se puede enviar al siguiente destino de E/S.