Метод IWDFDevice::CreateRequest (wudfddi.h)
[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.]
Метод CreateRequest создает объект неформатированного запроса.
Синтаксис
HRESULT CreateRequest(
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFIoRequest **ppRequest
);
Параметры
[in, optional] pCallbackInterface
Указатель на интерфейс IUnknown , который платформа использует для определения функций обратного вызова событий, связанных с объектом, на которые драйвер подписывается во вновь созданном объекте запроса. Этот параметр является необязательным. Драйвер может передать значение NULL , если драйвер не требует уведомления. Если драйвер передает допустимый указатель, платформа вызывает QueryInterface в интерфейсе IUnknown для интерфейса IObjectCleanup . Если платформа получает интерфейс IObjectCleanup драйвера, платформа может впоследствии вызвать метод IObjectCleanup::OnCleanup драйвера, чтобы уведомить драйвер о том, что объект запроса очищен.
[in, optional] pParentObject
Указатель на интерфейс IWDFObject для родительского объекта созданного объекта запроса ввода-вывода. Если значение РАВНО NULL, объект устройства становится родительским по умолчанию.
[out] ppRequest
Указатель на переменную, которая получает указатель на интерфейс IWDFIoRequest для нового объекта запроса.
Возвращаемое значение
CreateRequest возвращает S_OK, если операция выполнена успешно. В противном случае этот метод возвращает один из кодов ошибок, определенных в Winerror.h.
Комментарии
Прежде чем драйвер UMDF использует объект запроса, создаваемый CreateRequest , драйвер должен отформатировать объект запроса. Чтобы отформатировать объект запроса ввода-вывода, драйвер вызывает один из следующих методов:
Если в параметре pParentObject указано значение NULL, объект device становится родительским объектом по умолчанию для вновь созданного объекта запроса ввода-вывода. Если драйвер UMDF создает объект запроса ввода-вывода, который драйвер использует с определенным объектом очереди ввода-вывода или другим объектом запроса ввода-вывода, драйвер должен задать этот объект очереди или запроса в качестве родительского объекта созданного объекта запроса. При удалении родительского объекта удаляется созданный объект запроса.
Примеры
В следующем примере кода показано, как создать запрос, отформатировать запрос на чтение и отправить запрос.
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;
}
Требования
Требование | Значение |
---|---|
Дата окончания поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Минимальная версия UMDF | 1.5 |
Верхняя часть | wudfddi.h (включая Wudfddi.h) |
DLL | WUDFx.dll |
См. также раздел
IWDFIoTarget::FormatRequestForIoctl
IWDFIoTarget::FormatRequestForRead