Модель системы безопасности Windows NT дает Вам возможность управлять доступом к объектам потока. Для получения дополнительной информации о системе безопасности, см. статью
Модель управления доступом.Вы можете задать дескриптор безопасности (security descriptor) для потока, когда вызываете функцию
CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, CreateThread или CreateRemoteThread. Если Вы устанавливаете значение ПУСТО (NULL), поток получает заданный по умолчанию дескриптор безопасности. Списки контроля доступа (ACL) в заданном по умолчанию дескрипторе безопасности потока происходят от первичного маркера или маркера заимствования прав создателя.Чтобы извлечь дескриптор безопасности потока, вызовите функцию
GetSecurityInfo. Чтобы изменить дескриптор безопасности потока, вызовите функцию SetSecurityInfo.Дескриптор, возвращенный функцией
CreateThread, имеет доступ к объекту потока THREAD_ALL_ACCESS. Когда Вы вызываете функцию GetCurrentThread, система возвращает псевдодескриптор с максимальным доступом, который дескриптор безопасности потока позволяет вызывающей программе.Правильные права доступа для объектов потока включают в себя стандартные права доступа (standard access rights)
DELETE, READ_CONTROL, SYNCHRONIZE, WRITE_DAC и WRITE_OWNER, в дополнение к нижеследующим конкретным для потока правам доступа.
Значение |
Предназначение |
SYNCHRONIZE |
Дает возможность использования дескриптора потока в любой из функций ожидания. |
THREAD_ALL_ACCESS |
Все возможные права доступа для объекта потока. |
THREAD_DIRECT_IMPERSONATION |
Требуется для потока сервера, который исполняет роль клиента. |
THREAD_GET_CONTEXT |
Требуется, чтобы читать контекст потока, используя функцию GetThreadContext. |
THREAD_IMPERSONATE |
Требуется, чтобы использовать информацию о безопасности потока непосредственно без вызова его при помощи использования коммуникационного механизма, который предоставляет услуги заимствования прав. |
THREAD_QUERY_INFORMATION |
Требуется, чтобы читать некоторую информацию из объекта потока, такую как код завершения работы (см. функцию GetExitCodeThread ). |
THREAD_SET_CONTEXT |
Требуется, чтобы записать контекст потока, используя функцию SetThreadContext. |
THREAD_SET_INFORMATION |
Требуется, чтобы установить некоторую информацию в объекте потока. |
THREAD_SET_THREAD_TOKEN |
Требуется, чтобы установить маркер заимствования прав для потока, используя функцию SetTokenInformation. |
THREAD_SUSPEND_RESUME |
Требуется, чтобы приостановить или восстановить работу потока (см. функции SuspendThread и ResumeThread ). |
THREAD_TERMINATE |
Требуется, чтобы завершить работу потока, используя функцию TerminateThread . |
Вы можете запросить право доступа
ACCESS_SYSTEM_SECURITY к объекту потока, если желаете читать или записывать в объектах SACL. Для получения дополнительной информации, см., статью Списки контроля доступа (ACL) и право доступа SACL.