Функция Wow64SuspendThread (wow64apiset.h)
Приостанавливает указанный поток WOW64.
Синтаксис
DWORD Wow64SuspendThread(
HANDLE hThread
);
Параметры
hThread
Дескриптор для приостанавливаемого потока. Дескриптор должен иметь право доступа к THREAD_SUSPEND_RESUME. Дополнительные сведения см. в разделе Безопасность потоков и права доступа.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение — это предыдущее число приостановок потока; в противном случае — (DWORD) -1. Чтобы получить расширенные сведения об ошибке, используйте функцию GetLastError .
Комментарии
Если функция выполняется успешно, выполнение указанного потока приостанавливается, а число приостановок потока увеличивается. Приостановка потока приводит к тому, что поток перестает выполнять код в пользовательском режиме (приложение).
Эта функция в основном предназначена для использования отладчиками. Он не предназначен для синхронизации потоков. Вызов Wow64SuspendThread в потоке, который владеет объектом синхронизации, например мьютексом или критическим разделом, может привести к взаимоблокировке, если вызывающий поток попытается получить объект синхронизации, принадлежащий приостановленным потокам. Чтобы избежать этой ситуации, поток в приложении, который не является отладчиком, должен сигнализировать другому потоку о приостановке себя. Целевой поток должен быть разработан таким образом, чтобы watch для этого сигнала и реагировать соответствующим образом.
Каждый поток имеет число приостановок (с максимальным значением MAXIMUM_SUSPEND_COUNT). Если число приостановок больше нуля, поток приостанавливается; В противном случае поток не приостанавливается и может выполняться. Вызов Wow64SuspendThread приводит к тому, что число приостановок целевого потока увеличивается. Попытка увеличить максимальное число приостановок приводит к ошибке без увеличения счетчика.
Функция ResumeThread уменьшает количество приостановлений приостановленного потока.
Эта функция предназначена для 64-разрядных приложений. Он не поддерживается в 32-разрядной версии Windows; такие вызовы завершаются ошибкой и задают для последнего кода ошибки значение ERROR_INVALID_FUNCTION. 32-разрядное приложение может вызывать эту функцию в потоке WOW64; результат совпадает с вызовом функции SuspendThread .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Верхняя часть | wow64apiset.h |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |