Leggere in inglese

Condividi tramite


Metodo IWDFDriver::CreatePreallocatedWdfMemory (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 informazioni, vedi Introduzione a UMDF.]

Il metodo CreatePreallocatedWdfMemory crea un oggetto memoria framework per il buffer specificato.

Sintassi

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

Parametri

[in] pBuff

Puntatore a un buffer di dati fornito dal driver per l'oggetto memoria.

[in] BufferSize

Dimensioni, in byte, di dati a cui pBuff punta.

[in, optional] pCallbackInterface

Puntatore all'interfaccia IUnknown utilizzata dal framework per determinare le funzioni di callback degli eventi correlate all'oggetto sottoscritte dal driver nell'oggetto memoria appena creato. Questo parametro è facoltativo. Il driver può passare NULL se il driver non richiede la 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 del driver, il framework può successivamente chiamare il metodo IObjectCleanup::OnCleanup del driver per notificare al driver che l'oggetto memoria è stato 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 alla interfaccia IWDFMemory per l'oggetto memoria WDF appena creato.

Valore restituito

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

Osservazioni

Il metodo CreatePreallocatedWdfMemory crea un oggetto memoria del framework per un buffer allocato o ottenuto in precedenza dal driver.

Un driver UMDF può chiamare CreatePreallocatedWdfMemory se deve creare un oggetto memoria che rappresenta un buffer di memoria preesistente. Ad esempio, il driver potrebbe ricevere una struttura definita dal driver all'interno di un buffer per una richiesta di I/O contenente un codice di controllo di I/O interno. Il driver può chiamare CreatePreallocatedWdfMemory per creare un oggetto memoria in modo che il driver possa passare la struttura a una destinazione di I/O.

Dopo che un driver UMDF chiama CreatePreallocatedWdfMemory, il driver può chiamare IWDFMemory::SetBuffer per assegnare un buffer diverso all'oggetto memoria che CreatePreallocatedWdfMemory creato.

Quando l'oggetto memoria del framework che CreatePreallocatedWdfMemory creato viene eliminato, il framework non dealloca il buffer preesistente. Analogamente, una chiamata a IWDFMemory::SetBuffer non dealloca il buffer assegnato in precedenza.

Esempi

Nell'esempio di codice seguente viene illustrato come creare un oggetto memoria per un buffer.

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

Fabbisogno

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
piattaforma di destinazione Desktop
versione minima di UMDF 1.5
intestazione wudfddi.h (include Wudfddi.h)
dll WUDFx.dll

Vedere anche

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFDriver

IWDFMemory

IWDFMemory::SetBuffer

IWDFObject