明日までに作ります、と言ってしまったものを作りました。すごい眠くてやる気が出ません。たくさん寝たのになぜだ…、もしや寝過ぎ?
MSDNにはカーネルモードドライバのサポートルーチンとして、スレッドを作ったときに通知される関数を登録するPsSetCreateThreadNotifyRoutineという関数と、通知関数を削除するPsRemoveCreateThreadNotifyRoutineという関数が載っています。
しかしWindows 2000にはPsRemove〜 がありません。じゃあPsSet〜 もないのかというと、なぜか存在します。なんだこの片手落ち。しっかり作れよ!!
仕方ないから自分で登録解除する方法を紹介します。
PspCreateThreadNotifyRoutineという配列に通知関数のアドレスが登録されているので、自分で登録した関数を探してNULLに変えます。さらにPspCreateThreadNotifyRoutineCountと言う変数をデクリメントすれば登録解除されます。
私の環境(Windows 2000 SP4最新パッチ適用済み)だと、0x80483200(RoutineCount) と0x804831a0(Routine) というアドレスで、Routineの配列長は8(合計32バイト)でした。
< | 2007 | > | ||||
<< | < | 02 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | - | - | - |
合計:
本日: