Страница 12 из 14 BOOL SetEvent(HANDLE hEvent); Возвращаемое значение Ненулевое, если работа функции завершилась успешно. Если в процессе работы функции возникла ошибка, возвращается нулевое значение. Более подробную информацию об ошибке можно получить, вызвав функцию GetLastError. Аргументы hEvent - дескриптор объекта события, возвращенный функцией CreateEvent или OpenEvent. В Windows NT этот аргумент должен иметь уровень доступа EVENT_MODIFY_STATE. Описание Функция SetEvent устанавливает отмеченное состояние объекта события. Состояние объекта события, открытого в режиме ручного сброса, после этого остается отмеченным до следующего вызова функции ResetEvent. Пока состояние объекта события остается отмеченным может быть возобновлена работа любого количества ждущих потоков или потоков, которые последовательно запускали операцию ожидания с использованием данного объекта события. Состояние объекта события, открытого в режиме автоматического сброса, остается отмеченным до запуска первого же ожидающего потока. После этого система автоматически устанавливает неотмеченное состояние данного объекта. Если ожидающие потоки отсутствуют, состояние объекта остается отмеченным. BOOL SetMenuContextHelpId(HMENU hmenu, DWORD dwContextHelpId); Возвращаемое значение Ненулевое, если функция успешно завершила свою работу, и нулевое в противном случае. Более подробную информацию об ошибке можно получить вызвав функцию GetLastError. Аргументы hmenu - дескриптор меню, связанного с данным контекстным идентификатором. dwContextHelpId - контекстный идентификатор справки. Описание Связывает контекстный идентификатор справки с указанным меню. Все команды меню разделяют этот идентификатор. Контекстный идентификатор справки не может быть назначен отдельной команде меню. BOOL SetThreadPriority(HANDLE hThread, int nPriority); Возвращаемое значение Ненулевое, если функция успешно завершила свою работу, и нулевое в противном случае. Более подробную информацию об ошибке можно получить вызвав функцию GetLastError. Аргументы hThread - дескриптор потока, приоритет которого требуется установить. В Windows NT этот дескриптор должен иметь уровень доступа THREAD_SET_INFORMATION. nPriority - определяет значение приоритета указанного потока. Этот аргумент может принимать одно из следующих значений: THREAD_PRIORITY_ABOVE_NORMAL - устанавливает значение приоритета на 1 выше нормального приоритета для приоритетного класса; THREAD_PRIORITY_BELOW_NORMAL - устанавливает значение приоритета на 1 ниже нормального приоритета для приоритетного класса; THREAD_PRIORITY_HIGHEST - устанавливает значение приоритете на 2 выше нормального приоритета для приоритетного класса; THREAD_PRIORITY_IDLE - устанавливает базовый приоритет, равный 1, для процессов IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS или HIGH_PRIORITY_CLASS и базовый приоритет, равный 16, для процессов REALTIME_PRIORITY_CLASS; THREAD_PRIORITY_LOWEST - устанавливает значение приоритета на 2 ниже нормального приоритета для приоритетного класса; THREAD_PRIORITY_NORMAL - устанавливает нормальное значение приоритета для приоритетного класса; THREAD_PRIORITY_TIME_CRITICAL - устанавливает базовый приоритет, равный 15, для процессов IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS или HIGH_PRIORITY_CLASS и базовый приоритет, равный 31, для процессов REALTIME_PRIORITY_CLASS. Описание Функция SetThreadPriority устанавливает значение приоритета для указанного процесса. Это значение, наряду с приоритетом класса процесса потока определяет базовый уровень приоритета потока. Каждый поток имеет базовый уровень приоритета, определяемый значением приоритета потока и классом приоритета его процесса. Система использует базовый уровень приоритета для всех исполняемых потоков для определения того, какому из них необходимо выделить следующий квант времени центрального процессора. Квант времени выделяется по очереди всем потокам, имеющим одинаковый уровень приоритета, и только в том случае, если нет ни одного запроса на исполнение от потоков высшего уровня приоритета рассматриваются запросы на обслуживание от потоков более низкого уровня приоритета. Функция SetThreadPriority позволяет установить базовый уровень приоритета относительно класса приоритета его процесса. Например, задание уровня приоритета THREAD_PRIORITY_HIGHEST в функции SetThreadPriority для процесса, имеющего класс приоритета IDLE_PRIORITY_CLASS, устанавливает базовый уровень приоритета равный 6. Для процессов, имеющих классы приоритетов IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS и HIGH_PRIORITY_CLASS система динамически повышает базовый уровень приоритета, если происходит событие, важное для данного потока. Для процессов, имеющих класс приоритета REALTIME_PRIORITY_CLASS динамическое изменение базового уровня невозможно. Все потоки запускаются со значением приоритета THREAD_PRIORITY_NORMAL. Для получения и установки класса приоритета используются функции GetPriorityClass e SetPriorityClass. Для получения значения приоритета потока используется функция GetThreadPriority. Использование классов приоритета процесса позволяет разделять приложения, работающие в реальном времени, обычные и фоновые приложения. Использование значений приоритетов потоков позволяет определить важность выполнения отдельных потоков в приложении. Например, поток, выводящий окно на экран, должен иметь более высокий приоритет, чем поток, осуществляющий интенсивные вычисления. При установке приоритетов нужно следить за тем, чтобы потоки, имеющие высокий приоритет не занимали бы все имеющееся процессорное время. Потоки, имеющие базовый уровень приоритета выше 11 включаются в нормальную работу операционной системы. Использование класса приоритета процесса REALTIME_PRIORITY_CLASS может нарушить процесс кеширования диска, прекратить работу с мышью и вызвать другие подобные проблемы. BOOL SetWindowContextHelpId(HWND hwnd, DWORD dwContextHelpId); Возвращаемое значение Ненулевое, если функция успешно завершила свою работу, и нулевое в противном случае. Более подробную информацию об ошибке можно получить вызвав функцию GetLastError. Аргументы hwnd - дескриптор окна, связанного с данным контекстным идентификатором. dwContextHelpId - контекстный идентификатор справки. Описание Связывает контекстный идентификатор справки с указанным окном. Если дочернее окно не имеет контекстного идентификатора справки, то оно наследует его от родительского окна. Аналогично, если окно принадлежит другому окну и не имеет контекстного идентификатора справки, то оно наследует его от того окна, которому оно принадлежит. Это наследование контекстного идентификатора справки позволяет приложению использовать один контекстный идентификатор справки для диалогового окна и всех его элементов управления. |