EVT_SPB_CONTROLLER_WRITE funzione di callback (spbcx.h)
Una funzione di callback dell'evento EvtSpbControllerIoWrite del driver del controller SPB scrive i dati nel dispositivo di destinazione specificato dai buffer forniti con la richiesta di scrittura.
Sintassi
EVT_SPB_CONTROLLER_WRITE EvtSpbControllerWrite;
void EvtSpbControllerWrite(
[in] WDFDEVICE Controller,
[in] SPBTARGET Target,
[in] SPBREQUEST Request,
[in] size_t Length
)
{...}
Parametri
[in] Controller
Handle WDFDEVICE per l'oggetto dispositivo framework che rappresenta il controller SPB.
[in] Target
Handle SPBTARGET alla destinazione per questa richiesta di I/O. 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.
[in] Request
Handle SPBREQUEST alla richiesta di I/O. Il driver del controller SPB deve completare questa richiesta eseguendo l'operazione richiesta o restituendo uno stato di errore. Per altre informazioni, vedere Osservazioni.
[in] Length
Numero di byte da scrivere nel dispositivo di destinazione.
Valore restituito
nessuno
Osservazioni
SpbCx gestisce la coda di I/O per il controller SPB. SpbCx chiama la funzione di callback evtSpbControllerIoWrite del driver del controller SPB quando un client (driver periferico) del controller SPB invia una richiesta di IRP_MJ_WRITE a un dispositivo di destinazione collegato al bus. Il valore del parametro Request è un handle che incapsula questa richiesta.
Un callback EvtSpbControllerIoWrite non restituisce un valore di stato. Il driver del controller SPB indica invece lo stato dell'operazione di scrittura nello stato di completamento della richiesta di I/O.
Il callback EvtSpbControllerIoWrite è asincrono. Vale a dire, la funzione di callback deve avviare l'operazione di scrittura richiesta e quindi restituire senza attendere il completamento dell'operazione. Successivamente, il driver del controller SPB completa la richiesta di scrittura durante un DPC di interruzione o un DPC timer.
Un callback EvtSpbControllerIoWrite non restituisce un valore di stato. Il driver del controller SPB indica invece lo stato dell'operazione di scrittura nello stato di completamento della richiesta di I/O.
Se l'operazione di scrittura viene completata completamente, la funzione callback deve impostare lo stato di completamento su STATUS_SUCCESS. Se il dispositivo di destinazione indica che non può accettare altri dati prima del completamento di una trasmissione, il driver deve impostare lo stato di completamento su STATUS_SUCCESS e specificare il numero di byte trasmessi.
Se si verifica un errore di trasmissione durante l'operazione di scrittura, il driver deve impostare lo stato di completamento nella richiesta di I/O su un codice di errore appropriato. Non tutti gli autobus forniscono un meccanismo per un dispositivo di destinazione per segnalare un errore di trasporto o un trasferimento parzialmente completato e non tutti i controller possono rilevare queste condizioni.
Per registrare una funzione di callback EvtSpbControllerIoWrite , chiamare il metodo SpbDeviceInitialize .
Esempio
Per definire una funzione di callback EvtSpbControllerIoWrite , è 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 evtSpbControllerIoWrite denominata MyEvtSpbControllerIoWrite
, usare il tipo di funzione EVT_SPB_CONTROLLER_WRITE, come illustrato in questo esempio di codice:
EVT_SPB_CONTROLLER_WRITE MyEvtSpbControllerIoWrite;
Implementare quindi la funzione di callback come indicato di seguito:
_Use_decl_annotations_
VOID
MyEvtSpbControllerIoWrite(
WDFDEVICE Controller,
SPBTARGET Target,
SPBREQUEST Request,
size_t Length
)
{ ... }
Il tipo di funzione EVT_SPB_CONTROLLER_WRITE è 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_CONTROLLER_WRITE 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 IRQL <= DISPATCH_LEVEL. |