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