Delphi-Quellcode:
procedure DoTreeProgress(
pObjectName: LPWSTR;
// name of object just processed
Status: DWORD;
// status of operation on object
var pInvokeSetting: PROG_INVOKE_SETTING;
// Never, always,
Args: PVOID;
// Caller specific data
SecuritySet: BOOL );
Stdcall;
var
NewSI : SECURITY_INFORMATION;
NewOwner,NewGroup : SID;
NewDACL,NewSACL :
ACL;
CallBack : FN_PROGRESS;
dErr := TreeResetNamedSecurityInfoW(PWidechar(ffilename),
SE_FILE_OBJECT,
NewSI,
@NewOwner,
@NewGroup,
@NewDACL,
@NewSACL,
FALSE,
NIL,
ProgressInvokeNever,
NIL);
Ist ffilename string oder WideString? Besser WideString.
Ich habe oben mal meine Vermutungen eingesetzt. NewOwner, NewGroup, NewDACL und NewSACL sind vermutlich ausgefuellte Strukturen. Es koenne aber auch Zeiger sein, die andere Funktinoen angeliefert haben, dann ist meine Veraenderung mit @ falsch.
Die Dokumentation sagt das man NIL fuer den Callback angeben soll, wenn man ProgressInvokeNever benutzt.
Wie vermutet ist der Parameter pInvokeSetting falsch deklariert. var macht bereits die Indirektion. Es muss also der Struktur-Typ nicht der Zeiger-auf-Struktur-Typ gewaehlt werden.