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


Метод 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 для получения объекта файла.

Возвращаемое значение

None

Remarks

Если драйвер реализует интерфейс IQueueCallbackCreate , платформа вызывает метод OnCreateFile , когда приложение открывает устройство с помощью функции Win32 CreateFile для выполнения операции ввода-вывода, например чтения из файла или записи в файл.

Драйвер регистрирует интерфейс IQueueCallbackCreate , когда драйвер вызывает метод IWDFDevice::CreateIoQueue для создания очереди ввода-вывода или настройки очереди ввода-вывода по умолчанию.

Типичный метод OnCreateFile может вызывать метод IWDFObject::AssignContext для объекта file, чтобы связать контекст с объектом файла, а затем вызывать 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);
}

Требования

Требование Значение
Целевая платформа Windows
Header wudfddi.h (включая Wudfddi.h)

См. также раздел