現在、Windbg からの出力を理解するのに苦労しています。
私がやろうとしているのは、特定のスレッドでキューに入れられている IRP (割り込み要求パケット) の数を調べることです。したがって、現在私が持っているものは次のとおりです。
lkd> !thread
THREAD fffffa8001fce270
IRP List:
fffffa8001cf3b60
...
したがって、これは、現在のスレッドのリストに 1 つの IRP があり、それがアドレスであることを示しています。
ただし、次のコマンドは私を少し混乱させるものです:
lkd> ??@$thread->IrpList
struct _LIST_ENTRY
[ 0xfffffa8001cf3b80 - 0xfffffa8001cf3b80 ]
+0x000 Flink 0xfffffa8001cf3b80 _LIST_ENTRY [ 0xfffffa8001fce658 - 0xfffffa8001fce658]
+0x000 Blink 0xfffffa8001cf3b80 _LIST_ENTRY [ 0xfffffa8001fce658 - 0xfffffa8001fce658]
この情報はすべて _ETHREAD 構造体から取得され、windbg によると、構造体の「IrpList」要素のオフセットは 0x3e8 です。
したがって、スレッド (_ETHREAD) がオフセット 0xfffffa8001fce270 で開始する場合、IrpList 要素はオフセット 0xfffffa8001fce658 (0xfffffa8001fce270 + 0x3e8) にある必要があります。
ただし、windbg がオフセット 0xfffffa8001cf3b80 で IRP リスト エントリを報告している理由を完全には理解していません。
私はおそらくここでスティックの間違った端を取得していますが、誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します.
ありがとう