Поделиться через


Метод 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)

См. также