Método IWDFDevice::CreateRequest (wudfddi.h)

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]

O método CreateRequest cria um objeto de solicitação não formatado.

Sintaxe

HRESULT CreateRequest(
  [in, optional] IUnknown      *pCallbackInterface,
  [in, optional] IWDFObject    *pParentObject,
  [out]          IWDFIoRequest **ppRequest
);

Parâmetros

[in, optional] pCallbackInterface

Um ponteiro para a interface IUnknown que a estrutura usa para determinar as funções de retorno de chamada de evento relacionadas ao objeto que o driver assina no objeto de solicitação recém-criado. Esse parâmetro é opcional. O driver poderá passar NULL se o driver não exigir notificação. Se o driver passar um ponteiro válido, a estrutura chamará QueryInterface na interface IUnknown para a interface IObjectCleanup . Se a estrutura obtiver a interface IObjectCleanup do driver, a estrutura poderá chamar posteriormente o método IObjectCleanup::OnCleanup do driver para notificar o driver de que o objeto de solicitação foi limpo.

[in, optional] pParentObject

Um ponteiro para a interface IWDFObject para o objeto pai do objeto de solicitação de E/S criado. Se FOR NULL, o objeto do dispositivo se tornará o pai padrão.

[out] ppRequest

Um ponteiro para uma variável que recebe um ponteiro para a interface IWDFIoRequest para o novo objeto de solicitação.

Retornar valor

CreateRequest retornará S_OK se a operação for bem-sucedida. Caso contrário, esse método retornará um dos códigos de erro definidos em Winerror.h.

Comentários

Antes que um driver UMDF use o objeto de solicitação que CreateRequest cria, o driver deve formatar o objeto de solicitação. Para formatar um objeto de solicitação de E/S, o driver chama um dos seguintes métodos:

Se um driver chamar CreateRequest para criar um objeto de solicitação, ele não deverá chamar IWDFIoRequest::Complete para o objeto de solicitação. Em vez disso, o driver deve chamar IWDFObject::D eleteWdfObject quando terminar de usar o objeto de solicitação. Para obter mais informações, consulte Concluindo solicitações de E/S.

Se NULL for especificado no parâmetro pParentObject , o objeto do dispositivo se tornará o objeto pai padrão para o objeto de solicitação de E/S recém-criado. Se um driver UMDF criar um objeto de solicitação de E/S que o driver usa com um objeto de fila de E/S específico ou outro objeto de solicitação de E/S, o driver deverá definir esse objeto de fila ou solicitação como o objeto pai do objeto de solicitação criado. Quando o objeto pai é excluído, o objeto de solicitação criado é excluído.

Exemplos

O exemplo de código a seguir mostra como criar uma solicitação, formatar a solicitação de leitura e enviar a solicitação.

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;
}

Requisitos

Requisito Valor
Fim do suporte Indisponível no UMDF 2.0 e posterior.
Plataforma de Destino Área de Trabalho
Versão mínima do UMDF 1.5
Cabeçalho wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Confira também

IWDFDevice

IWDFIoRequest

IWDFIoTarget::FormatRequestForIoctl

IWDFIoTarget::FormatRequestForRead

IWDFIoTarget::FormatRequestForWrite

IWDFObject