Condividi tramite


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.