Condividi tramite


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 un driver chiama CreateRequest per creare un oggetto request, non deve chiamare IWDFIoRequest::Complete per l'oggetto request. Il driver deve invece chiamare IWDFObject::D eleteWdfObject al termine dell'uso dell'oggetto request. Per altre informazioni, vedere Completamento delle richieste di I/O.

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

IWDFDevice

IWDFIoRequest

IWDFIoTarget::FormatRequestForIoctl

IWDFIoTarget::FormatRequestForRead

IWDFIoTarget::FormatRequestForWrite

IWDFObject