Initialisation d’une cible d’E/S générale dans UMDF
Avertissement
UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2.
Les exemples UMDF 1 archivés sont disponibles dans la mise à jour des exemples de pilotes Windows 11, version 22H2 - Mai 2022.
Pour plus d’informations, consultez Prise en main avec UMDF.
Les étapes que votre pilote utilise pour initialiser une cible d’E/S générale varient selon que la cible d’E/S est locale ou distante.
Initialisation d’une cible d’E/S locale
Les cibles d’E/S locales incluent la cible d’E/S par défaut d’un appareil et les cibles d’E/S basées sur le handle de fichier.
Le framework initialise la cible d’E/S par défaut d’un pilote pour un appareil lorsque le pilote appelle la méthode IWDFDriver::CreateDevice . Pour récupérer l’interface IWDFIoTarget qui permet au pilote d’accéder à la cible d’E/S par défaut de l’appareil, le pilote appelle la méthode IWDFDevice::GetDefaultIoTarget .
La plupart des pilotes envoient des requêtes uniquement à leur cible d’E/S par défaut.
Si un pilote UMDF doit envoyer des demandes d’E/S à une interface basée sur un handle, telle qu’une interface de socket réseau, le pilote doit créer un objet cible d’E/S basé sur le handle de fichier. Pour créer un objet cible d’E/S basé sur un handle de fichier, le pilote doit effectuer les opérations suivantes :
Appelez la méthode QueryInterface de l’interface IWDFDevice de l’appareil pour récupérer un pointeur vers l’interface IWDFFileHandleTargetFactory .
Obtenez un handle Win32 dans un fichier, un canal nommé ou un socket en appelant la fonction Win32 CreateFile, CreateNamedPipe ou socket .
Appelez la méthode IWDFFileHandleTargetFactory::CreateFileHandleTarget pour créer un objet cible d’E/S basé sur un handle de fichier pour le fichier, le canal ou le socket.
Pour obtenir un exemple de code qui montre comment récupérer l’interface IWDFFileHandleTargetFactory , obtenir un handle Win32 et créer un objet cible d’E/S basé sur un handle de fichier, consultez l’exemple de code sur IWDFFileHandleTargetFactory::CreateFileHandleTarget.
Une fois que le pilote a créé la cible d’E/S basées sur le handle de fichier, le pilote peut envoyer des demandes d’E/S à la cible d’E/S.
Initialisation d’une cible d’E/S distante
Avant que votre pilote puisse utiliser une cible d’E/S distante, il doit créer un objet cible distant et ouvrir la cible, comme suit :
Appelez IWDFDevice2::CreateRemoteTarget pour créer un objet cible distant.
Appelez IWDFRemoteTarget::OpenFileByName (pour les fichiers) ou IWDFRemoteTarget::OpenRemoteInterface (pour les interfaces d’appareil) pour ouvrir la cible pour les opérations d’E/S.