• ObDereferenceObjectDeferDelete routine


    The ObDereferenceObjectDeferDelete routine decrements the reference count for the given object, checks for object retention, and avoids deadlocks.
    ObDereferenceObjectDeferDelete例程减少指定对象的引用计数,检查对象保留(不明白,检查对象需不需要删除??),并且避免死锁。

    语法:
    VOID ObDereferenceObjectDeferDelete(
    _In_ PVOID Object
    );

    参数:
    Object [in]
    A pointer to the body of the object.
    指向对象实体的指针
    返回值
    None
    备注:
    ObDereferenceObjectDeferDelete is similar to ObDereferenceObject except that,
    when the reference count of the object reaches zero,
    the object manager passes the object deletion request to a worker thread.
    Therefore, the deletion later occurs at IRQL = PASSIVE_LEVEL.
    ObDereferenceObjectDeferDelete与ObDereferenceObject类似,除了,当引用计数为 0 时,对象管理器传递对象删除请求到工作线程。
    因此,当之后IRQL=PASSIVE_LEVEL时,发生删除。

    Use ObDereferenceObjectDeferDelete for any object when the immediate deletion by the current thread of the object (by using ObDereferenceObject)
    might result in a deadlock.
    Google翻译的,我不懂...

    For example, such a deadlock can occur if ObDereferenceObject is used to dereference a Kernel Transaction Manager (KTM) object
    when a higher level driver on the driver stack is holding a lock.
    例如,使用ObDereferenceObject为Kernel Transaction Manager(KTM) 对象解引用 ,当一个驱动栈上的高层驱动持有锁时,会发生死锁。

    To avoid such deadlocks, use ObDereferenceObjectDeferDelete instead of ObDereferenceObject to dereference KTM objects.
    为了避免死锁,应使用ObDereferenceObjectDeferDelete代替ObDereferenceObject 对KTM对象解外用。

    Note For information about object permanence and attributes, see ObDereferenceObject.
    更多对象持久和属性的信息,参见ObDereferenceObject。

    依赖项:
    操作系统: Available in Windows Vista and later versions of Windows operating systems.Windows Vista及以上版本
    头文件: Wdm.h (include Fltkernel.h or Ntifs.h)
    库: Contained in Ntoskrnl.lib.
    IRQL: <= DISPATCH_LEVEL

  • 相关阅读:
    什么是软件架构?
    子系统、框架与架构
    今天开始锻炼身体
    程序语言中基本数值类型的分类
    软件架构的作用
    软件架构要设计到什么程度
    软件架构视图
    更多资料
    How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数)
    installshield卸载时提示重启动的原因以及解决办法
  • 原文地址:https://www.cnblogs.com/bqrm/p/3123369.html
Copyright © 2020-2023  润新知