Функция ObReferenceObjectByPointer (wdm.h)
Подпрограмма ObReferenceObjectByPointer увеличивает количество ссылок указателя для заданного объекта.
Синтаксис
NTSTATUS ObReferenceObjectByPointer(
[in] PVOID Object,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_TYPE ObjectType,
[in] KPROCESSOR_MODE AccessMode
);
Параметры
[in] Object
Указатель на тело объекта.
[in] DesiredAccess
Задает маску, представляющую запрошенный доступ к объекту .
[in, optional] ObjectType
Указатель на тип объекта. ObjectType может иметь значение *ExEventObjectType, *ExSemaphoreObjectType, *IoFileObjectType, *PsProcessType, *PsThreadType, *SeTokenObjectType, *TmEnlistmentObjectType, *TmResourceManagerObjectType, *TmTransactionManagerObjectType или *TmTransactionObjectType.
Этот параметр также может иметь значение NULL , если AccessMode имеет значение KernelMode.
[in] AccessMode
Указывает режим доступа, используемый для проверка доступа. Он должен иметь значение UserMode или KernelMode. Драйверы более низкого уровня должны указывать KernelMode.
Возвращаемое значение
ObReferenceObjectByPointer возвращает STATUS_SUCCESS, если подпрограмма успешно увеличила число ссылок тела целевого объекта. Подпрограмма выполняет проверку типа объекта, если вызов выполняется в пользовательском режиме и если тип, запрошенный вызывающим объектом, не совпадает с типом из тела объекта, возвращается STATUS_OBJECT_TYPE_MISMATCH. Тот же код NTSTATUS возвращается, если запрошенный тип является типом символьной ссылки (ObpSymbolicLinkObjectType), который не разрешен подпрограммой, независимо от типа режима доступа.
Комментарии
Вызов этой подпрограммы предотвращает удаление объекта, возможно, путем вызова другого компонента ObDereferenceObject или ZwClose. Вызывающий объект должен уменьшать количество ссылок с помощью ObDereferenceObject сразу после завершения работы с объектом .
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), TargetRelationNeedsRef(wdm) |