Как включить 2 и больше привилегии сразу?
|
|
Пятница, 20 Ноября 2020 г. 14:47
+ в цитатник
Qraizer: Почему 512?
PTOKEN_PRIVILEGES tp = malloc(sizeof(*tp) + sizeof(tp->Privileges[0]));
Вообще, этот т.н. POSIX style структур с переменным размером лично меня напрягает. Но уж так повелось.
Добавлено
P.S. Можно накидать макрос, чтоб каждый раз портянки не писать. Что-то типа
#define GET_VARIADIC_ARRAY_SIZE(str, field, num) (sizeof(str)-sizeof(str::field) + sizeof(str::field[0])*(num))
/* ... */
PTOKEN_PRIVILEGES tp = malloc(GET_VARIADIC_ARRAY_SIZE(TOKEN_PRIVILEGES, Privileges, 2);
Не тестировал.
Добавлено
P.P.S. Если так не зайдёт, возможно, в чистом C плюсовое :: не работает, не помню, то вот так должно:
#define GET_VARIADIC_ARRAY_SIZE(str, field, num) (sizeof(str) - sizeof(((str*)0)->field) + sizeof(((str*)0)->field[0]) * (num))
Но как-то криво выглядит.
https://forum.sources.ru/index.php?showtopic=420833&view=findpost&p=3842283
Метки:
C/C++:
Системное программирование и WinAPI
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-