Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avvertimento
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 possono essere trovati in Windows 11, versione 22H2 - Aggiornamento degli esempi di driver di maggio 2022.
Per altre informazioni, vedere Introduzione a 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 destinazioni di I/O basate su handle di 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 di 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 di file. Per creare un oggetto di destinazione di I/O basato su handle di file, il driver deve eseguire le operazioni seguenti:
Chiamare il metodo QueryInterface dell'interfaccia IWDFDevice del dispositivo per ottenere un puntatore all'interfaccia IWDFFileHandleTargetFactory.
Ottenere un handle Win32 per un file, un named pipe o un socket chiamando le funzioni Win32 CreateFile, CreateNamedPipeo socket.
Chiamare il metodo IWDFFileHandleTargetFactory::CreateFileHandleTarget per creare un oggetto di destinazione di I/O basato su handle di 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 di file, vedere l'esempio di codice in IWDFFileHandleTargetFactory::CreateFileHandleTarget.
Dopo che il driver crea la destinazione di I/O basata su handle di 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:
Chiamare IWDFDevice2::CreateRemoteTarget per creare un oggetto di destinazione remoto.
Chiamare IWDFRemoteTarget::OpenFileByName (per i file) o IWDFRemoteTarget::OpenRemoteInterface (per interfacce del dispositivo) per aprire la destinazione per le operazioni di I/O.