Partager via


Méthode IWDFIoTarget2 ::FormatRequestForQueryInformation (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 FormatRequestForQueryInformation met en forme une demande d’E/S pour obtenir des informations sur un fichier, mais elle n’envoie pas la demande à une cible d’E/S.

Syntaxe

HRESULT FormatRequestForQueryInformation(
  [in]           IWDFIoRequest              *pRequest,
  [in]           WDF_FILE_INFORMATION_CLASS InformationClass,
  [in, optional] IWDFFile                   *pFile,
  [in, optional] IWDFMemory                 *pInformationMemory,
  [in, optional] PWDFMEMORY_OFFSET          pInformationMemoryOffset
);

Paramètres

[in] pRequest

Pointeur vers l’interface IWDFIoRequest de l’objet de requête qui représente la demande d’E/S.

[in] InformationClass

Valeur de type WDF_FILE_INFORMATION_CLASS qui spécifie le type d’informations à obtenir.

[in, optional] pFile

Pointeur vers l’interface IWDFFile de l’objet fichier associé à la demande d’E/S. Ce paramètre est requis pour les cibles d’E/S locales et distantes, et est facultatif (peut être NULL) pour les cibles d’E/S de handle de fichier.

[in, optional] pInformationMemory

Pointeur vers l’interface IWDFMemory d’un objet mémoire. Cet objet représente la mémoire tampon de sortie, qui reçoit les informations de fichier spécifiées par le paramètre InformationClass . Ce paramètre est facultatif et peut être NULL.

[in, optional] pInformationMemoryOffset

Pointeur vers une structure WDFMEMORY_OFFSET qui fournit des valeurs facultatives de décalage d’octet et de longueur. L’infrastructure utilise ces valeurs pour déterminer l’adresse de début et la longueur, dans la mémoire tampon de sortie, pour le transfert de données. Si ce pointeur a la valeur NULL, le transfert de données commence au début de la mémoire tampon de sortie et la taille du transfert correspond à la taille de la mémoire tampon.

Valeur retournée

FormatRequestForQueryInformation retourne S_OK si l’opération réussit. Sinon, la méthode peut retourner la valeur suivante :

Code de retour Description
E_OUTOFMEMORY
L’infrastructure n’a pas pu allouer de mémoire.
 

Cette méthode peut retourner l’une des autres valeurs que Winerror.h contient.

Remarques

Utilisez la méthode FormatRequestForQueryInformation , suivie de la méthode IWDFIoRequest ::Send , pour envoyer des requêtes de manière synchrone ou asynchrone à une cible d’E/S.

Exemples

L’exemple de code suivant fait partie d’une fonction de rappel IQueueCallbackDefaultIoHandler ::OnDefaultIoHandler . Si la fonction de rappel reçoit une demande d’informations de requête, elle envoie la demande à la cible d’E/S par défaut de l’appareil.

void
CMyQueue::OnDefaultIoHandler(
 IWDFIoQueue*  pQueue,
 IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    IWDFDevice *pDevice;
    IWDFIoTarget *pTarget;
    IWDFFile *pFile;
    IWDFMemory *pOutMemory;
    WDF_FILE_INFORMATION_CLASS infoClass;

    //
    // Obtain the device, default I/O target, and file object.
    //
    pQueue->GetDevice(&pDevice);
    pDevice->GetDefaultIoTarget(&pTarget);
    pRequest->GetFileObject(&pFile);

    if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;

        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        // 
        // Get the I/O request's output buffer.
        // 
        hr = pWdfRequest2->RetrieveOutputMemory(&pOutMemory);
        if (!SUCCEEDED(hr)) goto Error;

        // 
        // Get the I/O request's parameters.
        // 
        hr = pWdfRequest2->GetQueryInformationParameters(&infoClass,
                                                         NULL);
        if (!SUCCEEDED(hr)) goto Error;

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForQueryInformation(pRequest,
                                                       infoClass,
                                                       pFile,
                                                       pOutMemory,
                                                       NULL);
        if (!SUCCEEDED(hr)) goto Error;
        hr = pRequest->Send(pTarget,
                            WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                            0);
    }
...
Error;
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
    SAFE_RELEASE(pOutMemory);
}

Configuration requise

Condition requise Valeur
Fin de la prise en charge Non disponible dans UMDF 2.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
Version UMDF minimale 1,9
En-tête wudfddi.h (inclure Wudfddi.h)
DLL WUDFx.dll

Voir aussi

IWDFIoTarget2

IWDFIoTarget2 ::FormatRequestForSetInformation