Metodo IWDFIoTarget2::FormatRequestForSetInformation (wudfddi.h)
[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre info, vedi Introduzione con UMDF.]
Il metodo FormatRequestForSetInformation formatta una richiesta di I/O per impostare informazioni su un file, ma non invia la richiesta a una destinazione di I/O.
Sintassi
HRESULT FormatRequestForSetInformation(
[in] IWDFIoRequest *pRequest,
[in] WDF_FILE_INFORMATION_CLASS InformationClass,
[in, optional] IWDFFile *pFile,
[in, optional] IWDFMemory *pInformationMemory,
[in, optional] PWDFMEMORY_OFFSET pInformationMemoryOffset
);
Parametri
[in] pRequest
Puntatore all'interfaccia IWDFIoRequest dell'oggetto richiesta che rappresenta la richiesta di I/O.
[in] InformationClass
Valore tipizzato WDF_FILE_INFORMATION_CLASS che specifica il tipo di informazioni da impostare.
[in, optional] pFile
Puntatore all'interfaccia IWDFFile dell'oggetto file associato alla richiesta di I/O. Questo parametro è obbligatorio per le destinazioni di I/O locali e remote ed è facoltativo (può essere NULL) per le destinazioni di I/O di gestione file.
[in, optional] pInformationMemory
Puntatore all'interfaccia IWDFMemory di un oggetto memoria. Questo oggetto rappresenta il buffer di input, che contiene informazioni sul file fornite dal driver specificate dal parametro InformationClass . Questo parametro è facoltativo e può essere NULL.
[in, optional] pInformationMemoryOffset
Puntatore a una struttura WDFMEMORY_OFFSET che fornisce valori facoltativi di offset di byte e lunghezza. Il framework usa questi valori per determinare l'indirizzo e la lunghezza iniziale, all'interno del buffer di input, per il trasferimento dei dati. Se questo puntatore è NULL, il trasferimento dei dati inizia all'inizio del buffer di input e le dimensioni del trasferimento sono le dimensioni del buffer.
Valore restituito
FormatRequestForSetInformation restituisce S_OK se l'operazione ha esito positivo. In caso contrario, il metodo potrebbe restituire il valore seguente:
Codice restituito | Descrizione |
---|---|
|
Il framework non è riuscito ad allocare memoria. |
Questo metodo potrebbe restituire uno degli altri valori contenuti da Winerror.h.
Commenti
Utilizzare il metodo FormatRequestForSetInformation , seguito dal metodo IWDFIoRequest::Send , per inviare richieste in modo sincrono o asincrono a una destinazione di I/O.
Esempio
L'esempio di codice seguente fa parte di una funzione di callback IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Se la funzione di callback riceve una richiesta di informazioni impostata, invia la richiesta alla destinazione di I/O predefinita del dispositivo.
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);
}
Requisiti
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
Piattaforma di destinazione | Desktop |
Versione UMDF minima | 1,9 |
Intestazione | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |