IWDFDriver::CreatePreallocatedWdfMemory-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. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]
Die CreatePreallocatedWdfMemory--Methode erstellt ein Framework-Speicherobjekt für den angegebenen Puffer.
Syntax
HRESULT CreatePreallocatedWdfMemory(
[in] BYTE *pBuff,
[in] SIZE_T BufferSize,
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFMemory **ppWdfMemory
);
Parameter
[in] pBuff
Ein Zeiger auf einen vom Treiber bereitgestellten Datenpuffer für das Speicherobjekt.
[in] BufferSize
Die Größe von Daten in Bytes, auf die pBuff verweist.
[in, optional] pCallbackInterface
Ein Zeiger auf die IUnknown Schnittstelle, die vom Framework verwendet wird, um die objektbezogenen Ereignisrückruffunktionen zu bestimmen, die der Treiber für das neu erstellte Speicherobjekt abonniert. Dieser Parameter ist optional. Der Treiber kann NULL- übergeben, wenn der Treiber keine Benachrichtigung erfordert. Die IUnknown Schnittstelle wird für die Objektbereinigung und -entsorgung verwendet. Wenn der Treiber einen gültigen Zeiger übergibt, ruft das Framework QueryInterface- auf der IUnknown-schnittstelle für die IObjectCleanup--Schnittstelle auf. Wenn das Framework die IObjectCleanup Schnittstelle des Treibers abruft, kann das Framework anschließend die IObjectCleanup::OnCleanup-Methode des Treibers aufrufen, um den Treiber darüber zu informieren, dass das Speicherobjekt bereinigt wird.
[in, optional] pParentObject
Ein Zeiger auf die IWDFObject Schnittstelle für das übergeordnete Objekt des erstellten Speicherobjekts. Wenn NULL-, wird das Treiberobjekt zum übergeordneten Standardobjekt.
[out] ppWdfMemory
Ein Zeiger auf einen Puffer, der einen Zeiger auf das IWDFMemory Schnittstelle für das neu erstellte WDF-Speicherobjekt empfängt.
Rückgabewert
CreatePreallocatedWdfMemory gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode einen der Fehlercodes zurück, die in Winerror.h definiert sind.
Bemerkungen
Die CreatePreallocatedWdfMemory Methode erstellt ein Frameworkspeicherobjekt für einen Puffer, den der Treiber zuvor zugewiesen oder abgerufen hat.
Ein UMDF-Treiber kann CreatePreallocatedWdfMemory- aufrufen, wenn ein Speicherobjekt erstellt werden muss, das einen bereits vorhandenen Speicherpuffer darstellt. Beispielsweise kann der Treiber eine treiberdefinierte Struktur innerhalb eines Puffers für eine E/A-Anforderung erhalten, die einen internen E/A-Steuerungscode enthält. Der Treiber kann CreatePreallocatedWdfMemory- aufrufen, um ein Speicherobjekt zu erstellen, damit der Treiber die Struktur an ein E/A-Ziel übergeben kann.
Nachdem ein UMDF-Treiber CreatePreallocatedWdfMemoryaufgerufen hat, kann der Treiber IWDFMemory::SetBuffer aufrufen, um dem Speicherobjekt einen anderen Puffer zuzuweisen, der CreatePreallocatedWdfMemory erstellt wurde.
Wenn das Framework-Speicherobjekt, das CreatePreallocatedWdfMemory erstellt wird, gelöscht wird, führt das Framework keine Zuordnung des bereits vorhandenen Puffers durch. Ebenso führt ein Aufruf von IWDFMemory::SetBuffer keine Zuordnung des zuvor zugewiesenen Puffers durch.
Beispiele
Das folgende Codebeispiel zeigt, wie ein Speicherobjekt für einen Puffer erstellt wird.
//
// Allocate a request.
hr = wdfDevice->CreateRequest(NULL, NULL, &request);
// Allocate a buffer and wrap it in a memory object.
// Make the memory object a child of the request.
// When the request object is deleted, the memory object
// is also deleted.
if (SUCCEEDED(hr))
{
buffer = new BYTE[m_HidDescriptor->wReportLength];
if (buffer == NULL)
{
hr = E_OUTOFMEMORY;
}
}
if (SUCCEEDED(hr))
{
CComPtr<IWDFDriver> driver;
wdfDevice->GetDriver(&driver);
hr = driver->CreatePreallocatedWdfMemory(
buffer,
m_HidDescriptor->wReportLength,
NULL,
request,
&memory
);
}
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform- | Desktop |
Mindest-UMDF-Version | 1.5 |
Header- | wudfddi.h (include Wudfddi.h) |
DLL- | WUDFx.dll |