Freigeben über


IWDFDriver::CreateWdfMemory-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 CreateWdfMemory--Methode erstellt ein Framework-Speicherobjekt und weist für das Speicherobjekt einen Datenpuffer der angegebenen Größe ungleich Null zu.

Syntax

HRESULT CreateWdfMemory(
  [in]           SIZE_T     BufferSize,
  [in, optional] IUnknown   *pCallbackInterface,
  [in, optional] IWDFObject *pParentObject,
  [out]          IWDFMemory **ppWdfMemory
);

Parameter

[in] BufferSize

Die in Byte angegebene Größe der Daten für den neu erstellten Datenpuffer des WDF-Speicherobjekts.

[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

CreateWdfMemory 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 CreateWdfMemory--Methode weist einen Puffer der Größe zu, die der BufferSize Parameter angibt, und erstellt ein Frameworkspeicherobjekt, das den Puffer darstellt.

Wenn NULL- im parameter pParentObject angegeben wird, wird das Treiberobjekt zum übergeordneten Standardobjekt für das neu erstellte Speicherobjekt. Wenn ein UMDF-Treiber ein Speicherobjekt erstellt, das der Treiber mit einem bestimmten Geräteobjekt, Anforderungsobjekt oder einem anderen Frameworkobjekt verwendet, sollte der Treiber das übergeordnete Objekt des Speicherobjekts entsprechend festlegen. Wenn das übergeordnete Objekt gelöscht wird, werden das Speicherobjekt und dessen Puffer gelöscht.

Ein UMDF-Treiber kann auch ein Speicherobjekt und dessen Puffer löschen, indem IWDFObject::D eleteWdfObjectaufgerufen wird.

Ein UMDF-Treiber kann kein Speicherobjekt mit einem null angegebenen Größenpuffer erstellen. Wenn ein Treiber einen null angegebenen Größenpuffer verwenden muss, sollte der Treiber stattdessen ein NULL- Speicherobjekt verwenden. Wenn der Treiber beispielsweise einen null angegebenen Größenpuffer in einer Leseanforderung verwenden muss, muss der Treiber NULL- an den pOutputMemory Parameter in einem Aufruf der IWDFIoTarget::FormatRequestForRead-Methode übergeben.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie ein Speicherobjekt erstellen, das Informationen enthalten kann, die von einem USB-Endpunkt gelesen werden.

HRESULT
CUmdfHidDevice::PrepareReader(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;
    CComPtr<IWDFDriver> wdfDriver;
    CComPtr<IWDFIoRequest> wdfRequest;

    HRESULT hr;

    GetWdfDevice(&wdfDevice);
    wdfDevice->GetDriver(&wdfDriver);

    // Open the interrupt pipe.
    hr = m_HidInterface->RetrieveUsbPipeObject(
                         USB_HID_INTERRUPT_PIPE_INDEX,
                         &m_InterruptPipe
                         );

    // Allocate a memory object to hold information that 
    // is read from the interrupt pipe. 
    // This memory object will be reused.
    if (SUCCEEDED(hr))
    {
        hr = wdfDriver->CreateWdfMemory(m_ReadBufferSize,
                                        NULL,
                                        wdfDevice,
                                        &m_ReadMemory);
    }

    return hr;
}

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

Siehe auch

IObjectCleanup-

IObjectCleanup::OnCleanup

IWDFDriver-

IWDFIoTarget::FormatRequestForRead-

IWDFMemory-

IWDFObject-

IWDFObject::D eleteWdfObject