Condividi tramite


Metodo IWDFDriver::CreateWdfMemory (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 CreateWdfMemory crea un oggetto memoria del framework e alloca, per l'oggetto memoria, un buffer di dati delle dimensioni diverse da zero specificate.

Sintassi

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

Parametri

[in] BufferSize

Dimensioni non pari a zero specificate, in byte, di dati per il buffer di dati dell'oggetto memoria WDF appena creato.

[in, optional] pCallbackInterface

Puntatore all'interfaccia IUnknown usata dal framework per determinare le funzioni di callback degli eventi correlate agli oggetti sottoscritte dal driver nell'oggetto memoria appena creato. Questo parametro è facoltativo e, Il driver può passare NULL se il driver non richiede una notifica. L'interfaccia IUnknown viene usata per la pulizia e l'eliminazione degli oggetti. Se il driver passa un puntatore valido, il framework chiamerà QueryInterface nell'interfaccia IUnknown per l'interfaccia IObjectCleanup . Se il framework ottiene l'interfaccia IObjectCleanup del driver, il framework può successivamente chiamare il metodo IObjectCleanup::OnCleanup del driver per notificare al driver che l'oggetto memoria viene pulito.

[in, optional] pParentObject

Puntatore all'interfaccia IWDFObject per l'oggetto padre dell'oggetto memoria creato. Se NULL, l'oggetto driver diventa l'elemento padre predefinito.

[out] ppWdfMemory

Puntatore a un buffer che riceve un puntatore all'interfaccia IWDFMemory per l'oggetto memoria WDF appena creato.

Valore restituito

CreateWdfMemory restituisce S_OK se l'operazione ha esito positivo. In caso contrario, questo metodo restituisce uno dei codici di errore definiti in Winerror.h.

Commenti

Il metodo CreateWdfMemory alloca un buffer delle dimensioni specificate dal parametro BufferSize e crea un oggetto memoria framework che rappresenta il buffer.

Se è specificato NULL nel parametro pParentObject , l'oggetto driver diventa l'oggetto padre predefinito per l'oggetto memoria appena creato. Se un driver UMDF crea un oggetto memoria utilizzato dal driver con un oggetto dispositivo specifico, un oggetto richiesta o un altro oggetto framework, il driver deve impostare l'oggetto padre dell'oggetto memoria in modo appropriato. Quando l'oggetto padre viene eliminato, l'oggetto memory e il relativo buffer vengono eliminati.

Un driver UMDF può anche eliminare un oggetto memoria e il relativo buffer chiamando IWDFObject::D eleteWdfObject.

Un driver UMDF non può creare un oggetto memoria con un buffer delle dimensioni specificato zero. Se un driver deve usare un buffer delle dimensioni specificato zero, il driver deve usare invece un oggetto memoria NULL . Ad esempio, se il driver deve usare un buffer di dimensioni pari a zero specificato in una richiesta di lettura, il driver deve passare NULL al parametro pOutputMemory in una chiamata al metodo IWDFIoTarget::FormatRequestForRead .

Esempio

Nell'esempio di codice seguente viene illustrato come creare un oggetto memoria in grado di contenere informazioni lette da un endpoint USB.

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;
}

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1.5
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFDriver

IWDFIoTarget::FormatRequestForRead

IWDFMemory

IWDFObject

IWDFObject::D eleteWdfObject