EVT_SPB_TARGET_DISCONNECT funzione di callback (spbcx.h)

La funzione di callback dell'evento EvtSpbTargetDisconnect di un driver del controller SPB chiude una connessione a un dispositivo di destinazione aperto in precedenza da una chiamata alla funzione di callback dell'evento EvtSpbTargetConnect del driver.

Sintassi

EVT_SPB_TARGET_DISCONNECT EvtSpbTargetDisconnect;

void EvtSpbTargetDisconnect(
  [in] WDFDEVICE Controller,
  [in] SPBTARGET Target
)
{...}

Parametri

[in] Controller

Handle WDFDEVICE per l'oggetto dispositivo framework che rappresenta il controller SPB.

[in] Target

Handle SPBTARGET alla destinazione da chiudere. La destinazione è un dispositivo o una porta periferica collegata al bus. L'estensione del framework SPB (SpbCx) in precedenza ha assegnato questo handle alla destinazione nel callback EvtSpbTargetConnect che ha aperto la connessione alla destinazione.

Valore restituito

nessuno

Osservazioni

L'implementazione di questa funzione dal driver del controller SPB è facoltativa.

SpbCx gestisce la coda di I/O per il controller SPB. Se il driver del controller SPB registra una funzione di callback EvtSpbTargetDisconnect, SpbCx chiama questa funzione quando un client (driver periferico) del driver del controller invia una richiesta di IRP_MJ_CLOSE per chiudere un handle SPBTARGET. Questo handle rappresenta una connessione a un dispositivo di destinazione nel bus aperto dal client in una richiesta di IRP_MJ_CREATE precedente. Se la funzione EvtSpbTargetDisconnect restituisce un codice di errore, SpbCx ha esito negativo sulla richiesta di IRP_MJ_CLOSE .

La funzione EvtSpbTargetDisconnect viene chiamata in modo sincrono dal contesto del thread di chiusura del client dopo la fine di tutte le operazioni di I/O avviate dal client e dopo che il client ha sbloccato il controller (se il client ha bloccato in precedenza il controller).

Se il driver del controller SPB ha allocato le richieste di I/O e le ha inviate al driver inferiore successivo nella catena di richieste I/O per il dispositivo di destinazione, la funzione EvtSpbTargetDisconnect deve annullare queste richieste prima che venga restituita.

Le routine di callback DispatchCleanup e CreateProcessNotifyEx di un driver client possono essere chiamate in qualsiasi momento dopo il callback EvtSpbTargetDisconnect . Quando il processo del driver client termina, la routine CreateProcessNotifyEx viene chiamata appena prima dell'ultimo thread per uscire dal processo.

Per registrare una funzione di callback EvtSpbTargetDisconnect , chiamare il metodo SpbDeviceInitialize .

Esempio

Per definire una funzione di callback EvtSpbTargetDisconnect , è prima necessario specificare una dichiarazione di funzione che identifica il tipo di funzione di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione usando i tipi di funzione callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una funzione di callback EvtSpbTargetDisconnect denominata MyEvtSpbTargetDisconnect, usare il tipo di funzione EVT_SPB_TARGET_DISCONNECT, come illustrato nell'esempio di codice seguente:

EVT_SPB_TARGET_DISCONNECT  MyEvtSpbTargetDisconnect;

Implementare quindi la funzione di callback come indicato di seguito:

_Use_decl_annotations_
VOID
  MyEvtSpbTargetDisconnect(
    WDFDEVICE Controller,
    SPBTARGET Target
    )
{ ... }

Il tipo di funzione EVT_SPB_TARGET_DISCONNECT è definito nel file di intestazione Spbcx.h. Per identificare in modo più accurato gli errori durante l'esecuzione degli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano usate le annotazioni applicate al tipo di funzione EVT_SPB_TARGET_DISCONNECT nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver KMDF. Per altre informazioni su Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato a partire da Windows 8.
Piattaforma di destinazione Desktop
Intestazione spbcx.h
IRQL Chiamato in PASSIVE_LEVEL.

Vedi anche

EvtSpbTargetConnect

IRP_MJ_CLOSE

IRP_MJ_CREATE

SPBTARGET

SpbDeviceInitialize