EVT_SPB_TARGET_DISCONNECT función de devolución de llamada (spbcx.h)
Una función de devolución de llamada de evento evtSpbTargetDisconnect del controlador SPB cierra una conexión con un dispositivo de destino que se abrió previamente mediante una llamada al EvtSpbTargetConnect del controlador función de devolución de llamada de eventos.
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 del marco que representa el controlador SPB.
[in] Target
Un de SPBTARGET al 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 el EvtSpbTargetConnect devolución de llamada que abrió la conexión al destino.
Valor devuelto
Ninguno
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 un EvtSpbTargetDisconnect función de devolución de llamada, 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.
Las rutinas de devolución de llamada DispatchClean up de un controlador de cliente y createProcessNotifyEx se pueden llamar a rutinas de devolución de llamada en cualquier momento después de que el EvtSpbTargetDisconnect devolución de llamada. Cuando se cierra el proceso del controlador cliente, se llama a su rutina CreateProcessNotifyEx justo antes de que se destruya el ú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 un EvtSpbTargetDisconnect función de devolución de llamada, 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 Análisis de código para controladores, comprobador de controladores estáticos (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 un EvtSpbTargetDisconnect función de devolución de llamada 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 rol de función para controladores kmDF. Para obtener más información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Se admite a partir de Windows 8. |
de la plataforma de destino de | Escritorio |
encabezado de | spbcx.h |
irQL | Se llama en PASSIVE_LEVEL. |