Partager via


IWDFDevice ::CreateRequest, 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 Bien démarrer avec UMDF.]

La méthode CreateRequest crée un objet de requête non mis en forme.

Syntaxe

HRESULT CreateRequest(
  [in, optional] IUnknown      *pCallbackInterface,
  [in, optional] IWDFObject    *pParentObject,
  [out]          IWDFIoRequest **ppRequest
);

Paramètres

[in, optional] pCallbackInterface

Pointeur vers l’interface IUnknown utilisée par l’infrastructure pour déterminer les fonctions de rappel d’événements liées à l’objet auxquelles le pilote s’abonne sur l’objet de requête nouvellement créé. Ce paramètre est facultatif. Le pilote peut passer NULL si le pilote n’a pas besoin de notification. Si le pilote transmet un pointeur valide, l’infrastructure appelle QueryInterface sur l’interface IUnknown pour l’interface IObjectCleanup. Si l’infrastructure obtient l’interface IObjectCleanup du pilote, l’infrastructure peut ensuite appeler la méthode IObjectCleanup ::OnCleanup du pilote pour informer le pilote que l’objet de requête est nettoyé.

[in, optional] pParentObject

Pointeur vers l’interface IWDFObject pour l’objet parent de l’objet de requête d’E/S créé. Si NULL, l’objet d’appareil devient le parent par défaut.

[out] ppRequest

Pointeur vers une variable qui reçoit un pointeur vers l’interface IWDFIoRequest pour le nouvel objet de requête.

Valeur de retour

CreateRequest retourne S_OK si l’opération réussit. Sinon, cette méthode retourne l’un des codes d’erreur définis dans Winerror.h.

Remarques

Avant qu’un pilote UMDF utilise l’objet de requête qui CreateRequest crée, le pilote doit mettre en forme l’objet de requête. Pour mettre en forme un objet de requête d’E/S, le pilote appelle l’une des méthodes suivantes :

Si un pilote appelle CreateRequest pour créer un objet de requête, il ne doit pas appeler IWDFIoRequest ::Complete pour l’objet de requête. Au lieu de cela, le pilote doit appeler IWDFObject ::D eleteWdfObject lorsqu’il a terminé d’utiliser l’objet de requête. Pour plus d’informations, consultez Fin des requêtes d’E/S.

Si NULL est spécifié dans le paramètre pParentObject, l’objet d’appareil devient l’objet parent par défaut de l’objet de requête d’E/S nouvellement créé. Si un pilote UMDF crée un objet de requête d’E/S que le pilote utilise avec un objet de file d’attente d’E/S spécifique ou un autre objet de requête d’E/S, le pilote doit définir cet objet de file d’attente ou de requête comme objet parent de l’objet de requête créé. Lorsque l’objet parent est supprimé, l’objet de demande créé est supprimé.

Exemples

L’exemple de code suivant montre comment créer une demande, mettre en forme la demande de lecture et envoyer la demande.

HRESULT
CUmdfHidDevice::SendInterruptPipeRead(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;

    HRESULT hr;

    IWDFFile *pTargetFile = NULL;

    // Allocate a new WDF request to send on the interrupt pipe.
    GetWdfDevice(&wdfDevice);
    hr = wdfDevice->CreateRequest(
                                  static_cast<IObjectCleanup*>(this), 
                                  wdfDevice, 
                                  &m_InterruptReadRequest
                                  );

    if (SUCCEEDED(hr))
    {
        m_InterruptPipe->GetTargetFile(&pTargetFile);
        hr = m_InterruptPipe->FormatRequestForRead(
                                                   m_InterruptReadRequest,
                                                   pTargetFile,
                                                   m_ReadMemory,
                                                   NULL,
                                                   NULL
                                                   );
    }

    // Issue the read to the pipe.
    if (SUCCEEDED(hr))
    {
        hr = m_InterruptReadRequest->Send(m_InterruptPipe, 0, 0);
    }

    return hr;
}

Exigences

Exigence Valeur
fin du support Indisponible dans UMDF 2.0 et versions ultérieures.
plateforme cible Bureau
version minimale de UMDF 1.5
d’en-tête wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Voir aussi

IWDFDevice

IWDFIoRequest

IWDFIoTarget ::FormatRequestForIoctl

IWDFIoTarget ::FormatRequestForRead

IWDFIoTarget ::FormatRequestForWrite

IWDFObject