Partager via


objets Driver-Created et Application-Created file

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.

Lorsqu’une application ouvre un handle sur un appareil, l’infrastructure appelle la méthode IQueueCallbackCreate::OnCreateFile de votre pilote et fournit un pointeur vers l’interface IWDFFile pour l’objet file associé à l’appareil. Toutes les demandes d’E/S que l’application envoie au handle ouvert sont associées à l’objet de fichier créé. Lorsque ces requêtes arrivent, l’infrastructure appelle la méthode appropriée à partir de l’une des interfaces d’objet de file d’attente UMDF fournies par le pilote. Le pilote peut ensuite appeler IWDFIoRequest::GetFileObject pour déterminer l’objet de fichier associé à la requête. Le pilote peut appeler AssignContext sur l’objet file pour associer un contexte spécifique à la session d’E/S.

Le tableau suivant présente les appels effectués par l’application et les notifications obtenues que le pilote reçoit.

Lancement de l’application Le pilote reçoit

Appel à la fonction CreateFile De Microsoft Win32.

Appel à sa méthode IQueueCallbackCreate::OnCreateFile .

Appel à la fonction Win32 ReadFileEx, WriteFileEx ou DeviceIoControl .

Un appel à sa méthode IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWrite ou IQueueCallbackDeviceIoControl::OnDeviceIoControl .

Appel à la fonction Win32 CloseHandle pour le dernier handle ouvert de l’objet fichier.

Appel à sa méthode IFileCallbackCleanup::OnCleanupFile .

Le pilote annule ou termine toutes les demandes d’E/S associées à l’objet file.

Une fois que le pilote est retourné à partir de la notification de nettoyage, UMDF annule toutes les demandes d’E/S en attente.

Une fois le nettoyage terminé et UMDF annule les demandes d’E/S en attente, le pilote reçoit un appel à sa méthode IFileCallbackClose::OnCloseFile .

Un composant système peut émettre une demande de création pour le compte d’une application Windows universelle. Si le pilote doit déterminer l’ID de processus de l’application qui a émis la demande de création, il peut appeler la méthode IWDFFile3::GetInitiatorProcessId .

Objets de fichier créés par le pilote

Si votre pilote doit créer et envoyer une requête d’E/S indépendante de l’application au pilote suivant dans la pile (la cible d’E/S par défaut), il doit appeler IWDFDevice::CreateWdfFile pour récupérer un pointeur vers une interface IWDFDriverCreatedFile . Dans ce cas, le pilote suivant reçoit les mêmes notifications que celles que votre pilote reçoit lorsque l’application génère la demande.

Le tableau suivant montre les appels effectués par votre pilote et les notifications résultantes au pilote suivant dans la pile.

Lancement du pilote Le pilote suivant dans la pile reçoit

Appel à la méthode IWDFDevice::CreateWdfFile .

L’objet file créé par UMDF représente une session d’E/S entre l’appareil et l’appareil suivant dans la pile.

Appel à sa méthode IQueueCallbackCreate::OnCreateFile .

Appel à la méthode IWDFDevice::CreateRequest .

Appel pour mettre en forme la demande (par exemple, un appel à la méthode IWDFIoTarget::FormatRequestForIoctl ).

Appel à la méthode IWDFIoRequest::Send .

Un appel à sa méthode IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWrite ou IQueueCallbackDeviceIoControl::OnDeviceIoControl .

Appel à la méthode IWDFDriverCreatedFile::Close .

Appel à sa méthode IFileCallbackCleanup::OnCleanupFile .

Le pilote annule ou termine toutes les demandes d’E/S associées à l’objet file.

Une fois que le pilote est retourné à partir de la notification de nettoyage, UMDF annule toutes les demandes d’E/S en attente.

Une fois le nettoyage terminé et UMDF annule les demandes d’E/S en attente, le pilote reçoit un appel à sa méthode IFileCallbackClose::OnCloseFile .

Pour l’appareil suivant de la pile, il n’existe aucune différence entre l’objet file créé par une application et l’objet fichier créé par un appareil de couche supérieure.