IWDFIoTarget2::FormatRequestForQueryInformation-Methode (wudfddi.h)
[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 für neuere Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.]
Die FormatRequestForQueryInformation-Methode formatiert eine E/A-Anforderung, um Informationen zu einer Datei abzurufen, sendet die Anforderung jedoch nicht an ein E/A-Ziel.
Syntax
HRESULT FormatRequestForQueryInformation(
[in] IWDFIoRequest *pRequest,
[in] WDF_FILE_INFORMATION_CLASS InformationClass,
[in, optional] IWDFFile *pFile,
[in, optional] IWDFMemory *pInformationMemory,
[in, optional] PWDFMEMORY_OFFSET pInformationMemoryOffset
);
Parameter
[in] pRequest
Ein Zeiger auf die IWDFIoRequest-Schnittstelle des Anforderungsobjekts, das die E/A-Anforderung darstellt.
[in] InformationClass
Ein WDF_FILE_INFORMATION_CLASS typisierter Wert, der den Typ der abzurufenden Informationen angibt.
[in, optional] pFile
Ein Zeiger auf die IWDFFile-Schnittstelle des Dateiobjekts, das der E/A-Anforderung zugeordnet ist. Dieser Parameter ist für lokale und Remote-E/A-Ziele erforderlich und optional (kann NULL sein) für Dateihandle-E/A-Ziele.
[in, optional] pInformationMemory
Ein Zeiger auf die IWDFMemory-Schnittstelle eines Speicherobjekts. Dieses Objekt stellt den Ausgabepuffer dar, der die Dateiinformationen empfängt, die der InformationClass-Parameter angibt. Dieser Parameter ist optional und kann NULL sein.
[in, optional] pInformationMemoryOffset
Ein Zeiger auf eine WDFMEMORY_OFFSET-Struktur , die optionale Byteoffset- und Längenwerte bereitstellt. Das Framework verwendet diese Werte, um die Anfangsadresse und Länge innerhalb des Ausgabepuffers für die Datenübertragung zu bestimmen. Wenn dieser Zeiger NULL ist, beginnt die Datenübertragung am Anfang des Ausgabepuffers, und die Übertragungsgröße entspricht der Puffergröße.
Rückgabewert
FormatRequestForQueryInformation gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die Methode möglicherweise den folgenden Wert zurück:
Rückgabecode | Beschreibung |
---|---|
|
Das Framework konnte keinen Arbeitsspeicher zuweisen. |
Diese Methode gibt möglicherweise einen der anderen Werte zurück, die Winerror.h enthält.
Hinweise
Verwenden Sie die FormatRequestForQueryInformation-Methode , gefolgt von der IWDFIoRequest::Send-Methode , um Anforderungen entweder synchron oder asynchron an ein E/A-Ziel zu senden.
Beispiele
Das folgende Codebeispiel ist Teil einer IQueueCallbackDefaultIoHandler::OnDefaultIoHandler-Rückruffunktion . Wenn die Rückruffunktion eine Abfrageinformationsanforderung empfängt, sendet sie die Anforderung an das Standard-E/A-Ziel des Geräts.
void
CMyQueue::OnDefaultIoHandler(
IWDFIoQueue* pQueue,
IWDFIoRequest* pRequest
)
{
HRESULT hr;
IWDFDevice *pDevice;
IWDFIoTarget *pTarget;
IWDFFile *pFile;
IWDFMemory *pOutMemory;
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 output buffer.
//
hr = pWdfRequest2->RetrieveOutputMemory(&pOutMemory);
if (!SUCCEEDED(hr)) goto Error;
//
// Get the I/O request's parameters.
//
hr = pWdfRequest2->GetQueryInformationParameters(&infoClass,
NULL);
if (!SUCCEEDED(hr)) goto Error;
//
// Format a query information request and send it to the I/O target.
//
hr = target2->FormatRequestForQueryInformation(pRequest,
infoClass,
pFile,
pOutMemory,
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);
}
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform | Desktop |
UMDF-Mindestversion | 1.9 |
Kopfzeile | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |