8 use vars qw(@ISA @EXPORT @EXPORT_OK);
14 my $module_declarations = {
15 "AccessCheck" => ["long", ["ptr", "long", "long", "ptr", "ptr", "ptr", "ptr", "ptr"]],
16 "AddAccessAllowedAce" => ["long", ["ptr", "long", "long", "ptr"]],
17 "AdjustTokenPrivileges" => ["long", ["long", "long", "ptr", "long", "ptr", "ptr"]],
18 "AllocateAndInitializeSid" => ["long", ["ptr", "long", "long", "long", "long", "long", "long", "long", "long", "long", "ptr"]],
19 "AllocateLocallyUniqueId" => ["long", ["ptr"]],
20 "BackupEventLogA" => ["long", ["long", "str"]],
21 "BackupEventLogW" => ["long", ["long", "wstr"]],
22 "ClearEventLogA" => ["long", ["long", "str"]],
23 "ClearEventLogW" => ["long", ["long", "wstr"]],
24 "CloseEventLog" => ["long", ["long"]],
25 "CloseServiceHandle" => ["long", ["long"]],
26 "ControlService" => ["long", ["long", "long", "ptr"]],
27 "CopySid" => ["long", ["long", "ptr", "ptr"]],
28 "CreateServiceA" => ["long", ["long", "str", "str", "long", "long", "long", "long", "str", "str", "ptr", "str", "str", "str"]],
29 "CreateServiceW" => ["long", ["long", "wstr", "wstr", "long", "long", "long", "long", "wstr", "wstr", "ptr", "wstr", "wstr", "wstr"]],
30 "CryptAcquireContextA" => ["long", ["ptr", "str", "str", "long", "long"]],
31 "CryptAcquireContextW" => ["long", ["ptr", "wstr", "wstr", "long", "long"]],
32 "CryptContextAddRef" => ["long", ["long", "ptr", "long"]],
33 "CryptCreateHash" => ["long", ["long", "long", "long", "long", "ptr"]],
34 "CryptDecrypt" => ["long", ["long", "long", "long", "long", "ptr", "ptr"]],
35 "CryptDeriveKey" => ["long", ["long", "long", "long", "long", "ptr"]],
36 "CryptDestroyHash" => ["long", ["long"]],
37 "CryptDestroyKey" => ["long", ["long"]],
38 "CryptDuplicateHash" => ["long", ["long", "ptr", "long", "ptr"]],
39 "CryptDuplicateKey" => ["long", ["long", "ptr", "long", "ptr"]],
40 "CryptEncrypt" => ["long", ["long", "long", "long", "long", "ptr", "ptr", "long"]],
41 "CryptEnumProviderTypesA" => ["long", ["long", "ptr", "long", "ptr", "str", "ptr"]],
42 "CryptEnumProviderTypesW" => ["long", ["long", "ptr", "long", "ptr", "wstr", "ptr"]],
43 "CryptEnumProvidersA" => ["long", ["long", "ptr", "long", "ptr", "str", "ptr"]],
44 "CryptEnumProvidersW" => ["long", ["long", "ptr", "long", "ptr", "wstr", "ptr"]],
45 "CryptExportKey" => ["long", ["long", "long", "long", "long", "ptr", "ptr"]],
46 "CryptGenKey" => ["long", ["long", "long", "long", "ptr"]],
47 "CryptGenRandom" => ["long", ["long", "long", "ptr"]],
48 "CryptGetDefaultProviderA" => ["long", ["long", "ptr", "long", "str", "ptr"]],
49 "CryptGetDefaultProviderW" => ["long", ["long", "ptr", "long", "wstr", "ptr"]],
50 "CryptGetHashParam" => ["long", ["long", "long", "ptr", "ptr", "long"]],
51 "CryptGetKeyParam" => ["long", ["long", "long", "ptr", "ptr", "long"]],
52 "CryptGetProvParam" => ["long", ["long", "long", "ptr", "ptr", "long"]],
53 "CryptGetUserKey" => ["long", ["long", "long", "ptr"]],
54 "CryptHashData" => ["long", ["long", "ptr", "long", "long"]],
55 "CryptHashSessionKey" => ["long", ["long", "long", "long"]],
56 "CryptImportKey" => ["long", ["long", "ptr", "long", "long", "long", "ptr"]],
57 "CryptReleaseContext" => ["long", ["long", "long"]],
58 "CryptSetHashParam" => ["long", ["long", "long", "ptr", "long"]],
59 "CryptSetKeyParam" => ["long", ["long", "long", "ptr", "long"]],
60 "CryptSetProvParam" => ["long", ["long", "long", "ptr", "long"]],
61 "CryptSetProviderA" => ["long", ["str", "long"]],
62 "CryptSetProviderExA" => ["long", ["str", "long", "ptr", "long"]],
63 "CryptSetProviderExW" => ["long", ["wstr", "long", "ptr", "long"]],
64 "CryptSetProviderW" => ["long", ["wstr", "long"]],
65 "CryptSignHashA" => ["long", ["long", "long", "str", "long", "ptr", "ptr"]],
66 "CryptSignHashW" => ["long", ["long", "long", "str", "long", "ptr", "ptr"]],
67 "CryptVerifySignatureA" => ["long", ["long", "ptr", "long", "long", "str", "long"]],
68 "CryptVerifySignatureW" => ["long", ["long", "ptr", "long", "long", "str", "long"]],
69 "DeleteService" => ["long", ["long"]],
70 "DeregisterEventSource" => ["long", ["long"]],
71 "EnumServicesStatusA" => ["long", ["long", "long", "long", "ptr", "long", "ptr", "ptr", "ptr"]],
72 "EnumServicesStatusW" => ["long", ["long", "long", "long", "ptr", "long", "ptr", "ptr", "ptr"]],
73 "EqualPrefixSid" => ["long", ["ptr", "ptr"]],
74 "EqualSid" => ["long", ["ptr", "ptr"]],
75 "FreeSid" => ["ptr", ["ptr"]],
76 "GetFileSecurityA" => ["long", ["str", "long", "ptr", "long", "ptr"]],
77 "GetFileSecurityW" => ["long", ["wstr", "long", "ptr", "long", "ptr"]],
78 "GetLengthSid" => ["long", ["ptr"]],
79 "GetNumberOfEventLogRecords" => ["long", ["long", "ptr"]],
80 "GetOldestEventLogRecord" => ["long", ["long", "ptr"]],
81 "GetSecurityDescriptorControl" => ["long", ["ptr", "ptr", "ptr"]],
82 "GetSecurityDescriptorDacl" => ["long", ["ptr", "ptr", "ptr", "ptr"]],
83 "GetSecurityDescriptorGroup" => ["long", ["ptr", "ptr", "ptr"]],
84 "GetSecurityDescriptorLength" => ["long", ["ptr"]],
85 "GetSecurityDescriptorOwner" => ["long", ["ptr", "ptr", "ptr"]],
86 "GetSecurityDescriptorSacl" => ["long", ["ptr", "ptr", "ptr", "ptr"]],
87 "GetSidIdentifierAuthority" => ["ptr", ["ptr"]],
88 "GetSidLengthRequired" => ["long", ["long"]],
89 "GetSidSubAuthority" => ["ptr", ["ptr", "long"]],
90 "GetSidSubAuthorityCount" => ["ptr", ["ptr"]],
91 "GetTokenInformation" => ["long", ["long", "long", "ptr", "long", "ptr"]],
92 "GetUserNameA" => ["long", ["str", "ptr"]],
93 "GetUserNameW" => ["long", ["wstr", "ptr"]],
94 "ImpersonateSelf" => ["long", ["long"]],
95 "InitializeAcl" => ["long", ["ptr", "long", "long"]],
96 "InitializeSecurityDescriptor" => ["long", ["ptr", "long"]],
97 "InitializeSid" => ["long", ["ptr", "ptr", "long"]],
98 "IsValidSecurityDescriptor" => ["long", ["ptr"]],
99 "IsValidSid" => ["long", ["ptr"]],
100 "LookupAccountNameA" => ["long", ["str", "str", "ptr", "ptr", "str", "ptr", "ptr"]],
101 "LookupAccountSidA" => ["long", ["str", "ptr", "str", "ptr", "str", "ptr", "ptr"]],
102 "LookupAccountSidW" => ["long", ["wstr", "ptr", "wstr", "ptr", "wstr", "ptr", "ptr"]],
103 "LookupPrivilegeValueA" => ["long", ["str", "str", "ptr"]],
104 "LookupPrivilegeValueW" => ["long", ["wstr", "wstr", "ptr"]],
105 "LsaClose" => ["long", ["long"]],
106 "LsaFreeMemory" => ["long", ["ptr"]],
107 "LsaLookupSids" => ["long", ["long", "long", "ptr", "ptr", "ptr"]],
108 "LsaOpenPolicy" => ["long", ["ptr", "ptr", "long", "ptr"]],
109 "LsaQueryInformationPolicy" => ["long", ["long", "long", "ptr"]],
110 "MakeSelfRelativeSD" => ["long", ["ptr", "ptr", "ptr"]],
111 "NotifyBootConfigStatus" => ["long", ["long"]],
112 "NotifyChangeEventLog" => ["long", ["long", "long"]],
113 "OpenBackupEventLogA" => ["long", ["str", "str"]],
114 "OpenBackupEventLogW" => ["long", ["wstr", "wstr"]],
115 "OpenEventLogA" => ["long", ["str", "str"]],
116 "OpenEventLogW" => ["long", ["wstr", "wstr"]],
117 "OpenProcessToken" => ["long", ["long", "long", "ptr"]],
118 "OpenSCManagerA" => ["long", ["str", "str", "long"]],
119 "OpenSCManagerW" => ["long", ["wstr", "wstr", "long"]],
120 "OpenServiceA" => ["long", ["long", "str", "long"]],
121 "OpenServiceW" => ["long", ["long", "wstr", "long"]],
122 "OpenThreadToken" => ["long", ["long", "long", "long", "ptr"]],
123 "QueryServiceStatus" => ["long", ["long", "ptr"]],
124 "QueryWindows31FilesMigration" => ["long", ["long"]],
125 "ReadEventLogA" => ["long", ["long", "long", "long", "ptr", "long", "ptr", "ptr"]],
126 "ReadEventLogW" => ["long", ["long", "long", "long", "ptr", "long", "ptr", "ptr"]],
127 "RegCloseKey" => ["long", ["long"]],
128 "RegConnectRegistryA" => ["long", ["str", "long", "ptr"]],
129 "RegConnectRegistryW" => ["long", ["wstr", "long", "ptr"]],
130 "RegCreateKeyA" => ["long", ["long", "str", "ptr"]],
131 "RegCreateKeyExA" => ["long", ["long", "str", "long", "str", "long", "long", "ptr", "ptr", "ptr"]],
132 "RegCreateKeyExW" => ["long", ["long", "wstr", "long", "wstr", "long", "long", "ptr", "ptr", "ptr"]],
133 "RegCreateKeyW" => ["long", ["long", "wstr", "ptr"]],
134 "RegDeleteKeyA" => ["long", ["long", "str"]],
135 "RegDeleteKeyW" => ["long", ["long", "wstr"]],
136 "RegDeleteValueA" => ["long", ["long", "str"]],
137 "RegDeleteValueW" => ["long", ["long", "wstr"]],
138 "RegEnumKeyA" => ["long", ["long", "long", "str", "long"]],
139 "RegEnumKeyExA" => ["long", ["long", "long", "str", "ptr", "ptr", "str", "ptr", "ptr"]],
140 "RegEnumKeyExW" => ["long", ["long", "long", "wstr", "ptr", "ptr", "wstr", "ptr", "ptr"]],
141 "RegEnumKeyW" => ["long", ["long", "long", "wstr", "long"]],
142 "RegEnumValueA" => ["long", ["long", "long", "str", "ptr", "ptr", "ptr", "ptr", "ptr"]],
143 "RegEnumValueW" => ["long", ["long", "long", "wstr", "ptr", "ptr", "ptr", "ptr", "ptr"]],
144 "RegFlushKey" => ["long", ["long"]],
145 "RegGetKeySecurity" => ["long", ["long", "long", "ptr", "ptr"]],
146 "RegLoadKeyA" => ["long", ["long", "str", "str"]],
147 "RegLoadKeyW" => ["long", ["long", "wstr", "wstr"]],
148 "RegNotifyChangeKeyValue" => ["long", ["long", "long", "long", "long", "long"]],
149 "RegOpenCurrentUser" => ["long", ["long", "ptr"]],
150 "RegOpenKeyA" => ["long", ["long", "str", "ptr"]],
151 "RegOpenKeyExA" => ["long", ["long", "str", "long", "long", "ptr"]],
152 "RegOpenKeyExW" => ["long", ["long", "wstr", "long", "long", "ptr"]],
153 "RegOpenKeyW" => ["long", ["long", "wstr", "ptr"]],
154 "RegQueryInfoKeyA" => ["long", ["long", "str", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr"]],
155 "RegQueryInfoKeyW" => ["long", ["long", "wstr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr"]],
156 "RegQueryValueA" => ["long", ["long", "str", "str", "ptr"]],
157 "RegQueryValueExA" => ["long", ["long", "str", "ptr", "ptr", "ptr", "ptr"]],
158 "RegQueryValueExW" => ["long", ["long", "wstr", "ptr", "ptr", "ptr", "ptr"]],
159 "RegQueryValueW" => ["long", ["long", "wstr", "wstr", "ptr"]],
160 "RegReplaceKeyW" => ["long", ["long", "wstr", "wstr", "wstr"]],
161 "RegRestoreKeyA" => ["long", ["long", "str", "long"]],
162 "RegRestoreKeyW" => ["long", ["long", "wstr", "long"]],
163 "RegSaveKeyA" => ["long", ["long", "str", "ptr"]],
164 "RegSaveKeyW" => ["long", ["long", "wstr", "ptr"]],
165 "RegSetKeySecurity" => ["long", ["long", "long", "ptr"]],
166 "RegSetValueA" => ["long", ["long", "str", "long", "str", "long"]],
167 "RegSetValueExA" => ["long", ["long", "str", "long", "long", "ptr", "long"]],
168 "RegSetValueExW" => ["long", ["long", "wstr", "long", "long", "ptr", "long"]],
169 "RegSetValueW" => ["long", ["long", "wstr", "long", "wstr", "long"]],
170 "RegUnLoadKeyA" => ["long", ["long", "str"]],
171 "RegUnLoadKeyW" => ["long", ["long", "wstr"]],
172 "RegisterEventSourceA" => ["long", ["str", "str"]],
173 "RegisterEventSourceW" => ["long", ["wstr", "wstr"]],
174 "RegisterServiceCtrlHandlerA" => ["long", ["str", "ptr"]],
175 "RegisterServiceCtrlHandlerW" => ["long", ["wstr", "ptr"]],
176 "ReportEventA" => ["long", ["long", "long", "long", "long", "ptr", "long", "long", "ptr", "ptr"]],
177 "ReportEventW" => ["long", ["long", "long", "long", "long", "ptr", "long", "long", "ptr", "ptr"]],
178 "RevertToSelf" => ["long", []],
179 "SetFileSecurityA" => ["long", ["str", "long", "ptr"]],
180 "SetFileSecurityW" => ["long", ["wstr", "long", "ptr"]],
181 "SetKernelObjectSecurity" => ["long", ["long", "long", "ptr"]],
182 "SetSecurityDescriptorDacl" => ["long", ["ptr", "long", "ptr", "long"]],
183 "SetSecurityDescriptorGroup" => ["long", ["ptr", "ptr", "long"]],
184 "SetSecurityDescriptorOwner" => ["long", ["ptr", "ptr", "long"]],
185 "SetSecurityDescriptorSacl" => ["long", ["ptr", "long", "ptr", "long"]],
186 "SetServiceStatus" => ["long", ["long", "ptr"]],
187 "SetThreadToken" => ["long", ["ptr", "long"]],
188 "StartServiceA" => ["long", ["long", "long", "ptr"]],
189 "StartServiceCtrlDispatcherA" => ["long", ["ptr"]],
190 "StartServiceCtrlDispatcherW" => ["long", ["ptr"]],
191 "StartServiceW" => ["long", ["long", "long", "ptr"]],
192 "SynchronizeWindows31FilesAndWindowsNTRegistry" => ["long", ["long", "long", "long", "long"]]
195 &wine::declare("advapi32",%$module_declarations);
196 push @EXPORT, map { "&" . $_; } sort(keys(%$module_declarations));