Partager via


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

Syntaxe

HRESULT FormatRequestForSetInformation(
  [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 requête d’E/S.

[in] InformationClass

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

[in, optional] pFile

Pointeur vers l’interface IWDFFile de l’objet file 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 d’entrée, qui contient les informations de fichier fournies par le pilote que le paramètre InformationClass spécifie. 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’octets et de longueur. L’infrastructure utilise ces valeurs pour déterminer l’adresse et la longueur de début, dans la mémoire tampon d’entrée, 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 d’entrée, et la taille du transfert correspond à la taille de la mémoire tampon.

Valeur retournée

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

Code de retour Description
E_OUTOFMEMORY
Le framework 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 FormatRequestForSetInformation , 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 définies, 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 *pInMemory;
    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 input buffer.
        // 
        hr = pWdfRequest2->RetrieveInputMemory(&pInMemory);
        if (!SUCCEEDED(hr)) goto Error;

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

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForSetInformation(pRequest,
                                                     infoClass,
                                                     pFile,
                                                     pInMemory,
                                                     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 ::FormatRequestForQueryInformation