Método IWDFDevice::CreateRequest (wudfddi.h)
[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.
El método CreateRequest crea un objeto de solicitud sin formato.
Sintaxis
HRESULT CreateRequest(
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFIoRequest **ppRequest
);
Parámetros
[in, optional] pCallbackInterface
Puntero a la interfaz IUnknown que usa el marco para determinar las funciones de devolución de llamada de eventos relacionadas con objetos a las que se suscribe el controlador en el objeto de solicitud recién creado. Este parámetro es opcional. El controlador puede pasar NULL si el controlador no requiere notificación. Si el controlador pasa un puntero válido, el marco llamará a QueryInterface en la interfaz IUnknown para la interfaz IObjectCleanup . Si el marco obtiene la interfaz IObjectCleanup del controlador, el marco puede llamar posteriormente al método IObjectCleanup::OnCleanup del controlador para notificar al controlador que se limpia el objeto de solicitud.
[in, optional] pParentObject
Puntero a la interfaz IWDFObject del objeto primario del objeto de solicitud de E/S creado. Si es NULL, el objeto de dispositivo se convierte en el elemento primario predeterminado.
[out] ppRequest
Puntero a una variable que recibe un puntero a la interfaz IWDFIoRequest del nuevo objeto de solicitud.
Valor devuelto
CreateRequest devuelve S_OK si la operación se realiza correctamente. De lo contrario, este método devuelve uno de los códigos de error definidos en Winerror.h.
Comentarios
Antes de que un controlador UMDF use el objeto de solicitud que crea CreateRequest , el controlador debe dar formato al objeto de solicitud. Para dar formato a un objeto de solicitud de E/S, el controlador llama a uno de los métodos siguientes:
Si se especifica NULL en el parámetro pParentObject , el objeto device se convierte en el objeto primario predeterminado para el objeto de solicitud de E/S recién creado. Si un controlador UMDF crea un objeto de solicitud de E/S que el controlador usa con un objeto de cola de E/S específico u otro objeto de solicitud de E/S, el controlador debe establecer esa cola o objeto de solicitud como objeto primario del objeto de solicitud creado. Cuando se elimina el objeto primario, se elimina el objeto de solicitud creado.
Ejemplos
En el ejemplo de código siguiente se muestra cómo crear una solicitud, dar formato a la solicitud de lectura y enviar la solicitud.
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 | Value |
---|---|
Finalización del soporte técnico | No disponible en UMDF 2.0 y versiones posteriores. |
Plataforma de destino | Escritorio |
Versión mínima de UMDF | 1.5 |
Encabezado | wudfddi.h (incluya Wudfddi.h) |
Archivo DLL | WUDFx.dll |
Consulte también
IWDFIoTarget::FormatRequestForIoctl
IWDFIoTarget::FormatRequestForRead