Inizializzazione di una destinazione di I/O generale in UMDF

Avviso

UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2.

Gli esempi di UMDF 1 archiviati sono disponibili nell'aggiornamento degli esempi di driver di Windows 11 versione 22H2 - Maggio 2022.

Per altre info, vedi Introduzione con UMDF.

I passaggi usati dal driver per inizializzare una destinazione di I/O generale dipendono dal fatto che la destinazione di I/O sia locale o remota.

Inizializzazione di una destinazione di I/O locale

Le destinazioni di I/O locali includono le destinazioni di I/O predefinite di un dispositivo e le destinazioni di I/O basate su handle file.

Il framework inizializza la destinazione di I/O predefinita di un driver per un dispositivo quando il driver chiama il metodo IWDFDriver::CreateDevice . Per recuperare l'interfaccia IWDFIoTarget che consente al driver di accedere alla destinazione di I/O predefinita del dispositivo, il driver chiama il metodo IWDFDevice::GetDefaultIoTarget .

La maggior parte dei driver invia richieste solo alla destinazione di I/O predefinita.

Se un driver UMDF deve inviare richieste di I/O a un'interfaccia basata su handle, ad esempio un'interfaccia socket di rete, il driver deve creare un oggetto di destinazione di I/O basato su handle file. Per creare un oggetto di destinazione di I/O basato su handle file, il driver deve eseguire le operazioni seguenti:

  1. Chiamare il metodo QueryInterface dell'interfaccia IWDFDevice del dispositivo per recuperare un puntatore all'interfaccia IWDFFileHandleTargetFactory .

  2. Ottenere un handle Win32 in un file, una named pipe o un socket chiamando la funzione Win32 CreateFile, CreateNamedPipe o socket .

  3. Chiamare il metodo IWDFFileHandleTargetFactory::CreateFileHandleTarget per creare un oggetto di destinazione di I/O basato su handle file per il file, la pipe o il socket.

Per un esempio di codice che illustra come recuperare l'interfaccia IWDFFileHandleTargetFactory , ottenere un handle Win32 e creare un oggetto di destinazione di I/O basato su handle file, vedere l'esempio di codice in IWDFFileHandleTargetFactory::CreateFileHandleTarget.

Dopo che il driver crea la destinazione di I/O basata su handle file, il driver può inviare richieste di I/O alla destinazione di I/O.

Inizializzazione di una destinazione di I/O remota

Prima che il driver possa usare una destinazione di I/O remota, deve creare un oggetto di destinazione remoto e aprire la destinazione, come indicato di seguito:

  1. Chiamare IWDFDevice2::CreateRemoteTarget per creare un oggetto di destinazione remoto.

  2. Chiamare IWDFRemoteTarget::OpenFileByName (per i file) o IWDFRemoteTarget::OpenRemoteInterface (per le interfacce del dispositivo) per aprire la destinazione per le operazioni di I/O.