Легально ли использование в своих программах функций RtlEqualSid, RtlFreeSid, RtlAllocateAndInitializeSid и т.д. ведь в msdn написано The ... routine is reserved for system use.?
противозаконно... вас посадит первый сотрудник спецслужб, который посмотрит таблицу импорта вашей программы...
Ecли так пишут The ... routine is reserved for system use.? Это означает лишь только, то что в следующих версиях ntdll эта функция может работать по другому, или просто её не будет. Серьёзно к этому нужно относиться лишь только к тем кто не хочет лишней головной боли с совместимостью.
s_d_f Значит правильнее будет использовать вместо RtlAllocateAndInitializeSid связку RtlInitializeSid и RtlCopySid?
в MSDN много чего написано... но не вся правда... особенно это касается структур с полями "Reserved"))) пользуйтесь, я думаю у вас не должно возникнуть проблем...
Rel > особенно это касается структур с полями "Reserved"))) пользуйтесь, я думаю у вас не должно возникнуть проблем... А потом когда я беру этой пепсиколы в супермаркене, на кассе случается бсод (но и в других случаях возможно).
на самом деле экспортируемые функции в нтдлл самые стабильные и прекрасно перекочёвывают из версии в версию без изменений, а вот всякое сраное апи своё мелкомягкие любят подшерудить, единственное чего можно опасаться поля в структурах типа Reserved и зависящие от версии ядра
Вот как раз за такие советы нужно слать далеко и надолго. Reserved for system use означает то, что функция, скорее всего, имеет весьма спецефичные условия вызова или работает напрямую с объектами, доступ к которым обычно не предоставляется пользователю этого апи, поэтому и написано - не юзайте ее сами, ее юзает система, и нам лучше знать как и когда ее юзать. Как пример - ntoskrnl!IoCreateFile, ntoskrnl!MmCreateSection. Причины могут быть и другие - например, что она может быть удалена. Или что параметры изменятся.