Метод IQueueCallbackCreate::OnCreateFile (wudfddi.h)
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы сUMDF.
Метод OnCreateFile вызывается для обработки открытого запроса файла, когда приложение открывает устройство через функцию Microsoft Win32 CreateFile.
Синтаксис
void OnCreateFile(
[in] IWDFIoQueue *pWdfQueue,
[in] IWDFIoRequest *pWDFRequest,
[in] IWDFFile *pWdfFileObject
);
Параметры
[in] pWdfQueue
Указатель на интерфейс IWDFIoQueue для формы объекта очереди ввода-вывода, который поступает запрос.
[in] pWDFRequest
Указатель на интерфейс IWDFIoRequest для объекта запроса ввода-вывода для устройства.
[in] pWdfFileObject
Указатель на интерфейс IWDFFile для объекта файла, связанного с устройством. Эти сведения предоставляются для удобства, так как драйвер может вызывать метод IWDFIoRequest::GetCreateParameters для получения объекта файла.
Возвращаемое значение
Никакой
Замечания
Если драйвер реализует интерфейс IQueueCallbackCreate, платформа вызывает метод OnCreateFile, когда приложение открывает устройство через функцию CreateFile Win32, например чтение или запись в файл.
Драйвер регистрирует интерфейс IQueueCallbackCreate, когда драйвер вызывает метод IWDFDevice::CreateIoQueue для создания очереди ввода-вывода или настройки очереди ввода-вывода по умолчанию.
Типичный метод OnCreateFile может вызывать метод IWDFObject::AssignContext для связывания контекста с объектом файла, а затем вызвать метод IWDFIoRequest::Complete для завершения запроса.
Драйвер UMDF может потребоваться для открытия разделов реестра или файлов во время олицетворения клиента, отправляющего запросы ввода-вывода. Из реализации метода OnCreateFile драйвер вызывает метод IWDFIoRequest::Impersonate, чтобы задать уровень олицетворения безопасности и задать метод IImpersonateCallback::OnImpersonate, в котором драйвер обрабатывает олицетворение. Чтобы получить доступ к необходимым ресурсам с помощью учетных данных пользователя, платформа вызывает метод onImpersonate драйвера. Для любых операций, отличных от операций, требующих олицетворения, платформа вызывает методы драйверов, выполняемые под учетной записью драйвера по умолчанию. Дополнительные сведения о том, как драйверы UMDF и UMDF обрабатывают олицетворение, см. в разделе Обработка олицетворения.
Примеры
Этот пример основан на примере WpdWudfSampleDriver и находится в файле Queue.cpp.
STDMETHODIMP_ (void) CQueue::OnCreateFile(
/*[in]*/ IWDFIoQueue* pQueue,
/*[in]*/ IWDFIoRequest* pRequest,
/*[in]*/ IWDFFile* pFileObject
)
{
HRESULT hr = S_OK;
ClientContext* pClientContext = new ClientContext ();
// . . . Code omitted.
if(pClientContext != NULL) {
hr = pFileObject->AssignContext (this, (void*)pClientContext);
// Release the client context if we cannot set it
if(FAILED(hr)) {
pClientContext->Release();
pClientContext = NULL;
}
}
else {
hr = E_OUTOFMEMORY;
}
pRequest->Complete(hr);
}
Требования
Требование | Ценность |
---|---|
целевая платформа | Виндоус |
заголовка | wudfddi.h (include Wudfddi.h) |