Função ObReferenceObjectByPointer (wdm.h)
A rotina ObReferenceObjectByPointer incrementa a contagem de referência de ponteiro para um determinado objeto.
Sintaxe
NTSTATUS ObReferenceObjectByPointer(
[in] PVOID Object,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_TYPE ObjectType,
[in] KPROCESSOR_MODE AccessMode
);
Parâmetros
[in] Object
Ponteiro para o corpo do objeto.
[in] DesiredAccess
Especifica uma máscara que representa o acesso solicitado ao objeto .
[in, optional] ObjectType
Ponteiro para o tipo de objeto. ObjectType pode ser *ExEventObjectType, *ExSemaphoreObjectType, *IoFileObjectType, *PsProcessType, *PsThreadType, *SeTokenObjectType, *TmEnlistmentObjectType, *TmResourceManagerObjectType, *TmTransactionManagerObjectType ou *TmTransactionObjectType.
Esse parâmetro também poderá ser NULL se AccessMode for KernelMode.
[in] AccessMode
Indica o modo de acesso a ser usado para o marcar de acesso. Ele deve ser UserMode ou KernelMode. Drivers de nível inferior devem especificar KernelMode.
Retornar valor
ObReferenceObjectByPointer retorna STATUS_SUCCESS quando a rotina incrementou com êxito a contagem de referência do corpo do objeto de destino. A rotina executará a validação do tipo de objeto se a chamada estiver sendo executada no modo de usuário e se o tipo solicitado pelo chamador não corresponder ao do corpo do objeto, STATUS_OBJECT_TYPE_MISMATCH será retornado. O mesmo código NTSTATUS será retornado se o tipo solicitado for um tipo de link simbólico (ObpSymbolicLinkObjectType) que não é permitido pela rotina, independentemente do tipo de modo de acesso.
Comentários
Chamar essa rotina impede que o objeto seja excluído, possivelmente pela chamada de outro componente para ObDereferenceObject ou ZwClose. O chamador deve diminuir a contagem de referência com ObDereferenceObject assim que for feito com o objeto .
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), TargetRelationNeedsRef(wdm) |