Metodo IWDFDevice::CreateRequest (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 CreateRequest crea un oggetto richiesta non formattato.
Sintassi
HRESULT CreateRequest(
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFIoRequest **ppRequest
);
Parametri
[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 richiesta appena creato. Questo parametro è facoltativo. Il driver può passare NULL se il driver non richiede la notifica. Se il driver passa un puntatore valido, il framework chiamerà queryInterface nell'interfaccia IUnknown per l'interfaccia IObjectCleanup. Se il framework ottiene l'interfaccia di IObjectCleanup del driver, il framework può successivamente chiamare il metodo IObjectCleanup::OnCleanup del driver per notificare al driver che l'oggetto richiesta è stato pulito.
[in, optional] pParentObject
Puntatore all'interfaccia IWDFObject per l'oggetto padre dell'oggetto richiesta di I/O creato. Se NULL, l'oggetto dispositivo diventa l'elemento padre predefinito.
[out] ppRequest
Puntatore a una variabile che riceve un puntatore all'interfaccia IWDFIoRequest per il nuovo oggetto richiesta.
Valore restituito
CreateRequest 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
Prima che un driver UMDF usi l'oggetto richiesta creato CreateRequest, il driver deve formattare l'oggetto richiesta. Per formattare un oggetto richiesta di I/O, il driver chiama uno dei metodi seguenti:
Se NULL viene specificato nel parametro pParentObject, l'oggetto dispositivo diventa l'oggetto padre predefinito per l'oggetto richiesta di I/O appena creato. Se un driver UMDF crea un oggetto richiesta di I/O utilizzato dal driver con un oggetto coda di I/O specifico o un altro oggetto richiesta di I/O, il driver deve impostare tale oggetto coda o richiesta come oggetto padre dell'oggetto richiesta creato. Quando l'oggetto padre viene eliminato, l'oggetto richiesta creato viene eliminato.
Esempi
Nell'esempio di codice seguente viene illustrato come creare una richiesta, formattare la richiesta di lettura e inviare la richiesta.
HRESULT
CUmdfHidDevice::SendInterruptPipeRead(
VOID
)
{
CComPtr<IWDFDevice> wdfDevice;
HRESULT hr;
IWDFFile *pTargetFile = NULL;
// Allocate a new WDF request to send on the interrupt pipe.
GetWdfDevice(&wdfDevice);
hr = wdfDevice->CreateRequest(
static_cast<IObjectCleanup*>(this),
wdfDevice,
&m_InterruptReadRequest
);
if (SUCCEEDED(hr))
{
m_InterruptPipe->GetTargetFile(&pTargetFile);
hr = m_InterruptPipe->FormatRequestForRead(
m_InterruptReadRequest,
pTargetFile,
m_ReadMemory,
NULL,
NULL
);
}
// Issue the read to the pipe.
if (SUCCEEDED(hr))
{
hr = m_InterruptReadRequest->Send(m_InterruptPipe, 0, 0);
}
return hr;
}
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
IWDFIoTarget::FormatRequestForIoctl
IWDFIoTarget::FormatRequestForRead