3

そのような質問をするのに適した場所かどうかはわかりません。低レベルのライブラリ (dbghelp) を wince に移植しようとしていますが、wince では利用できない API にアクセスする必要があります。TEB (スレッド環境ブロック) にアクセスする必要があります。それを行う PC で利用可能な API がいくつかありますが、WinCE にはそのようなものはありません。それらの 1 つは NTQueryThreadInformation などと呼ばれ、もう 1 つは現在のスレッドの TEB へのポインターを返す NtCurrentTEB です。その上で任意のポインタ?..ありがとう

4

2 に答える 2

1

利用可能な CE5 プロセスおよびスレッド関数は、こちら で見つけることができます。

WinCE の TEB に直接相当するものはありませんが、「TEB.TlsSlots」に似ているスレッド ローカル ストレージの TlsGetValue、TlsSetValue などを見てきました。CeGetThreadQuantum、GetThreadTimes、GetThreadPriority、および GetThreadContext も、スレッドに関する特定の情報を提供できます。

私のプログラミングのニーズは通常、CreateThread、Suspend/ResumeThread、ThreadProc、および Set/GetThreadPriority で満たされていたため、私自身はこれまでそれらを使用したことがありませんでした。

于 2009-07-10T15:02:29.407 に答える
0

Boost.Context からのこのアセンブリ フラグメントは、TIB ポインタがコレジスタ プロセッサに格納され、次のように取得できることを示唆しています。

mrc p15, #0, v1, c13, c0, #2

スレッド情報/環境ブロックのレイアウトについて: Win32 とまったく同じかどうかはわかりません。Boost からのリンクされたコードは、間違いなくそうであると想定しているようです。そこに(再)保存している「割り当て解除スタック」の存在を確認する情報を見つけることができませんでした。スタック ベースと制限は、WinCE SDK ヘッダーのこれらのオフセットに表示されます。

于 2016-03-24T13:00:45.380 に答える