Winoows内核设计思想之IRP
+ -

STATUS_DELETE_PENDING

2023-07-28 19 0

STATUS_DELETE_PENDING的官方解释为:A non-close operation has been requested of a file object that has a delete pending.

这里指在进行文件操作时,出现了一种情况:请求对一个文件对象执行非关闭操作,但该文件对象已经被标记为删除待定。
当一个文件对象被请求删除时,系统将设置一个删除标记,并在所有引用该对象的操作完成之前进行延迟删除。在这种情况下,如果尝试对该文件对象执行非关闭操作(例如读取、写入或锁定等操作),将会返回这个错误。

这个错误的出现可能有以下几种情况:

  • 非关闭操作:应该尝试执行非关闭操作,而不是关闭操作,例如读取或写入文件内容。
  • 删除待定状态:该文件对象已经被标记为删除待定,意味着它正在等待被完全删除(等待所有操作完成,以及其他对象的引用释放)。

当收到这个错误时,应用程序通常需要等待一段时间,直到文件对象的删除操作完成,或者采取其他适当的处理措施。这可能包括等待一段时间后再次尝试非关闭操作,或者通知用户文件对象正处于删除状态并推迟执行相应的操作。
综上所述,这个错误表示请求对一个处于删除待定状态的文件对象执行非关闭操作,需要采取适当的措施等待或处理该删除操作。

在Windows驱动开发中,STATUS_DELETE_PENDING是一个表示对象正在等待删除的状态码。

当一个驱动对象或设备对象被请求删除时,系统会在删除之前等待一段时间,以确保所有与该对象相关的资源得到正确释放。在此期间,如果有其他操作尝试引用该对象,系统将返回STATUS_DELETE_PENDING状态码,表示对象尚未被完全删除并且删除操作正在等待中。

这种状态发生的常见场景包括:

  1. 设备对象删除:当设备被请求删除时,系统会确保设备不再处理任何新的请求,并等待当前挂起的请求完成。如果有新的请求进入队列,系统会返回STATUS_DELETE_PENDING,以指示设备对象仍在使用中。

  2. 文件对象删除:当尝试删除打开的文件对象时,系统会等待文件对象上的所有操作完成,例如读取、写入或锁定操作。如果在等待过程中有新的操作请求到达,系统会返回STATUS_DELETE_PENDING

总之,STATUS_DELETE_PENDING表示对象正在等待删除,但还有正在使用或等待的操作。在收到此状态码时,调用方通常需要等待一段时间后再次尝试删除对象。

0 篇笔记 写笔记

删除锁IO_REMOVE_LOCK与STATUS_DELETE_PENDING
删除锁IO_REMOVE_LOCK很少见,但很重要。其结构体定义为:typedef struct _IO_REMOVE_LOCK { IO_REMOVE_LOCK_COMMON_BLOCK Common;#if DBG IO_REMOVE_LOCK_DBG_BLOCK Dbg;......
Windows系统USB驱动的断电异常处理STATUS_NO_SUCH_DEVICE
USB设备除非特殊需要,一般都是系统自带。所以我们根据不用开发相应的驱动,就算是我们要搞自定义的USB设备,微软也贴心的帮我们搞了一个WinUSB,只我们的的固件按照某定的要求,也可以实现自定义通讯。所以从上面的来看,没有什么特殊的地方要我们开发Windows系统的USB驱动。不过有的时候就是那么奇......
总线驱动IRP的中止AbortIrp
AbortIrp用于驱动即将卸载,但系统这时又下发了一个功能驱动过来。这时我们需要中止它,系统通过我们Abort它的状态也许不再下发功能IRP了。对于总线驱动,IRP一般分为三类:第一种是通用的功能IRP,如IRP_MJ_CLOSEIRP_MJ_CREATEIRP_MJ_DEVICE_CO......
STATUS_DELETE_PENDING
STATUS_DELETE_PENDING的官方解释为:A non-close operation has been requested of a file object that has a delete pending.这里指在进行文件操作时,出现了一种情况:请求对一个文件对象执行非关闭操作,......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!