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

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

IWDFDevice

IWDFIoRequest

IWDFIoTarget::FormatRequestForIoctl

IWDFIoTarget::FormatRequestForRead

IWDFIoTarget::FormatRequestForWrite

IWDFObject