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


Метод IWDFObject::AssignContext (wudfddi.h)

[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.]

Метод AssignContext регистрирует контекст и предоставленную драйвером функцию обратного вызова очистки для объекта .

Синтаксис

HRESULT AssignContext(
  [in, optional] __drv_aliasesMem IObjectCleanup *pCleanupCallback,
  [in, optional] __drv_aliasesMem void           *pContext
);

Параметры

[in, optional] pCleanupCallback

Указатель на интерфейс IObjectCleanup , содержащий функцию обратного вызова очистки, которая выполняет операции очистки для объекта, если он становится недопустимым. Этот параметр является необязательным. Драйвер может передать значение NULL , если драйвер не требует уведомления о очистке объекта.

[in, optional] pContext

Указатель на регистрируемую контексту. Значение NULL является допустимым контекстом.

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

Функция AssignContext возвращает S_OK, если операция выполнена успешно. В противном случае этот метод возвращает один из кодов ошибок, определенных в Winerror.h.

Комментарии

Драйвер вызывает AssignContext , чтобы зарегистрировать контекст и запросить уведомление, когда объект становится недействительным. В вызове AssignContext драйвер передает указатель на интерфейс IObjectCleanup в параметре pCleanupCallback для регистрации IObjectCleanup. Обратите внимание, что платформа внутренне хранит ссылку на предоставленный интерфейс IObjectCleanup , пока объект является допустимым. Когда объект становится недопустимым, платформа вызывает метод IObjectCleanup::OnCleanup для уведомления драйвера. Платформа автоматически освобождает ссылку на предоставленный объект IObjectCleanup после вызова IObjectCleanup::OnCleanup.

В любой момент времени может существовать только один контекст, связанный с каждым экземпляром объекта. Попытки регистрации дополнительных контекстов завершаются ошибкой.

Контекст может быть связан только с объектом, который находится в допустимом состоянии. Например, попытка связать контекст с объектом, который находится в процессе удаления, завершается сбоем.

Так как контекст не является интерфейсом COM, драйвер не должен рассматривать контекст как таковой. Например, драйвер не может вызвать метод AddRef в контексте.

Метод IWDFObject::RetrieveContext можно использовать для получения контекста, ранее зарегистрированного с помощью AssignContext.

Примеры

Пример кода использования метода AssignContext см. в разделе IWDFIoTarget::FormatRequestForWrite.

Требования

Требование Значение
Дата окончания поддержки Недоступно в UMDF 2.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Минимальная версия UMDF 1.5
Верхняя часть wudfddi.h (включая Wudfddi.h)
DLL WUDFx.dll

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

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFObject

IWDFObject::RetrieveContext