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 :

  1. Appelez la méthode QueryInterface de l’interface IWDFDevice de l’appareil pour récupérer un pointeur vers l’interface IWDFFileHandleTargetFactory .

  2. Obtenez un handle Win32 dans un fichier, un canal nommé ou un socket en appelant la fonction Win32 CreateFile, CreateNamedPipe ou socket .

  3. 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 :

  1. Appelez IWDFDevice2::CreateRemoteTarget pour créer un objet cible distant.

  2. 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.