Поделиться через


Функция 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

См. также

ResumeThread