Основы программирования в Win32API. Марапулец Ю.В. - 93 стр.

UptoLike

Составители: 

HANDLE CreateThread
(LPSECURITY_ATTRIBUTES lpThreadAttributes,
// атрибуты защиты потока
DWORD dwStackSize, // размер стека в байтах
LPTHREAD_START_ROUTINE lpStartAddress,
//указатель на функцию потока
LPVOID lpParameter, // аргумент, передаваемый в функцию потока
BDWORD dwCreationFlags, // флаги управления созданием потока
LPDWORD lpThreadId,
// область памяти для возвращения идентификатора потока);…
Чаще всего вы будете применять данную функцию, просто задав значение
NULL в качестве аргумента lpThreadAttributes. Такой подход является удач-
ным при реализации большинства стандартных операций доступа. Это связано
с тем, что при задании значения NULL
используется набор параметров струк-
туры SECURITY_ATTRIBUTES,
который задан по умолчанию.
Если вам необходимо нечто большее, чем атрибуты, заданные по
умолчанию посредством значения NULL
для структуры SECU-
RITY_ATTRIBUTES,
нужно вручную сформировать эту структуру.
7.2. Состав структуры SECURITY_ATTRIBUTES
На первый взгляд, в структуре SECURITY_ATTRIBUTES
нет ничего
сложного:
typedef struct SECURITY_ATTRIBUTES
{
DWORD nLength; // размер структуры SECURITY_ATTRIBUTES;
LPVOID lpSecurityDescriptor; // дескриптор безопасности
BOOL bInheritHandle; // будет ли дескриптор наследоваться
// дочерним процессом.
}
SECURITY_ATTRIBUTES; *LPSECURITY_ATTRIBUTES;…
Заполнить поле nLength очень просто (и очень важно!) [3, 4]. Устано-
вить флаг bInheritHandle также несложно: он имеет значение типа Boolean. А
вот второе поле, которое представляет собой указатель структуры SECURI-
TY_DESCRIPTOR,
мы рассмотрим более подробно. Если вы не хотите ис-
пользовать механизмы безопасности, lpSecurltyDescriptor можно присвоить
значение NULL. Если вы намерены защитить объект от несанкционирован-
ного доступа, необходимо создать структуру SECURITY_DESCRIPTOR, со-
ответствующую этому объекту, и внести указатель на нее в структуру SE-
CURITY_ATTRIBUTES.
93
HANDLE CreateThread
    (LPSECURITY_ATTRIBUTES lpThreadAttributes,
                                             // атрибуты защиты потока
    DWORD dwStackSize,                 // размер стека в байтах
    LPTHREAD_START_ROUTINE lpStartAddress,
                                       //указатель на функцию потока
    LPVOID lpParameter, // аргумент, передаваемый в функцию потока
    BDWORD dwCreationFlags, // флаги управления созданием потока
    LPDWORD lpThreadId,
          // область памяти для возвращения идентификатора потока);…
     Чаще всего вы будете применять данную функцию, просто задав значение
NULL в качестве аргумента lpThreadAttributes. Такой подход является удач-
ным при реализации большинства стандартных операций доступа. Это связано
с тем, что при задании значения NULL используется набор параметров струк-
туры SECURITY_ATTRIBUTES, который задан по умолчанию.
     Если вам необходимо нечто большее, чем атрибуты, заданные         по
умолчанию посредством значения NULL для структуры                  SECU-
RITY_ATTRIBUTES, нужно вручную сформировать эту структуру.



            7.2. Состав структуры SECURITY_ATTRIBUTES

    На первый взгляд, в структуре SECURITY_ATTRIBUTES нет ничего
сложного:

typedef struct SECURITY_ATTRIBUTES
{
     DWORD nLength; // размер структуры SECURITY_ATTRIBUTES;
     LPVOID lpSecurityDescriptor; // дескриптор безопасности
     BOOL bInheritHandle;         // будет ли дескриптор наследоваться
                                   // дочерним процессом.
 }
 SECURITY_ATTRIBUTES; *LPSECURITY_ATTRIBUTES;…
    Заполнить поле nLength очень просто (и очень важно!) [3, 4]. Устано-
вить флаг bInheritHandle также несложно: он имеет значение типа Boolean. А
вот второе поле, которое представляет собой указатель структуры SECURI-
TY_DESCRIPTOR, мы рассмотрим более подробно. Если вы не хотите ис-
пользовать механизмы безопасности, lpSecurltyDescriptor можно присвоить
значение NULL. Если вы намерены защитить объект от несанкционирован-
ного доступа, необходимо создать структуру SECURITY_DESCRIPTOR, со-
ответствующую этому объекту, и внести указатель на нее в структуру SE-
CURITY_ATTRIBUTES.

                                    93