2017-01-19 7 views
-1

usermodeで実行されているスレッドのコンテキストがカーネルにどこに格納されているのか誰も知っているのですか? usermodeスレッドコンテキストを取得して設定することに対処するためのAPIがあれば?私はあなたが何らかの理由でこれをやってはいけないことを知っています。だから、それに巻き込まないでください。これは研究目的のみのためであり、私自身のローカルプロジェクト以外のものでは使用されません。usermodeスレッドのコンテキストはどこに保存されていますか?変更することはできますか?

私たちはGetThreadContextとSetThreadContextを持っていますが、カーネルのデバイスドライバからこれを行う必要があります。私はもっと書く必要がありますが、このトピックに関する情報は全く見つかりません私よりも教育を受けた方が、ここにある窓の内部について私に啓示することができます。

よろしくお願いします。

答えて

2

スレッドがカーネルモードでカーネルスタックに格納されている場合、struct _KTRAP_FRAME - ntdkk.hで宣言されています。 ntoskrnl.exe(win10までのWin2000からすべてのバージョン)で、API(セットスレッドコンテキスト用とPsSetContextThread

NTKERNELAPI 
NTSTATUS 
NTAPI 
PsGetContextThread(
    __in PETHREAD Thread, 
    __inout PCONTEXT ThreadContext, 
    __in KPROCESSOR_MODE Mode 
    ); 

あなたが得るのスレッドコンテキストのためにそれを使用することができます輸出して存在します。 wrkに見て - - あなたがしようとすると、この要求者から(OperationComplete)イベントでの待機を開始した後、別のスレッド特別なカーネルモードAPCから取得/設定するコンテキストは、内部GETSETCONTEXT構造体へのポインタで、このスレッドに挿入されているこの作品は、方法について

この構造。スレッド(我々はコンテキストを照会しているため)次回カーネルに実行を開始 - APCルーチン(PspGetSetContextSpecialApc)が実行される - それは_KTRAP_FRAMEからコンテキストを記入し、イベント(OperationComplete)を設定

+0

うんスレッドがカーネルモードであるが、方法についてusermodeで動くスレッド? usermodeスレッドにも同じことが当てはまりますか? – Paze

+0

@Paze - 皆さんは私が何を書いているのか理解していますか?知識ウィンドウの内部はありますか?あなたが何を求めているかについて? – RbMm

+0

おい、あなたはそれについて無礼である必要はありません..はい私は窓の内部についての知識を持っています..私は専門家ではなく、まだ学んでいます。あなたは、スレッドがカーネルモードで入力されたとき、そのコンテキストがカーネルスタック、_KTRAP_FRAME構造体に格納されていると、私の質問は、スレッドがusermodeに入ったときにコンテキストが同じ構造体に格納されているかどうかです。コンテキストはどこに格納されていますか? – Paze

関連する問題