Méthode IQueueCallbackCreate ::OnCreateFile (wudfddi.h)

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. Pour plus d’informations, consultez Prise en main avec UMDF.

La méthode OnCreateFile est appelée pour gérer une demande de fichier ouvert lorsqu’une application ouvre un appareil via la fonction Microsoft Win32 CreateFile .

Syntaxe

void OnCreateFile(
  [in] IWDFIoQueue   *pWdfQueue,
  [in] IWDFIoRequest *pWDFRequest,
  [in] IWDFFile      *pWdfFileObject
);

Paramètres

[in] pWdfQueue

Pointeur vers l’interface IWDFIoQueue pour le formulaire d’objet file d’attente d’E/S auquel la requête arrive.

[in] pWDFRequest

Pointeur vers l’interface IWDFIoRequest pour l’objet de demande d’E/S pour l’appareil.

[in] pWdfFileObject

Pointeur vers l’interface IWDFFile pour l’objet file associé à l’appareil. Ces informations sont fournies pour des raisons pratiques, car le pilote peut appeler la méthode IWDFIoRequest ::GetCreateParameters pour obtenir l’objet file.

Valeur de retour

None

Remarques

Si le pilote implémente l’interface IQueueCallbackCreate , l’infrastructure appelle la méthode OnCreateFile lorsqu’une application ouvre un appareil via la fonction Win32 CreateFile pour effectuer une opération d’E/S, telle que la lecture ou l’écriture dans un fichier.

Un pilote inscrit l’interface IQueueCallbackCreate quand le pilote appelle la méthode IWDFDevice ::CreateIoQueue pour créer une file d’attente d’E/S ou pour configurer la file d’attente d’E/S par défaut.

Une méthode OnCreateFile classique peut appeler la méthode IWDFObject ::AssignContext sur l’objet file pour associer le contexte à l’objet file, puis appeler IWDFIoRequest ::Complete pour terminer la demande.

Un pilote UMDF peut être nécessaire pour ouvrir des clés ou des fichiers de Registre pendant qu’il emprunte l’identité d’un client qui envoie les demandes d’E/S. À partir de son implémentation de la méthode OnCreateFile , le pilote appelle la méthode IWDFIoRequest ::Impersonate pour définir un niveau d’emprunt d’identité de sécurité et pour définir la méthode IImpersonateCallback ::OnImpersonate dans laquelle le pilote gère l’emprunt d’identité. Pour accéder aux ressources nécessaires à l’aide des informations d’identification de l’utilisateur, l’infrastructure appelle la méthode OnImpersonate du pilote. Pour toutes les opérations autres que celles qui nécessitent l’emprunt d’identité, l’infrastructure appelle des méthodes de pilote qui s’exécutent sous le compte de pilote par défaut. Pour plus d’informations sur la façon dont les pilotes UMDF et UMDF gèrent l’emprunt d’identité, consultez Gestion de l’emprunt d’identité.

Exemples

Cet exemple est basé sur l’exemple WpdWudfSampleDriver et provient du fichier Queue.cpp.

STDMETHODIMP_ (void) CQueue::OnCreateFile(
/*[in]*/ IWDFIoQueue* pQueue,
/*[in]*/ IWDFIoRequest* pRequest,
/*[in]*/ IWDFFile* pFileObject
)
{
  HRESULT hr = S_OK;
  ClientContext* pClientContext = new ClientContext ();

  // . . . Code omitted.

  if(pClientContext != NULL) {
    hr = pFileObject->AssignContext (this, (void*)pClientContext);

    // Release the client context if we cannot set it

    if(FAILED(hr)) {
      pClientContext->Release();
      pClientContext = NULL;
    }
  }
  else {
    hr = E_OUTOFMEMORY;
  }

  pRequest->Complete(hr);
}

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête wudfddi.h (inclure Wudfddi.h)

Voir aussi