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.
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:
Chiamare il metodo QueryInterface dell'interfaccia IWDFDevice del dispositivo per recuperare un puntatore all'interfaccia IWDFFileHandleTargetFactory .
Ottenere un handle Win32 in un file, una named pipe o un socket chiamando la funzione Win32 CreateFile, CreateNamedPipe o socket .
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.
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:
Chiamare IWDFDevice2::CreateRemoteTarget per creare un oggetto di destinazione remoto.
Chiamare IWDFRemoteTarget::OpenFileByName (per i file) o IWDFRemoteTarget::OpenRemoteInterface (per le interfacce del dispositivo) per aprire la destinazione per le operazioni di I/O.