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