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.
HRESULT CreatePreallocatedWdfMemory(
[in] BYTE *pBuff,
[in] SIZE_T BufferSize,
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFMemory **ppWdfMemory
);
[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.
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.
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.
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
);
}
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 |