2009-07-08 10 views
2

Я не уверен, что это хорошее место, чтобы задать такой вопрос. Я пытаюсь передать некоторую библиотеку низкого уровня (dbghelp), чтобы вздрогнуть, и мне нужен доступ к некоторым api, которые недоступны в wince. Мне нужно получить доступ к TEB (Block Environment). На ПК есть пара API, которые делают это, но на WinCE нет такой вещи. Один из них называется NTQueryThreadInformation или что-то в этом роде, а другой - NtCurrentTEB, который возвращает указатель на TEB для текущего потока. Любые указатели на это? .. спасибоВнутренние элементы Windows CE, TEB (Блок защиты резьбы)

+0

Почему вы отмечаете это как windows-mobile вместо windows-ce, когда вы упоминаете Windows CE? – Giel

ответ

1

Вы можете найти доступные функции процесса и резьбы CE5 here.

Несмотря на отсутствие прямого эквивалента для TEB в WinCE, я видел TlsGetValue, TlsSetValue и т. Д. Для локального хранилища потоков, которое может быть похоже на «TEB.TlsSlots». CeGetThreadQuantum, GetThreadTimes, GetThreadPriority и GetThreadContext также могут предоставить определенную информацию о потоке.

Для себя я никогда не использовал их раньше, так как мои потребности в программировании обычно удовлетворялись с помощью CreateThread, Suspend/ResumeThread, ThreadProc и Set/GetThreadPriority.

+0

Вне курса я просмотрел всю информацию MSDN о API потоковой обработки в Windows CE. Причина, по которой мне нужен доступ к TEB, заключается в том, что DLL, которую я пытаюсь подключить, делает некоторые вещи с TEB. В основном, я взял код из реализации WINE dbghelp.dll и хотел его перенести в Windows CE (Microsoft не предоставляет CE-порт DLL). DLL позволяет получить доступ к отладочным символам, получить стек вызовов во время выполнения и т. Д., Что было бы неплохо иметь его в приложениях Windows CE. – pps

0

This assembly fragment from Boost.Context предполагает, что указатель TIB хранится в процессоре совместного регистра и может быть получен следующим образом:

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

Что касается расположения информации Темы/блока окружающей среды: Я не уверен, что это точно так же, как и на Win32. Связанный код из Boost определенно, похоже, предполагает, что это так. Я не смог найти никакой информации, подтверждающей существование «стека освобождения», который они хранят. Основа и предел стека отображаются в этих смещениях в заголовках WinCE SDK.