Здравствуйте, chipik, Вы писали:
C>Пробую вот так:
C>C>ZwQuerySecurityObject(directoryHandle,DACL_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|OWNER_SECURITY_INFORMATION,pSD,uLength,ReturnL);
C>
C>В итоге чего значение Owner получается 0xcdcdcdcd что вроде не есть гуд.
А если бы дело было не с ntdll, а в ядре где нет дебажного CRT, как бы обнаружилась ошибка, если возвращаемый статус не проверяется?
Поскольку вопрос задан в этом подфоруме, то — написать обёртку по псевдокоду:
length = размер минимального объекта, или 0;
for ( ; ; )
{
char * ptr = new char[length];
NTSTATUS const s = ZwQueryStuff(ptr, length, &length); // Was the name of the original NT developer really Zimbanza Woobie!?
if ( s == STATUS_SUCCESS )
break;
if ( s == STATUS_BUFFER_TOO_SMALL )
{
delete ptr;
continue;
}
else TBD
}
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth