EVT_SPB_TARGET_DISCONNECT función de devolución de llamada (spbcx.h)
Una función de devolución de llamada de eventos EvtSpbTargetDisconnect del controlador SPB cierra una conexión a un dispositivo de destino que se abrió anteriormente mediante una llamada a la función de devolución de llamada de eventos EvtSpbTargetConnect del controlador.
Sintaxis
EVT_SPB_TARGET_DISCONNECT EvtSpbTargetDisconnect;
void EvtSpbTargetDisconnect(
[in] WDFDEVICE Controller,
[in] SPBTARGET Target
)
{...}
Parámetros
[in] Controller
Un identificador WDFDEVICE para el objeto de dispositivo de marco que representa el controlador SPB.
[in] Target
Identificador SPBTARGET del destino que se va a cerrar. El destino es un dispositivo periférico o un puerto que está conectado al bus. La extensión de marco de SPB (SpbCx) asignó previamente este identificador al destino en la devolución de llamada EvtSpbTargetConnect que abrió la conexión al destino.
Valor devuelto
None
Observaciones
La implementación de esta función por parte del controlador SPB es opcional.
SpbCx administra la cola de E/S para el controlador SPB. Si el controlador del controlador SPB registra una función de devolución de llamada EvtSpbTargetDisconnect , SpbCx llama a esta función cuando un cliente (controlador periférico) del controlador envía una solicitud de IRP_MJ_CLOSE para cerrar un identificador SPBTARGET. Este identificador representa una conexión a un dispositivo de destino en el bus que el cliente abrió en una solicitud de IRP_MJ_CREATE anterior. Si la función EvtSpbTargetDisconnect devuelve un código de error, SpbCx produce un error en la solicitud de IRP_MJ_CLOSE .
La función EvtSpbTargetDisconnect se llama sincrónicamente desde el contexto del subproceso de cierre del cliente después de que todas las operaciones de E/S iniciadas por el cliente hayan finalizado y después de que el cliente haya desbloqueado el controlador (si el cliente ha bloqueado previamente el controlador).
Si el controlador del controlador SPB ha asignado solicitudes de E/S y las ha enviado al controlador inferior siguiente en la cadena de solicitudes de E/S para el dispositivo de destino, la función EvtSpbTargetDisconnect debe cancelar estas solicitudes antes de que se devuelva.
Se puede llamar a las rutinas de devolución de llamada DispatchCleanup y CreateProcessNotifyEx de un controlador de cliente en cualquier momento después de que se devuelva la devolución de llamada EvtSpbTargetDisconnect . Cuando se cierra el proceso del controlador cliente, se llama a su rutina CreateProcessNotifyEx justo antes del último subproceso para salir del proceso.
Para registrar una función de devolución de llamada EvtSpbTargetDisconnect , llame al método SpbDeviceInitialize .
Ejemplos
Para definir una función de devolución de llamada EvtSpbTargetDisconnect , primero debe proporcionar una declaración de función que identifique el tipo de función de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.
Por ejemplo, para definir una función de devolución de llamada EvtSpbTargetDisconnect denominada MyEvtSpbTargetDisconnect
, use el tipo de función EVT_SPB_TARGET_DISCONNECT, como se muestra en este ejemplo de código:
EVT_SPB_TARGET_DISCONNECT MyEvtSpbTargetDisconnect;
A continuación, implemente la función de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
VOID
MyEvtSpbTargetDisconnect(
WDFDEVICE Controller,
SPBTARGET Target
)
{ ... }
El tipo de función EVT_SPB_TARGET_DISCONNECT se define en el archivo de encabezado Spbcx.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función EVT_SPB_TARGET_DISCONNECT en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante tipos de roles de función para controladores KMDF. Para obtener más información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite a partir de Windows 8. |
Plataforma de destino | Escritorio |
Encabezado | spbcx.h |
IRQL | Se llama en PASSIVE_LEVEL. |