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