IWDFFileHandleTargetFactory::CreateFileHandleTarget-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 CreateFileHandleTarget-Methode erstellt ein dateihandlingbasiertes E/A-Zielobjekt.
Syntax
HRESULT CreateFileHandleTarget(
[in] HANDLE hTarget,
[out] IWDFIoTarget **ppTarget
);
Parameter
[in] hTarget
Ein Handle für das Zielgerät. Das Handle muss zuvor mit dem flag FILE_FLAG_OVERLAPPED geöffnet worden sein. Beispielsweise muss FILE_FLAG_OVERLAPPED im dwFlagsAndAttributes-Parameter der Microsoft Win32 CreateFile-Funktion angegeben worden sein.
[out] ppTarget
Ein Zeiger auf eine Position, die einen Zeiger auf die IWDFIoTarget-Schnittstelle des E/A-Zielobjekts empfängt.
Rückgabewert
CreateFileHandleTarget gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
CreateFileHandleTarget hat erfolgreich ein dateihandlebasiertes E/A-Zielobjekt erstellt. |
|
Bei CreateFileHandleTarget ist ein Zuordnungsfehler aufgetreten. |
CreateFileHandleTarget gibt möglicherweise auch andere HRESULT-Werte zurück, die in Winerror.h definiert sind.
Hinweise
Wenn Ihr Treiber ein dateihandlesbasiertes E/A-Ziel verwendet, muss der Abschnitt DDInstall.WDF der INF-Datei des Treibers die UmdfDispatcher-Direktive auf FileHandle festlegen. Weitere Informationen zu UmdfDispatcher finden Sie unter Angeben von WDF-Direktiven.
Nachdem der Treiber ein dateihandlesbasiertes E/A-Zielobjekt erstellt hat, kann er E/A-Anforderungen formatieren und an das E/A-Ziel senden. Wenn der Treiber IWDFIoTarget::FormatRequestForRead, IWDFIoTarget::FormatRequestForWrite oder IWDFIoTarget::FormatRequestForIoctl aufruft, legt der Treiber den pFile-Parameter in der Regel auf NULL fest. Null bewirkt, dass das Framework den Dateinamen verwendet, den der Treiber für CreateFileHandleTarget angegeben hat. Wenn der Treiber einen pFile-Parameter ungleich NULL bereitstellt, ersetzt die angegebene Datei die Datei, die der Treiber für CreateFileHandleTarget angegeben hat. (Treiber können auch IWDFIoRequest::FormatUsingCurrentType aufrufen, um eine E/A-Anforderung zu formatieren.)
Wenn der Treiber IWDFIoRequest::Send aufruft, um die E/A-Anforderung an das E/A-Ziel zu senden, darf der Treiber den WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET Wert im Flags-Parameter nicht festlegen.
Das Win32-Handle, das der Treiber an CreateFileHandleTarget übergibt, muss für die Lebensdauer des dateihandlesbasierten E/A-Zielobjekts gültig bleiben. (Das Framework nimmt keinen Verweis auf dieses Zielhandle, daher muss Ihr Treiber sicherstellen, dass das Win32-Handle gültig bleibt.)
Wenn der Treiber die IWDFIoTarget-Schnittstelle von CreateFileHandleTarget verwendet hat, muss er die IWDFIoTarget-Schnittstelle freigeben.
Weitere Informationen zu CreateFileHandleTarget - und E/A-Zielen finden Sie unter Initialisieren eines allgemeinen E/A-Ziels in UMDF.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein dateihandlesbasiertes E/A-Ziel für eine benannte Pipe erstellen. In diesem Beispiel ist m_FxDevice der Schnittstellenzeiger, den IWDFDriver::CreateDevice bereitstellt.
HRESULT hr = S_OK;
CComPtr<IWDFFileHandleTargetFactory> pFileHandleTargetFactory;
//
// Create a pipe and get the handle.
//
m_WriteHandle = CreateNamedPipe(NP_NAME,
PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,
PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,
2,
MAX_TRANSFER_SIZE,
MAX_TRANSFER_SIZE,
1000,
NULL);
if (m_WriteHandle == INVALID_HANDLE_VALUE) {
DWORD err = GetLastError();
hr = HRESULT_FROM_WIN32(err);
}
//
// Obtain the IWDFFileHandleTargetFactory interface
// by calling IWDFDevice::QueryInterface.
//
if (SUCCEEDED(hr)) {
hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pFileHandleTargetFactory));
}
//
// Create a file handle target.
//
if (SUCCEEDED(hr)) {
hr = pFileHandleTargetFactory->CreateFileHandleTarget(m_WriteHandle,
&m_WriteTarget);
}
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform | Desktop |
UMDF-Mindestversion | 1.5 |
Kopfzeile | wudfddi.h (einschließlich Wudfusb.h) |
DLL | WUDFx.dll |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für