RDBSS 提供了许多用于诊断和调试的例程。 这些例程分为两类:
断言和调试例程
引用和解除引用跟踪例程
这些例程包括下表中的项。
| Routine | DESCRIPTION |
|---|---|
如果安装了 RDBSS,此例程会将检查的 RDBSS 生成中的断言字符串发送到内核调试器。 使用 rxAssert.h 包含文件时,还将重新定义 Windows 内核 RtlAssert 调用以调用此 RxAssert 例程。 对于零售版本,对此例程的调用将进行 bug 检查。 |
|
如果安装了内核调试器,此例程将引发由内核调试器处理的异常;否则,它由调试系统处理。 |
|
此例程用于跟踪在已检查生成中引用SRV_CALL、NET_ROOT、V_NET_ROOT、FOBX、FCB 和SRV_OPEN结构的请求。 日志记录系统和 WMI 可以访问这些引用请求的日志。 此例程不执行取消引用操作。 对于零售版本,此例程不执行任何作。 |
|
此例程用于跟踪在检查版本中取消引用SRV_CALL、NET_ROOT、V_NET_ROOT、FOBX、FCB 和SRV_OPEN结构的请求。 日志记录系统和 WMI 可以访问这些取消引用请求的日志。 此例程不执行引用操作。 对于零售版本,此例程不执行任何作。 |
除了上表中列出的例程外,还定义了许多调用这些例程的宏用于调试。 下表中列出的这些宏为 RxReference 或 RxDereference 例程提供了一个包装器,用于在SRV_CALL、NET_ROOT、V_NET_ROOT、FOBX、FCB和SRV_OPEN结构上执行文件结构管理操作。 这些宏首先调用相应的 RxpTrackReference 或 RxpTrackDereference 例程来记录诊断信息,然后再调用相应的 RxReference 或 RxDeference 例程。 RDBSS 日志系统和 WMI 可以访问引用和取消引用请求日志。
| 宏 | DESCRIPTION |
|---|---|
RxDereferenceAndFinalizeNetFcb (Fcb,RxContext, RecursiveFinalize, ForceFinalize) |
此宏用于跟踪 FCB 结构的取消引用作。 请注意,此宏会修改引用计数,并返回终结调用的状态。 |
RxDereferenceNetFcb (Fcb) |
此宏用于跟踪 FCB 结构的取消引用作。 请注意,此宏作引用计数,并返回最终取消引用调用的状态。 |
RxDereferenceNetFobx (Fobx,LockHoldingState) |
此宏用于跟踪对 FOBX 结构的取消引用作。 |
RxDereferenceNetRoot (NetRoot, LockHoldingState) |
此宏用于跟踪对NET_ROOT结构的取消引用作。 |
RxDereferenceSrvCall (SrvCall, LockHoldingState) |
此宏用于跟踪对SRV_CALL结构的取消引用作。 |
RxDereferenceSrvOpen (SrvOpen, LockHoldingState) |
此宏用于跟踪对SRV_OPEN结构的取消引用作。 |
RxDereferenceVNetRoot (VNetRoot,LockHoldingState) |
此宏用于跟踪对NET_ROOT结构的取消引用作。 |
RxReferenceNetFcb (Fcb) |
此宏用于跟踪 FCB 结构的引用作。 |
RxReferenceNetFobx (Fobx) |
此宏用于跟踪 FOBX 结构的引用作。 |
RxReferenceNetRoot (NetRoot) |
此宏用于跟踪NET_ROOT结构的引用作。 |
RxReferenceSrvCall (SrvCall) |
此宏用于跟踪非 DPC 级别的 SRV_CALL 结构的引用操作。 |
RxReferenceSrvCallAtDpc (SrvCall) |
此宏用于跟踪 DPC 级别SRV_CALL结构的引用作。 |
RxReferenceSrvOpen (SrvOpen) |
此宏用于跟踪SRV_OPEN结构的引用作。 |
RxReferenceVNetRoot (VNetRoot) |
此宏用于跟踪对V_NET_ROOT结构的引用作。 |