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


Метод 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 (include Wudfddi.h)
DLL WUDFx.dll

См. также

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFObject

IWDFObject::RetrieveContext