DRIVER_STARTIO funzione di callback (wdm.h)
La routine StartIo avvia l'operazione di I/O descritta da un'istanza di IRP.
Sintassi
DRIVER_STARTIO DriverStartio;
void DriverStartio(
[in, out] _DEVICE_OBJECT *DeviceObject,
[in, out] _IRP *Irp
)
{...}
Parametri
[in, out] DeviceObject
Puntatore fornito dal chiamante a una struttura DEVICE_OBJECT . Si tratta dell'oggetto dispositivo per il dispositivo di destinazione, creato in precedenza dalla routine AddDevice del driver.
[in, out] Irp
Puntatore fornito dal chiamante a una struttura IRP che descrive l'operazione di I/O richiesta.
Valore restituito
nessuno
Osservazioni
La routine StartIo di un driver viene eseguita in un contesto di thread arbitrario in IRQL = DISPATCH_LEVEL.
La routine StartIo è facoltativa. La routine StartIo di un driver, se fornita, deve essere denominata XxxStartIo, dove Xxx è un prefisso specifico del driver. La routine DriverEntry del driver deve archiviare l'indirizzo della routine StartIo in DriverObject-DriverStartIo>. Se non viene fornita alcuna routine, questo puntatore deve essere NULL.
Un driver può usare IoSetStartIoAttributes per impostare gli attributi su quando viene chiamata la routine StartIo .
Per informazioni dettagliate sull'implementazione della routine StartIo di un driver, vedere Scrittura di una routine StartIo.
Esempio
Per definire una routine di callback StartIo , è prima necessario specificare una dichiarazione di funzione che identifica il tipo di routine 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 routine di callback StartIo denominata MyStartIo
, usare il tipo di DRIVER_STARTIO, come illustrato in questo esempio di codice:
DRIVER_STARTIO MyStartIo;
Implementare quindi la routine di callback come indicato di seguito:
_Use_decl_annotations_
VOID
MyStartIo(
struct _DEVICE_OBJECT *DeviceObject,
struct _IRP *Irp
)
{
// Function body
}
Il tipo di funzione DRIVER_STARTIO è definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli 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 DRIVER_STARTIO 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 WDM. Per informazioni su _Use_decl_annotations_
, vedere Annotazione del comportamento della funzione.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | Chiamato in DISPATCH_LEVEL. |