Partager via


Méthode IWDFIoTarget2 ::FormatRequestForFlush (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 FormatRequestForFlush génère une demande d’E/S pour une opération de vidage, mais n’envoie pas la demande à une cible d’E/S.

Syntaxe

HRESULT FormatRequestForFlush(
  [in]           IWDFIoRequest *pRequest,
  [in, optional] IWDFFile      *pFile
);

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, optional] pFile

Pointeur vers l’interface IWDFFile de l’objet file associé à la demande d’E/S. Ce paramètre est facultatif et peut être NULL, mais il est requis pour la cible d’E/S par défaut.

Valeur retournée

FormatRequestForFlush retourne S_OK si l’opération réussit. Sinon, la méthode peut retourner l’une des valeurs suivantes :

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

Certains pilotes doivent vider les mémoires tampons mises en cache qui existent dans un pilote inférieur ou dans le périphérique. Par exemple, les pilotes qui existent dans une pile de pilotes pour un périphérique série ou un périphérique de stockage peuvent prendre en charge cette opération.

Utilisez la méthode FormatRequestForFlush , suivie de la méthode IWDFIoRequest ::Send , pour envoyer des demandes de vidage de manière synchrone ou asynchrone.

Exemples

L’exemple de code suivant fait partie d’une fonction de rappel IQueueCallbackDefaultIoHandler ::OnDefaultIoHandler . Si la fonction de rappel reçoit une demande de vidage, 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;

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

    if (WdfRequestFlushBuffers==pRequest->GetType())
    {
        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        //
        // Format a flush request and send it to the I/O target.
        //
        hr = target2->FormatRequestForFlush(pRequest, 
                                            pFile);

        if (SUCCEEDED(hr))
        {
            hr = pRequest->Send(pTarget,
                                WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                                0);
        }
    }
...
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
}

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

IQueueCallbackDefaultIoHandler ::OnDefaultIoHandler

IWDFIoRequest ::Send

IWDFIoTarget2