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 |
---|---|
|
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 |