> > >> 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. > > Что делать, пока не знаю. > > Изтрахался уже ;-))))) > > Pochemuto pAccessList - zadeclarirovan kak pointer, > a Count - kak DWORD? Tebe ne kazhetsia chto Count dolzhen > byt pointer to DWORD? > > Count: DWORD; > pAccessList: PEXPLICIT_ACCESS_A; >
Ну нравится так Борландовским деклараторам ;-))) Или декларастам ;-))) А может даже и декларирам, что ближе всего ;-)))))))))))
Вот, к примеру, две процедуры (или «функции, которые возвращают значение VOID») — это для утомлённых C++ ;-))))
Procedure Increment(Var Value: DWORD); StdCall;
Begin
Value := Value + 1;
End;
Procedure Increment1(pValue: PDWORD); StdCall;
Begin
pValue^ := pValue^ + 1;
End;
---
Вызывать их можно вот так:
Program Test1;
Var Val: DWORD;
Begin
Val := 0;
Increment(Val);
Increment1(@Val);
End.
---
Видно, что в первом случае гораздо легче как писать процедуры/функции, так и вызывать их. Не нужно всяких крышечек (^) и прочих штук вроде оператора @. Плюс контроль типов работает. А физически что в первом, что во втором случае в стек толкается указатель на переменную. Прогресс, мля! ;-))))) А только список Trustee из DACL всё равно надо как-то вытаскивать ;-((((((
|