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 "GetFileSecurityA" => ["long", ["str", "long", "ptr", "long", "ptr"]],
81 "GetFileSecurityW" => ["long", ["wstr", "long", "ptr", "long", "ptr"]],
82 "GetLengthSid" => ["long", ["ptr"]],
83 "GetNumberOfEventLogRecords" => ["long", ["long", "ptr"]],
84 "GetOldestEventLogRecord" => ["long", ["long", "ptr"]],
85 "GetSecurityDescriptorControl" => ["long", ["ptr", "ptr", "ptr"]],
86 "GetSecurityDescriptorDacl" => ["long", ["ptr", "ptr", "ptr", "ptr"]],
87 "GetSecurityDescriptorGroup" => ["long", ["ptr", "ptr", "ptr"]],
88 "GetSecurityDescriptorLength" => ["long", ["ptr"]],
89 "GetSecurityDescriptorOwner" => ["long", ["ptr", "ptr", "ptr"]],
90 "GetSecurityDescriptorSacl" => ["long", ["ptr", "ptr", "ptr", "ptr"]],
91 "GetSidIdentifierAuthority" => ["ptr", ["ptr"]],
92 "GetSidLengthRequired" => ["long", ["long"]],
93 "GetSidSubAuthority" => ["ptr", ["ptr", "long"]],
94 "GetSidSubAuthorityCount" => ["ptr", ["ptr"]],
95 "GetTokenInformation" => ["long", ["long", "long", "ptr", "long", "ptr"]],
96 "GetUserNameA" => ["long", ["str", "ptr"]],
97 "GetUserNameW" => ["long", ["wstr", "ptr"]],
98 "ImpersonateLoggedOnUser" => ["long", ["long"]],
99 "ImpersonateSelf" => ["long", ["long"]],
100 "InitializeAcl" => ["long", ["ptr", "long", "long"]],
101 "InitializeSecurityDescriptor" => ["long", ["ptr", "long"]],
102 "InitializeSid" => ["long", ["ptr", "ptr", "long"]],
103 "IsValidSecurityDescriptor" => ["long", ["ptr"]],
104 "IsValidSid" => ["long", ["ptr"]],
105 "LookupAccountNameA" => ["long", ["str", "str", "ptr", "ptr", "str", "ptr", "ptr"]],
106 "LookupAccountSidA" => ["long", ["str", "ptr", "str", "ptr", "str", "ptr", "ptr"]],
107 "LookupAccountSidW" => ["long", ["wstr", "ptr", "wstr", "ptr", "wstr", "ptr", "ptr"]],
108 "LookupPrivilegeValueA" => ["long", ["str", "str", "ptr"]],
109 "LookupPrivilegeValueW" => ["long", ["wstr", "wstr", "ptr"]],
110 "LsaClose" => ["long", ["long"]],
111 "LsaFreeMemory" => ["long", ["ptr"]],
112 "LsaLookupSids" => ["long", ["long", "long", "ptr", "ptr", "ptr"]],
113 "LsaOpenPolicy" => ["long", ["ptr", "ptr", "long", "ptr"]],
114 "LsaQueryInformationPolicy" => ["long", ["long", "long", "ptr"]],
115 "MakeSelfRelativeSD" => ["long", ["ptr", "ptr", "ptr"]],
116 "NotifyBootConfigStatus" => ["long", ["long"]],
117 "NotifyChangeEventLog" => ["long", ["long", "long"]],
118 "OpenBackupEventLogA" => ["long", ["str", "str"]],
119 "OpenBackupEventLogW" => ["long", ["wstr", "wstr"]],
120 "OpenEventLogA" => ["long", ["str", "str"]],
121 "OpenEventLogW" => ["long", ["wstr", "wstr"]],
122 "OpenProcessToken" => ["long", ["long", "long", "ptr"]],
123 "OpenSCManagerA" => ["long", ["str", "str", "long"]],
124 "OpenSCManagerW" => ["long", ["wstr", "wstr", "long"]],
125 "OpenServiceA" => ["long", ["long", "str", "long"]],
126 "OpenServiceW" => ["long", ["long", "wstr", "long"]],
127 "OpenThreadToken" => ["long", ["long", "long", "long", "ptr"]],
128 "PrivilegeCheck" => ["long", ["long", "ptr", "ptr"]],
129 "QueryServiceStatus" => ["long", ["long", "ptr"]],
130 "QueryWindows31FilesMigration" => ["long", ["long"]],
131 "ReadEventLogA" => ["long", ["long", "long", "long", "ptr", "long", "ptr", "ptr"]],
132 "ReadEventLogW" => ["long", ["long", "long", "long", "ptr", "long", "ptr", "ptr"]],
133 "RegCloseKey" => ["long", ["long"]],
134 "RegConnectRegistryA" => ["long", ["str", "long", "ptr"]],
135 "RegConnectRegistryW" => ["long", ["wstr", "long", "ptr"]],
136 "RegCreateKeyA" => ["long", ["long", "str", "ptr"]],
137 "RegCreateKeyExA" => ["long", ["long", "str", "long", "str", "long", "long", "ptr", "ptr", "ptr"]],
138 "RegCreateKeyExW" => ["long", ["long", "wstr", "long", "wstr", "long", "long", "ptr", "ptr", "ptr"]],
139 "RegCreateKeyW" => ["long", ["long", "wstr", "ptr"]],
140 "RegDeleteKeyA" => ["long", ["long", "str"]],
141 "RegDeleteKeyW" => ["long", ["long", "wstr"]],
142 "RegDeleteValueA" => ["long", ["long", "str"]],
143 "RegDeleteValueW" => ["long", ["long", "wstr"]],
144 "RegEnumKeyA" => ["long", ["long", "long", "str", "long"]],
145 "RegEnumKeyExA" => ["long", ["long", "long", "str", "ptr", "ptr", "str", "ptr", "ptr"]],
146 "RegEnumKeyExW" => ["long", ["long", "long", "wstr", "ptr", "ptr", "wstr", "ptr", "ptr"]],
147 "RegEnumKeyW" => ["long", ["long", "long", "wstr", "long"]],
148 "RegEnumValueA" => ["long", ["long", "long", "str", "ptr", "ptr", "ptr", "ptr", "ptr"]],
149 "RegEnumValueW" => ["long", ["long", "long", "wstr", "ptr", "ptr", "ptr", "ptr", "ptr"]],
150 "RegFlushKey" => ["long", ["long"]],
151 "RegGetKeySecurity" => ["long", ["long", "long", "ptr", "ptr"]],
152 "RegLoadKeyA" => ["long", ["long", "str", "str"]],
153 "RegLoadKeyW" => ["long", ["long", "wstr", "wstr"]],
154 "RegNotifyChangeKeyValue" => ["long", ["long", "long", "long", "long", "long"]],
155 "RegOpenCurrentUser" => ["long", ["long", "ptr"]],
156 "RegOpenKeyA" => ["long", ["long", "str", "ptr"]],
157 "RegOpenKeyExA" => ["long", ["long", "str", "long", "long", "ptr"]],
158 "RegOpenKeyExW" => ["long", ["long", "wstr", "long", "long", "ptr"]],
159 "RegOpenKeyW" => ["long", ["long", "wstr", "ptr"]],
160 "RegQueryInfoKeyA" => ["long", ["long", "str", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr"]],
161 "RegQueryInfoKeyW" => ["long", ["long", "wstr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr", "ptr"]],
162 "RegQueryValueA" => ["long", ["long", "str", "str", "ptr"]],
163 "RegQueryValueExA" => ["long", ["long", "str", "ptr", "ptr", "ptr", "ptr"]],
164 "RegQueryValueExW" => ["long", ["long", "wstr", "ptr", "ptr", "ptr", "ptr"]],
165 "RegQueryValueW" => ["long", ["long", "wstr", "wstr", "ptr"]],
166 "RegReplaceKeyW" => ["long", ["long", "wstr", "wstr", "wstr"]],
167 "RegRestoreKeyA" => ["long", ["long", "str", "long"]],
168 "RegRestoreKeyW" => ["long", ["long", "wstr", "long"]],
169 "RegSaveKeyA" => ["long", ["long", "str", "ptr"]],
170 "RegSaveKeyW" => ["long", ["long", "wstr", "ptr"]],
171 "RegSetKeySecurity" => ["long", ["long", "long", "ptr"]],
172 "RegSetValueA" => ["long", ["long", "str", "long", "str", "long"]],
173 "RegSetValueExA" => ["long", ["long", "str", "long", "long", "ptr", "long"]],
174 "RegSetValueExW" => ["long", ["long", "wstr", "long", "long", "ptr", "long"]],
175 "RegSetValueW" => ["long", ["long", "wstr", "long", "wstr", "long"]],
176 "RegUnLoadKeyA" => ["long", ["long", "str"]],
177 "RegUnLoadKeyW" => ["long", ["long", "wstr"]],
178 "RegisterEventSourceA" => ["long", ["str", "str"]],
179 "RegisterEventSourceW" => ["long", ["wstr", "wstr"]],
180 "RegisterServiceCtrlHandlerA" => ["long", ["str", "ptr"]],
181 "RegisterServiceCtrlHandlerW" => ["long", ["wstr", "ptr"]],
182 "ReportEventA" => ["long", ["long", "long", "long", "long", "ptr", "long", "long", "ptr", "ptr"]],
183 "ReportEventW" => ["long", ["long", "long", "long", "long", "ptr", "long", "long", "ptr", "ptr"]],
184 "RevertToSelf" => ["long", []],
185 "SetFileSecurityA" => ["long", ["str", "long", "ptr"]],
186 "SetFileSecurityW" => ["long", ["wstr", "long", "ptr"]],
187 "SetKernelObjectSecurity" => ["long", ["long", "long", "ptr"]],
188 "SetSecurityDescriptorDacl" => ["long", ["ptr", "long", "ptr", "long"]],
189 "SetSecurityDescriptorGroup" => ["long", ["ptr", "ptr", "long"]],
190 "SetSecurityDescriptorOwner" => ["long", ["ptr", "ptr", "long"]],
191 "SetSecurityDescriptorSacl" => ["long", ["ptr", "long", "ptr", "long"]],
192 "SetServiceStatus" => ["long", ["long", "ptr"]],
193 "SetThreadToken" => ["long", ["ptr", "long"]],
194 "StartServiceA" => ["long", ["long", "long", "ptr"]],
195 "StartServiceCtrlDispatcherA" => ["long", ["ptr"]],
196 "StartServiceCtrlDispatcherW" => ["long", ["ptr"]],
197 "StartServiceW" => ["long", ["long", "long", "ptr"]],
198 "SynchronizeWindows31FilesAndWindowsNTRegistry" => ["long", ["long", "long", "long", "long"]]
201 &wine::declare("advapi32",%$module_declarations);
202 push @EXPORT, map { "&" . $_; } sort(keys(%$module_declarations));