Метод IWDFFileHandleTargetFactory::CreateFileHandleTarget (wudfddi.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод CreateFileHandleTarget создает целевой объект ввода-вывода на основе файлов.
Синтаксис
HRESULT CreateFileHandleTarget(
[in] HANDLE hTarget,
[out] IWDFIoTarget **ppTarget
);
Параметры
[in] hTarget
Дескриптор целевого устройства. Ранее дескриптор был открыт с помощью флага FILE_FLAG_OVERLAPPED. Например, FILE_FLAG_OVERLAPPED должны быть указаны в параметре dwFlagsAndAttributes функции Microsoft Win32 CreateFile.
[out] ppTarget
Указатель на расположение, которое получает указатель на интерфейс IWDFIoTarget целевого объекта ввода-вывода.
Возвращаемое значение
CreateFileHandleTarget возвращает одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
CreateFileHandleTarget успешно создал целевой объект ввода-вывода на основе файлов. |
|
CreateFileHandleTarget возникла ошибка выделения. |
CreateFileHandleTarget также может возвращать другие значения HRESULT, определенные в Winerror.h.
Замечания
Если драйвер использует целевой объект ввода-вывода на основе файлов, раздел DDInstall.WDF INF-файла драйвера должен задать директиву UmdfDispatcher значение FileHandle. Дополнительные сведения о
После создания целевого объекта ввода-вывода на основе файлов драйвер может отформатировать запросы ввода-вывода и отправить их в целевой объект ввода-вывода. Как правило, если драйвер вызывает IWDFIoTarget::FormatRequestForRead, IWDFIoTarget::FormatRequestForWriteили IWDFIoTarget::FormatRequestForIoctl, драйвер задает параметр pFile значение NULL.
NULL приводит к использованию платформы имени файла, указанного драйвером CreateFileHandleTarget. Если драйвер
Когда драйвер вызывает IWDFIoRequest::Send для отправки запроса ввода-вывода в целевой объект ввода-вывода, драйвер не должен задать значение WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET в параметре Flags.
Дескриптор Win32, который драйвер передает в CreateFileHandleTarget, должен оставаться действительным в течение времени существования целевого объекта ввода-вывода на основе файлов. (Платформа не принимает ссылку на этот целевой дескриптор, поэтому драйвер должен убедиться, что дескриптор Win32 остается допустимым.)
Когда драйвер завершит работу с интерфейсом IWDFIoTarget
Дополнительные сведения о целевых объектах CreateFileHandleTar get и i/O см.
Примеры
В следующем примере кода показано, как создать целевой объект ввода-вывода на основе файлов для именованного канала. В этом примере m_FxDevice — это указатель интерфейса, который предоставляет IWDFDriver::CreateDevice.
HRESULT hr = S_OK;
CComPtr<IWDFFileHandleTargetFactory> pFileHandleTargetFactory;
//
// Create a pipe and get the handle.
//
m_WriteHandle = CreateNamedPipe(NP_NAME,
PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,
PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,
2,
MAX_TRANSFER_SIZE,
MAX_TRANSFER_SIZE,
1000,
NULL);
if (m_WriteHandle == INVALID_HANDLE_VALUE) {
DWORD err = GetLastError();
hr = HRESULT_FROM_WIN32(err);
}
//
// Obtain the IWDFFileHandleTargetFactory interface
// by calling IWDFDevice::QueryInterface.
//
if (SUCCEEDED(hr)) {
hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pFileHandleTargetFactory));
}
//
// Create a file handle target.
//
if (SUCCEEDED(hr)) {
hr = pFileHandleTargetFactory->CreateFileHandleTarget(m_WriteHandle,
&m_WriteTarget);
}
Требования
Требование | Ценность |
---|---|
завершение поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
целевая платформа | Настольный |
минимальная версия UMDF | 1.5 |
заголовка | wudfddi.h (include Wudfusb.h) |
DLL | WUDFx.dll |