> > Hi, All! > > Блин, досадная трабла, не знаю как побороться. > > Уже что только не переделал. > > Итак, вот кусок кода (Delphi): > >
>> Var
> > PSec: PSecurityDescriptor;
> > Count: DWORD;
> > pAccessList: PEXPLICIT_ACCESS_A;
> > J: Integer;
> > aDACL: PACL;
> > dDefaulted, dPresent: BOOL;
> > Begin
> > PSec := GetServiceSD(DACL_SECURITY_INFORMATION);
> > Try
> > //ConvertSDtoAbsolute(pSec);
> > Win32Check(GetSecurityDescriptorDacl(pSec,
> dPresent,
> > aDACL, dDefaulted));
> > If Not dPresent Then Exit;
> > pAccessList := Nil; Count := 0;
> > J := GetExplicitEntriesFromAcl(aDacl^, Count,
> > pAccessList);
dolzhen peredat1 pointer na -> Count
If J <> ERROR_SUCCESS Then // <=== Здесь происходит трабла. Возвращаемый код
// равен ошибке 87, что означает "Параметр задан неверно"
---
В Delphi функция задана вот так:
function GetExplicitEntriesFromAclA(var pacl: ACL; var pcCountOfExplicitEntries: ULONG;
pListOfExplicitEntries: PEXPLICIT_ACCESS_A): DWORD; stdcall;
---
То есть получается, что pcCountOfExplicitEntries толкается в стек как указатель на Count, поскольку VAR.
Что делать, пока не знаю.
Изтрахался уже ;-)))))
|