IQueueCallbackCreate ::OnCreateFile, méthode (wudfddi.h)

Avertissement

UMDF 2 est la dernière version de UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide de UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et il existe une prise en charge limitée de UMDF 1 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 de UMDF.

La méthode OnCreateFile est appelée pour gérer une demande de fichier ouverte 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 que la requête arrive.

[in] pWDFRequest

Pointeur vers l’interface IWDFIoRequest pour l’objet de requête d’E/S de l’appareil.

[in] pWdfFileObject

Pointeur vers l’interface IWDFFile pour l’objet de fichier associé à l’appareil. Ces informations sont fournies par commodité, car le pilote peut appeler la méthode IWDFIoRequest ::GetCreateParameters pour obtenir l’objet de fichier.

Valeur de retour

Aucun

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 lorsque le pilote appelle la méthode IWDFDevice ::CreateIoQueue pour créer une file d’attente d’E/S ou configurer la file d’attente d’E/S par défaut.

Une méthode OnCreateFile standard peut appeler méthode IWDFObject ::AssignContext sur l’objet fichier pour associer le contexte à l’objet fichier, puis appeler IWDFIoRequest ::Complete pour terminer la requête.

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 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 les 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);
}

Exigences

Exigence Valeur
plateforme cible Windows
d’en-tête wudfddi.h (include Wudfddi.h)

Voir aussi