home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Plus! (NZ) 2001 June
/
HDC50.iso
/
Runimage
/
Delphi50
/
Source
/
Rtl
/
Win
/
ACCCTRL.PAS
next >
Wrap
Pascal/Delphi Source File
|
1999-08-11
|
28KB
|
715 lines
{*******************************************************}
{ }
{ Borland Delphi Run-time Library }
{ Win32 Security API Interface Unit }
{ }
{ Copyright (c) 1985-1999, Microsoft Corporation }
{ }
{ Translator: Inprise Corporation }
{ }
{*******************************************************}
unit AccCtrl;
{$WEAKPACKAGEUNIT}
interface
(*$HPPEMIT '#include <accCtrl.h>' *)
uses
Windows;
{ Definition: TRUSTEE_TYPE }
{ This enumerated type specifies the type of trustee account for the trustee }
{ returned by the API described in this document. }
{ TRUSTEE_IS_UNKNOWN - The trustee is an unknown, but not necessarily invalid }
{ type. This field is not validated on input to the APIs }
{ that take Trustees. }
{ TRUSTEE_IS_USER The trustee account is a user account. }
{ TRUSTEE_IS_GROUP The trustee account is a group account. }
type
TRUSTEE_TYPE = (
TRUSTEE_IS_UNKNOWN,
TRUSTEE_IS_USER,
TRUSTEE_IS_GROUP,
TRUSTEE_IS_DOMAIN,
TRUSTEE_IS_ALIAS,
TRUSTEE_IS_WELL_KNOWN_GROUP,
TRUSTEE_IS_DELETED,
TRUSTEE_IS_INVALID
);
{$EXTERNALSYM TRUSTEE_TYPE}
{ Definition: TRUSTEE_FORM }
{ This enumerated type specifies the form the trustee identifier is in for a }
{ particular trustee. }
{ TRUSTEE_IS_SID The trustee is identified with a SID rather than with a name. }
{ TRUSTEE_IS_NAME The trustee is identified with a name. }
TRUSTEE_FORM = (
TRUSTEE_IS_SID,
TRUSTEE_IS_NAME,
TRUSTEE_BAD_FORM
);
{$EXTERNALSYM TRUSTEE_FORM}
{ Definition: MULTIPLE_TRUSTEE_OPERATION }
{ If the trustee is a multiple trustee, this enumerated type specifies the type. }
{ TRUSTEE_IS_IMPERSONATE The trustee is an impersonate trustee and the multiple }
{ trustee field in the trustee points to another trustee }
{ that is a trustee for the server that will be doing the }
{ impersonation. }
MULTIPLE_TRUSTEE_OPERATION = (
NO_MULTIPLE_TRUSTEE,
TRUSTEE_IS_IMPERSONATE
);
{$EXTERNALSYM MULTIPLE_TRUSTEE_OPERATION}
{ Definition: TRUSTEE }
{ This structure is used to pass account information into and out of the system }
{ using the API defined in this document. }
{ PMultipleTrustee - if NON-NULL, points to another trustee structure, as }
{ defined by the multiple trustee operation field. }
{ MultipleTrusteeOperation - Defines the multiple trustee operation/type. }
{ TrusteeForm - defines if the trustee is defined by name or SID. }
{ TrusteeType - defines if the trustee type is unknown, a user or a group. }
{ PwcsName - points to the trustee name or the trustee SID. }
P_TRUSTEE_A = ^_TRUSTEE_A;
{$EXTERNALSYM P_TRUSTEE_A}
_TRUSTEE_A = packed record
pMultipleTrustee: P_TRUSTEE_A;
MultipleTrusteeOperation: MULTIPLE_TRUSTEE_OPERATION;
TrusteeForm: TRUSTEE_FORM;
TrusteeType: TRUSTEE_TYPE;
ptstrName: PAnsiChar;
end;
{$EXTERNALSYM _TRUSTEE_A}
P_TRUSTEE_W = ^_TRUSTEE_W;
{$EXTERNALSYM P_TRUSTEE_W}
_TRUSTEE_W = packed record
pMultipleTrustee: P_TRUSTEE_W;
MultipleTrusteeOperation: MULTIPLE_TRUSTEE_OPERATION;
TrusteeForm: TRUSTEE_FORM;
TrusteeType: TRUSTEE_TYPE;
ptstrName: PAnsiChar;
end;
{$EXTERNALSYM _TRUSTEE_W}
P_TRUSTEE_ = P_TRUSTEE_A;
TRUSTEEA = _TRUSTEE_A;
{$EXTERNALSYM TRUSTEEA}
TRUSTEEW = _TRUSTEE_W;
{$EXTERNALSYM TRUSTEEW}
TRUSTEE = TRUSTEEA;
PTRUSTEEA = ^TRUSTEEA;
{$EXTERNALSYM PTRUSTEEA}
PTRUSTEEW = ^TRUSTEEW;
{$EXTERNALSYM PTRUSTEEW}
PTRUSTEE = PTRUSTEEA;
TRUSTEE_A = TRUSTEEA;
{$EXTERNALSYM TRUSTEE_A}
TRUSTEE_W = TRUSTEEW;
{$EXTERNALSYM TRUSTEE_W}
TRUSTEE_ = TRUSTEE_A;
PTRUSTEE_A = PTRUSTEEA;
{$EXTERNALSYM PTRUSTEE_A}
PTRUSTEE_W = PTRUSTEEW;
{$EXTERNALSYM PTRUSTEE_W}
PTRUSTEE_ = PTRUSTEE_A;
{ Definition: ACCESS_MODE }
{ This enumerated type specifies how permissions are (requested)/to be applied }
{ for the trustee by the access control entry. On input this field can by any }
{ of the values, although it is not meaningful to mix access control and audit }
{ control entries. On output this field will be either SET_ACCESS, DENY_ACCESS, }
{ SET_AUDIT_SUCCESS, SET_AUDIT_FAILURE. }
{ The following descriptions define how this type effects an explicit access }
{ request to apply access permissions to an object. }
{ GRANT_ACCESS - The trustee will have at least the requested permissions upon }
{ successful completion of the command. (If the trustee has }
{ additional permissions they will not be removed). }
{ SET_ACCESS - The trustee will have exactly the requested permissions upon }
{ successful completion of the command. }
{ DENY_ACCESS - The trustee will be denied the specified permissions. }
{ REVOKE_ACCESS - Any explicit access rights the trustee has will be revoked. }
{ SET_AUDIT_SUCCESS - The trustee will be audited for successful opens of the }
{ object using the requested permissions. }
{ SET_AUDIT_FAILURE - The trustee will be audited for failed opens of the object }
{ using the requested permissions. }
ACCESS_MODE = (
NOT_USED_ACCESS,
GRANT_ACCESS,
SET_ACCESS,
DENY_ACCESS,
REVOKE_ACCESS,
SET_AUDIT_SUCCESS,
SET_AUDIT_FAILURE
);
{$EXTERNALSYM ACCESS_MODE}
{ Definition: Inheritance flags }
{ These bit masks are provided to allow simple application of inheritance in }
{ explicit access requests on containers. }
{ NO_INHERITANCE The specific access permissions will only be applied to }
{ the container, and will not be inherited by objects created }
{ within the container. }
{ SUB_CONTAINERS_ONLY_INHERIT The specific access permissions will be inherited }
{ and applied to sub containers created within the }
{ container, and will be applied to the container }
{ itself. }
{ SUB_OBJECTS_ONLY_INHERIT The specific access permissions will only be inherited }
{ by objects created within the specific container. }
{ The access permissions will not be applied to the }
{ container itself. }
{ SUB_CONTAINERS_AND_OBJECTS_INHERIT The specific access permissions will be }
{ inherited by containers created within the }
{ specific container, will be applied to }
{ objects created within the container, but }
{ will not be applied to the container itself. }
const
NO_INHERITANCE = $0;
{$EXTERNALSYM NO_INHERITANCE}
SUB_OBJECTS_ONLY_INHERIT = $1;
{$EXTERNALSYM SUB_OBJECTS_ONLY_INHERIT}
SUB_CONTAINERS_ONLY_INHERIT = $2;
{$EXTERNALSYM SUB_CONTAINERS_ONLY_INHERIT}
SUB_CONTAINERS_AND_OBJECTS_INHERIT = $3;
{$EXTERNALSYM SUB_CONTAINERS_AND_OBJECTS_INHERIT}
INHERIT_NO_PROPAGATE = $4;
{$EXTERNALSYM INHERIT_NO_PROPAGATE}
INHERIT_ONLY = $8;
{$EXTERNALSYM INHERIT_ONLY}
{ Informational bit that is returned }
INHERITED_ACCESS_ENTRY = $10;
{$EXTERNALSYM INHERITED_ACCESS_ENTRY}
{ Informational bit that tells where a node was inherited from. Valid only }
{ for NT 5 APIs }
INHERITED_PARENT = $10000000;
{$EXTERNALSYM INHERITED_PARENT}
INHERITED_GRANDPARENT = $20000000;
{$EXTERNALSYM INHERITED_GRANDPARENT}
{ Definition: }
{ This enumerated type defines the objects supported by the get/set API within }
{ this document. See section 3.1, Object Types for a detailed definition of the }
{ supported object types, and their name formats. }
type
SE_OBJECT_TYPE = (
SE_UNKNOWN_OBJECT_TYPE,
SE_FILE_OBJECT,
SE_SERVICE,
SE_PRINTER,
SE_REGISTRY_KEY,
SE_LMSHARE,
SE_KERNEL_OBJECT,
SE_WINDOW_OBJECT,
SE_DS_OBJECT,
SE_DS_OBJECT_ALL,
SE_PROVIDER_DEFINED_OBJECT,
SE_WMIGUID_OBJECT
);
{$EXTERNALSYM SE_OBJECT_TYPE}
{ Definition: EXPLICIT_ACCESS }
{ This structure is used to pass access control entry information into and out }
{ of the system using the API defined in this document. }
{ grfAccessPermissions - This contains the access permissions to assign for the }
{ trustee. It is in the form of an NT access mask. }
{ grfAccessMode - This field defines how the permissions are to be applied for }
{ the trustee. }
{ grfInheritance - For containers, this field defines how the access control }
{ entry is/(is requested) to be inherited on }
{ objects/sub-containers created within the container. }
{ Trustee - This field contains the definition of the trustee account the }
{ explicit access applies to. }
PEXPLICIT_ACCESS_A = ^EXPLICIT_ACCESS_A;
{$EXTERNALSYM PEXPLICIT_ACCESS_A}
EXPLICIT_ACCESS_A = packed record
grfAccessPermissions: DWORD;
grfAccessMode: ACCESS_MODE;
grfInheritance: DWORD;
Trustee: TRUSTEE_A;
end;
{$EXTERNALSYM EXPLICIT_ACCESS_A}
PEXPLICIT_ACCESS_W = ^EXPLICIT_ACCESS_W;
{$EXTERNALSYM PEXPLICIT_ACCESS_W}
EXPLICIT_ACCESS_W = packed record
grfAccessPermissions: DWORD;
grfAccessMode: ACCESS_MODE;
grfInheritance: DWORD;
Trustee: TRUSTEE_W;
end;
{$EXTERNALSYM EXPLICIT_ACCESS_W}
PEXPLICIT_ACCESS_ = PEXPLICIT_ACCESS_A;
EXPLICIT_ACCESSA = EXPLICIT_ACCESS_A;
{$EXTERNALSYM EXPLICIT_ACCESSA}
EXPLICIT_ACCESSW = EXPLICIT_ACCESS_W;
{$EXTERNALSYM EXPLICIT_ACCESSW}
EXPLICIT_ACCESS = EXPLICIT_ACCESSA;
PEXPLICIT_ACCESSA = ^EXPLICIT_ACCESS_A;
{$EXTERNALSYM PEXPLICIT_ACCESSA}
PEXPLICIT_ACCESSW = ^EXPLICIT_ACCESS_W;
{$EXTERNALSYM PEXPLICIT_ACCESSW}
PEXPLICIT_ACCESS = PEXPLICIT_ACCESSA;
{ ---------------------------------------------------------------------------- }
{ NT5 APIs }
{ ---------------------------------------------------------------------------- }
{ Default provider }
const
ACCCTRL_DEFAULT_PROVIDERA = 'Windows NT Access Provider';
{$EXTERNALSYM ACCCTRL_DEFAULT_PROVIDERA}
ACCCTRL_DEFAULT_PROVIDERW = 'Windows NT Access Provider';
{$EXTERNALSYM ACCCTRL_DEFAULT_PROVIDERW}
ACCCTRL_DEFAULT_PROVIDER = ACCCTRL_DEFAULT_PROVIDERA;
{ / Access rights }
type
ACCESS_RIGHTS = ULONG;
{$EXTERNALSYM ACCESS_RIGHTS}
PACCESS_RIGHTS = ^ACCESS_RIGHTS;
{$EXTERNALSYM PACCESS_RIGHTS}
{ Inheritance flags }
INHERIT_FLAGS = ULONG;
{$EXTERNALSYM INHERIT_FLAGS}
PINHERIT_FLAGS = ^INHERIT_FLAGS;
{$EXTERNALSYM PINHERIT_FLAGS}
{ Access / Audit structures }
PACTRL_ACCESS_ENTRYA = ^ACTRL_ACCESS_ENTRYA;
{$EXTERNALSYM PACTRL_ACCESS_ENTRYA}
ACTRL_ACCESS_ENTRYA = packed record
Trustee: TRUSTEE_A;
fAccessFlags: ULONG;
Access: ACCESS_RIGHTS;
ProvSpecificAccess: ACCESS_RIGHTS;
Inheritance: INHERIT_FLAGS;
lpInheritProperty: PAnsiChar;
end;
{$EXTERNALSYM ACTRL_ACCESS_ENTRYA}
PACTRL_ACCESS_ENTRYW = ^ACTRL_ACCESS_ENTRYW;
{$EXTERNALSYM PACTRL_ACCESS_ENTRYW}
ACTRL_ACCESS_ENTRYW = packed record
Trustee: TRUSTEE_W;
fAccessFlags: ULONG;
Access: ACCESS_RIGHTS;
ProvSpecificAccess: ACCESS_RIGHTS;
Inheritance: INHERIT_FLAGS;
lpInheritProperty: PAnsiChar;
end;
{$EXTERNALSYM ACTRL_ACCESS_ENTRYW}
PACTRL_ACCESS_ENTRY = PACTRL_ACCESS_ENTRYA;
PACTRL_ACCESS_ENTRY_LISTA = ^ACTRL_ACCESS_ENTRY_LISTA;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY_LISTA}
ACTRL_ACCESS_ENTRY_LISTA = packed record
cEntries: ULONG;
pAccessList: ^ACTRL_ACCESS_ENTRYA;
end;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY_LISTA}
PACTRL_ACCESS_ENTRY_LISTW = ^ACTRL_ACCESS_ENTRY_LISTW;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY_LISTW}
ACTRL_ACCESS_ENTRY_LISTW = packed record
cEntries: ULONG;
pAccessList: ^ACTRL_ACCESS_ENTRYW;
end;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY_LISTW}
PACTRL_ACCESS_ENTRY_LIST = PACTRL_ACCESS_ENTRY_LISTA;
PACTRL_PROPERTY_ENTRYA = ^ACTRL_PROPERTY_ENTRYA;
{$EXTERNALSYM PACTRL_PROPERTY_ENTRYA}
ACTRL_PROPERTY_ENTRYA = packed record
lpProperty: PAnsiChar;
pAccessEntryList: PACTRL_ACCESS_ENTRY_LISTA;
fListFlags: ULONG;
end;
{$EXTERNALSYM ACTRL_PROPERTY_ENTRYA}
PACTRL_PROPERTY_ENTRYW = ^ACTRL_PROPERTY_ENTRYW;
{$EXTERNALSYM PACTRL_PROPERTY_ENTRYW}
ACTRL_PROPERTY_ENTRYW = packed record
lpProperty: PAnsiChar;
pAccessEntryList: PACTRL_ACCESS_ENTRY_LISTW;
fListFlags: ULONG;
end;
{$EXTERNALSYM ACTRL_PROPERTY_ENTRYW}
PACTRL_PROPERTY_ENTRY = PACTRL_PROPERTY_ENTRYA;
PACTRL_ACCESSA = ^ACTRL_ACCESSA;
{$EXTERNALSYM PACTRL_ACCESSA}
ACTRL_ACCESSA = packed record
cEntries: ULONG;
pPropertyAccessList: PACTRL_PROPERTY_ENTRYA;
end;
{$EXTERNALSYM ACTRL_ACCESSA}
PACTRL_ACCESSW = ^ACTRL_ACCESSW;
{$EXTERNALSYM PACTRL_ACCESSW}
ACTRL_ACCESSW = packed record
cEntries: ULONG;
pPropertyAccessList: PACTRL_PROPERTY_ENTRYW;
end;
{$EXTERNALSYM ACTRL_ACCESSW}
PACTRL_ACCESS = PACTRL_ACCESSA;
PPACTRL_ACCESSA = ^PACTRL_ACCESSA;
{$EXTERNALSYM PPACTRL_ACCESSA}
PPACTRL_ACCESSW = ^PACTRL_ACCESSW;
{$EXTERNALSYM PPACTRL_ACCESSW}
PPACTRL_ACCESS = PPACTRL_ACCESSA;
ACTRL_AUDITA = ACTRL_ACCESSA;
{$EXTERNALSYM ACTRL_AUDITA}
ACTRL_AUDITW = ACTRL_ACCESSW;
{$EXTERNALSYM ACTRL_AUDITW}
ACTRL_AUDIT = ACTRL_AUDITA;
PACTRL_AUDITA = ^ACTRL_AUDITA;
{$EXTERNALSYM PACTRL_AUDITA}
PACTRL_AUDITW = ^ACTRL_AUDITW;
{$EXTERNALSYM PACTRL_AUDITW}
PACTRL_AUDIT = PACTRL_AUDITA;
PPACTRL_AUDITA = ^PACTRL_AUDITA;
{$EXTERNALSYM PPACTRL_AUDITA}
PPACTRL_AUDITW = ^PACTRL_AUDITW;
{$EXTERNALSYM PPACTRL_AUDITW}
PPACTRL_AUDIT = PPACTRL_AUDITA;
{ TRUSTEE_ACCESS flags }
const
TRUSTEE_ACCESS_ALLOWED = $00000001;
{$EXTERNALSYM TRUSTEE_ACCESS_ALLOWED}
TRUSTEE_ACCESS_READ = $00000002;
{$EXTERNALSYM TRUSTEE_ACCESS_READ}
TRUSTEE_ACCESS_WRITE = $00000004;
{$EXTERNALSYM TRUSTEE_ACCESS_WRITE}
TRUSTEE_ACCESS_EXPLICIT = $00000001;
{$EXTERNALSYM TRUSTEE_ACCESS_EXPLICIT}
TRUSTEE_ACCESS_READ_WRITE = TRUSTEE_ACCESS_READ or
TRUSTEE_ACCESS_WRITE;
{$EXTERNALSYM TRUSTEE_ACCESS_READ_WRITE}
TRUSTEE_ACCESS_ALL = $FFFFFFFF;
{$EXTERNALSYM TRUSTEE_ACCESS_ALL}
type
PTRUSTEE_ACCESSA = ^TRUSTEE_ACCESSA;
{$EXTERNALSYM PTRUSTEE_ACCESSA}
TRUSTEE_ACCESSA = packed record
lpProperty: PAnsiChar;
Access: ACCESS_RIGHTS;
fAccessFlags: ULONG;
fReturnedAccess: ULONG;
end;
{$EXTERNALSYM TRUSTEE_ACCESSA}
PTRUSTEE_ACCESSW = ^TRUSTEE_ACCESSW;
{$EXTERNALSYM PTRUSTEE_ACCESSW}
TRUSTEE_ACCESSW = packed record
lpProperty: PAnsiChar;
Access: ACCESS_RIGHTS;
fAccessFlags: ULONG;
fReturnedAccess: ULONG;
end;
{$EXTERNALSYM TRUSTEE_ACCESSW}
PTRUSTEE_ACCESS = PTRUSTEE_ACCESSA;
{ Generic permission values }
const
ACTRL_RESERVED = $00000000;
{$EXTERNALSYM ACTRL_RESERVED}
ACTRL_PERM_1 = $00000001;
{$EXTERNALSYM ACTRL_PERM_1}
ACTRL_PERM_2 = $00000002;
{$EXTERNALSYM ACTRL_PERM_2}
ACTRL_PERM_3 = $00000004;
{$EXTERNALSYM ACTRL_PERM_3}
ACTRL_PERM_4 = $00000008;
{$EXTERNALSYM ACTRL_PERM_4}
ACTRL_PERM_5 = $00000010;
{$EXTERNALSYM ACTRL_PERM_5}
ACTRL_PERM_6 = $00000020;
{$EXTERNALSYM ACTRL_PERM_6}
ACTRL_PERM_7 = $00000040;
{$EXTERNALSYM ACTRL_PERM_7}
ACTRL_PERM_8 = $00000080;
{$EXTERNALSYM ACTRL_PERM_8}
ACTRL_PERM_9 = $00000100;
{$EXTERNALSYM ACTRL_PERM_9}
ACTRL_PERM_10 = $00000200;
{$EXTERNALSYM ACTRL_PERM_10}
ACTRL_PERM_11 = $00000400;
{$EXTERNALSYM ACTRL_PERM_11}
ACTRL_PERM_12 = $00000800;
{$EXTERNALSYM ACTRL_PERM_12}
ACTRL_PERM_13 = $00001000;
{$EXTERNALSYM ACTRL_PERM_13}
ACTRL_PERM_14 = $00002000;
{$EXTERNALSYM ACTRL_PERM_14}
ACTRL_PERM_15 = $00004000;
{$EXTERNALSYM ACTRL_PERM_15}
ACTRL_PERM_16 = $00008000;
{$EXTERNALSYM ACTRL_PERM_16}
ACTRL_PERM_17 = $00010000;
{$EXTERNALSYM ACTRL_PERM_17}
ACTRL_PERM_18 = $00020000;
{$EXTERNALSYM ACTRL_PERM_18}
ACTRL_PERM_19 = $00040000;
{$EXTERNALSYM ACTRL_PERM_19}
ACTRL_PERM_20 = $00080000;
{$EXTERNALSYM ACTRL_PERM_20}
{ Access permissions }
ACTRL_ACCESS_ALLOWED = $00000001;
{$EXTERNALSYM ACTRL_ACCESS_ALLOWED}
ACTRL_ACCESS_DENIED = $00000002;
{$EXTERNALSYM ACTRL_ACCESS_DENIED}
ACTRL_AUDIT_SUCCESS = $00000004;
{$EXTERNALSYM ACTRL_AUDIT_SUCCESS}
ACTRL_AUDIT_FAILURE = $00000008;
{$EXTERNALSYM ACTRL_AUDIT_FAILURE}
{ Property list flags }
ACTRL_ACCESS_PROTECTED = $00000001;
{$EXTERNALSYM ACTRL_ACCESS_PROTECTED}
{ Standard and object rights }
ACTRL_SYSTEM_ACCESS = $04000000;
{$EXTERNALSYM ACTRL_SYSTEM_ACCESS}
ACTRL_DELETE = $08000000;
{$EXTERNALSYM ACTRL_DELETE}
ACTRL_READ_CONTROL = $10000000;
{$EXTERNALSYM ACTRL_READ_CONTROL}
ACTRL_CHANGE_ACCESS = $20000000;
{$EXTERNALSYM ACTRL_CHANGE_ACCESS}
ACTRL_CHANGE_OWNER = $40000000;
{$EXTERNALSYM ACTRL_CHANGE_OWNER}
ACTRL_SYNCHRONIZE = $80000000;
{$EXTERNALSYM ACTRL_SYNCHRONIZE}
ACTRL_STD_RIGHTS_ALL = $f8000000;
{$EXTERNALSYM ACTRL_STD_RIGHTS_ALL}
ACTRL_STD_RIGHT_REQUIRED = ACTRL_STD_RIGHTS_ALL and not ACTRL_SYNCHRONIZE;
{$EXTERNALSYM ACTRL_STD_RIGHT_REQUIRED}
ACTRL_DS_OPEN = ACTRL_RESERVED;
{$EXTERNALSYM ACTRL_DS_OPEN}
ACTRL_DS_CREATE_CHILD = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_DS_CREATE_CHILD}
ACTRL_DS_DELETE_CHILD = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_DS_DELETE_CHILD}
ACTRL_DS_LIST = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_DS_LIST}
ACTRL_DS_SELF = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_DS_SELF}
ACTRL_DS_READ_PROP = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_DS_READ_PROP}
ACTRL_DS_WRITE_PROP = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_DS_WRITE_PROP}
ACTRL_DS_DELETE_TREE = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_DS_DELETE_TREE}
ACTRL_DS_LIST_OBJECT = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_DS_LIST_OBJECT}
ACTRL_DS_CONTROL_ACCESS = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_DS_CONTROL_ACCESS}
ACTRL_FILE_READ = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_FILE_READ}
ACTRL_FILE_WRITE = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_FILE_WRITE}
ACTRL_FILE_APPEND = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_FILE_APPEND}
ACTRL_FILE_READ_PROP = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_FILE_READ_PROP}
ACTRL_FILE_WRITE_PROP = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_FILE_WRITE_PROP}
ACTRL_FILE_EXECUTE = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_FILE_EXECUTE}
ACTRL_FILE_READ_ATTRIB = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_FILE_READ_ATTRIB}
ACTRL_FILE_WRITE_ATTRIB = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_FILE_WRITE_ATTRIB}
ACTRL_FILE_CREATE_PIPE = ACTRL_PERM_10;
{$EXTERNALSYM ACTRL_FILE_CREATE_PIPE}
ACTRL_DIR_LIST = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_DIR_LIST}
ACTRL_DIR_CREATE_OBJECT = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_DIR_CREATE_OBJECT}
ACTRL_DIR_CREATE_CHILD = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_DIR_CREATE_CHILD}
ACTRL_DIR_DELETE_CHILD = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_DIR_DELETE_CHILD}
ACTRL_DIR_TRAVERSE = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_DIR_TRAVERSE}
ACTRL_KERNEL_TERMINATE = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_KERNEL_TERMINATE}
ACTRL_KERNEL_THREAD = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_KERNEL_THREAD}
ACTRL_KERNEL_VM = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_KERNEL_VM}
ACTRL_KERNEL_VM_READ = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_KERNEL_VM_READ}
ACTRL_KERNEL_VM_WRITE = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_KERNEL_VM_WRITE}
ACTRL_KERNEL_DUP_HANDLE = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_KERNEL_DUP_HANDLE}
ACTRL_KERNEL_PROCESS = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_KERNEL_PROCESS}
ACTRL_KERNEL_SET_INFO = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_KERNEL_SET_INFO}
ACTRL_KERNEL_GET_INFO = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_KERNEL_GET_INFO}
ACTRL_KERNEL_CONTROL = ACTRL_PERM_10;
{$EXTERNALSYM ACTRL_KERNEL_CONTROL}
ACTRL_KERNEL_ALERT = ACTRL_PERM_11;
{$EXTERNALSYM ACTRL_KERNEL_ALERT}
ACTRL_KERNEL_GET_CONTEXT = ACTRL_PERM_12;
{$EXTERNALSYM ACTRL_KERNEL_GET_CONTEXT}
ACTRL_KERNEL_SET_CONTEXT = ACTRL_PERM_13;
{$EXTERNALSYM ACTRL_KERNEL_SET_CONTEXT}
ACTRL_KERNEL_TOKEN = ACTRL_PERM_14;
{$EXTERNALSYM ACTRL_KERNEL_TOKEN}
ACTRL_KERNEL_IMPERSONATE = ACTRL_PERM_15;
{$EXTERNALSYM ACTRL_KERNEL_IMPERSONATE}
ACTRL_KERNEL_DIMPERSONATE = ACTRL_PERM_16;
{$EXTERNALSYM ACTRL_KERNEL_DIMPERSONATE}
ACTRL_PRINT_SADMIN = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_PRINT_SADMIN}
ACTRL_PRINT_SLIST = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_PRINT_SLIST}
ACTRL_PRINT_PADMIN = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_PRINT_PADMIN}
ACTRL_PRINT_PUSE = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_PRINT_PUSE}
ACTRL_PRINT_JADMIN = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_PRINT_JADMIN}
ACTRL_SVC_GET_INFO = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_SVC_GET_INFO}
ACTRL_SVC_SET_INFO = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_SVC_SET_INFO}
ACTRL_SVC_STATUS = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_SVC_STATUS}
ACTRL_SVC_LIST = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_SVC_LIST}
ACTRL_SVC_START = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_SVC_START}
ACTRL_SVC_STOP = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_SVC_STOP}
ACTRL_SVC_PAUSE = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_SVC_PAUSE}
ACTRL_SVC_INTERROGATE = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_SVC_INTERROGATE}
ACTRL_SVC_UCONTROL = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_SVC_UCONTROL}
ACTRL_REG_QUERY = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_REG_QUERY}
ACTRL_REG_SET = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_REG_SET}
ACTRL_REG_CREATE_CHILD = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_REG_CREATE_CHILD}
ACTRL_REG_LIST = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_REG_LIST}
ACTRL_REG_NOTIFY = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_REG_NOTIFY}
ACTRL_REG_LINK = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_REG_LINK}
ACTRL_WIN_CLIPBRD = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_WIN_CLIPBRD}
ACTRL_WIN_GLOBAL_ATOMS = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_WIN_GLOBAL_ATOMS}
ACTRL_WIN_CREATE = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_WIN_CREATE}
ACTRL_WIN_LIST_DESK = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_WIN_LIST_DESK}
ACTRL_WIN_LIST = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_WIN_LIST}
ACTRL_WIN_READ_ATTRIBS = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_WIN_READ_ATTRIBS}
ACTRL_WIN_WRITE_ATTRIBS = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_WIN_WRITE_ATTRIBS}
ACTRL_WIN_SCREEN = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_WIN_SCREEN}
ACTRL_WIN_EXIT = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_WIN_EXIT}
type
PACTRL_OVERLAPPED = ^ACTRL_OVERLAPPED;
{$EXTERNALSYM PACTRL_OVERLAPPED}
ACTRL_OVERLAPPED = packed record
case Integer of
0: (Provider: Pointer; Rsrvd2: ULONG; hEvnt: THandle);
1: (Reserved1: ULONG; Reserved2: ULONG; hEvent: THandle);
end;
{$EXTERNALSYM ACTRL_OVERLAPPED}
PACTRL_ACCESS_INFOA = ^ACTRL_ACCESS_INFOA;
{$EXTERNALSYM PACTRL_ACCESS_INFOA}
ACTRL_ACCESS_INFOA = packed record
fAccessPermission: ULONG;
lpAccessPermissionName: PAnsiChar;
end;
{$EXTERNALSYM ACTRL_ACCESS_INFOA}
PACTRL_ACCESS_INFOW = ^ACTRL_ACCESS_INFOW;
{$EXTERNALSYM PACTRL_ACCESS_INFOW}
ACTRL_ACCESS_INFOW = packed record
fAccessPermission: ULONG;
lpAccessPermissionName: PAnsiChar;
end;
{$EXTERNALSYM ACTRL_ACCESS_INFOW}
PACTRL_ACCESS_INFO = PACTRL_ACCESS_INFOA;
PPACTRL_ACCESS_INFOA = ^PACTRL_ACCESS_INFOA;
{$EXTERNALSYM PPACTRL_ACCESS_INFOA}
PPACTRL_ACCESS_INFOW = ^PACTRL_ACCESS_INFOW;
{$EXTERNALSYM PPACTRL_ACCESS_INFOW}
PPACTRL_ACCESS_INFO = PPACTRL_ACCESS_INFOA;
PACTRL_CONTROL_INFOA = ^ACTRL_CONTROL_INFOA;
{$EXTERNALSYM PACTRL_CONTROL_INFOA}
ACTRL_CONTROL_INFOA = packed record
lpControlId: PAnsiChar;
lpControlName: PAnsiChar;
end;
{$EXTERNALSYM ACTRL_CONTROL_INFOA}
PACTRL_CONTROL_INFOW = ^ACTRL_CONTROL_INFOW;
{$EXTERNALSYM PACTRL_CONTROL_INFOW}
ACTRL_CONTROL_INFOW = packed record
lpControlId: PAnsiChar;
lpControlName: PAnsiChar;
end;
{$EXTERNALSYM ACTRL_CONTROL_INFOW}
PACTRL_CONTROL_INFO = PACTRL_CONTROL_INFOA;
PPACTRL_CONTROL_INFOA = ^PACTRL_CONTROL_INFOA;
{$EXTERNALSYM PPACTRL_CONTROL_INFOA}
PPACTRL_CONTROL_INFOW = ^PACTRL_CONTROL_INFOW;
{$EXTERNALSYM PPACTRL_CONTROL_INFOW}
PPACTRL_CONTROL_INFO = PPACTRL_CONTROL_INFOA;
const
ACTRL_ACCESS_NO_OPTIONS = $00000000;
{$EXTERNALSYM ACTRL_ACCESS_NO_OPTIONS}
ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = $00000001;
{$EXTERNALSYM ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES}
implementation
end.