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. Nessuna nuova funzionalità viene aggiunta 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, vedere Introduzione con 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 usata dal framework per determinare le funzioni di callback degli eventi correlate all'oggetto che il driver sottoscrive nell'oggetto richiesta appena creato. Questo parametro è facoltativo e, 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 IObjectCleanup del driver, il framework può successivamente chiamare il metodo IObjectCleanup::OnCleanup del driver per notificare al driver che l'oggetto richiesta viene 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 request.
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.
Commenti
Prima che un driver UMDF usi l'oggetto request creato da 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 device diventa l'oggetto padre predefinito per l'oggetto richiesta I/O appena creato. Se un driver UMDF crea un oggetto richiesta di I/O usato 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 request creato viene eliminato.
Esempio
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;
}
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
IWDFIoTarget::FormatRequestForIoctl
IWDFIoTarget::FormatRequestForRead