xref: /AOO41X/main/sal/inc/systools/win32/advapi9x.h (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #pragma once
28*cdf0e10cSrcweir 
29*cdf0e10cSrcweir #ifndef _WINDOWS_
30*cdf0e10cSrcweir #include <windows.h>
31*cdf0e10cSrcweir #endif
32*cdf0e10cSrcweir 
33*cdf0e10cSrcweir #ifdef __cplusplus
34*cdf0e10cSrcweir extern "C"{
35*cdf0e10cSrcweir #endif
36*cdf0e10cSrcweir 
37*cdf0e10cSrcweir //------------------------------------------------------------------------
38*cdf0e10cSrcweir // undefine the macros defined in the shlobj.h file in order to avoid
39*cdf0e10cSrcweir // warnings because of multiple defines
40*cdf0e10cSrcweir //------------------------------------------------------------------------
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir // begin obsolete Win32 API functions -->
43*cdf0e10cSrcweir #ifdef RegOpenKey
44*cdf0e10cSrcweir #undef RegOpenKey
45*cdf0e10cSrcweir #endif
46*cdf0e10cSrcweir #ifdef RegEnumKey
47*cdf0e10cSrcweir #undef RegEnumKey
48*cdf0e10cSrcweir #endif
49*cdf0e10cSrcweir #ifdef RegCreateKey
50*cdf0e10cSrcweir #undef RegCreateKey
51*cdf0e10cSrcweir #endif
52*cdf0e10cSrcweir #ifdef RegQueryValue
53*cdf0e10cSrcweir #undef RegQueryValue
54*cdf0e10cSrcweir #endif
55*cdf0e10cSrcweir #ifdef RegSetValue
56*cdf0e10cSrcweir #undef RegSetValue
57*cdf0e10cSrcweir #endif
58*cdf0e10cSrcweir // <-- end obsolete Win32 functions
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir #ifdef RegOpenKeyExW
61*cdf0e10cSrcweir #undef RegOpenKeyExW
62*cdf0e10cSrcweir #endif
63*cdf0e10cSrcweir #ifdef RegEnumKeyExW
64*cdf0e10cSrcweir #undef RegEnumKeyExW
65*cdf0e10cSrcweir #endif
66*cdf0e10cSrcweir #ifdef RegCreateKeyExW
67*cdf0e10cSrcweir #undef RegCreateKeyExW
68*cdf0e10cSrcweir #endif
69*cdf0e10cSrcweir #ifdef RegDeleteKeyW
70*cdf0e10cSrcweir #undef RegDeleteKeyW
71*cdf0e10cSrcweir #endif
72*cdf0e10cSrcweir #ifdef RegEnumValueW
73*cdf0e10cSrcweir #undef RegEnumValueW
74*cdf0e10cSrcweir #endif
75*cdf0e10cSrcweir #ifdef RegQueryValueExW
76*cdf0e10cSrcweir #undef RegQueryValueExW
77*cdf0e10cSrcweir #endif
78*cdf0e10cSrcweir #ifdef RegSetValueExW
79*cdf0e10cSrcweir #undef RegSetValueExW
80*cdf0e10cSrcweir #endif
81*cdf0e10cSrcweir #ifdef RegDeleteValueW
82*cdf0e10cSrcweir #undef RegDeleteValueW
83*cdf0e10cSrcweir #endif
84*cdf0e10cSrcweir #ifdef RegQueryInfoKeyW
85*cdf0e10cSrcweir #undef RegQueryInfoKeyW
86*cdf0e10cSrcweir #endif
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir //------------------------------------------------------------------------
89*cdf0e10cSrcweir // set the compiler directives for the function pointer we declare below
90*cdf0e10cSrcweir // if we build sal or sal will be used as static library we define extern
91*cdf0e10cSrcweir // else sal exports the function pointers from a dll and we use __declspec
92*cdf0e10cSrcweir //------------------------------------------------------------------------
93*cdf0e10cSrcweir 
94*cdf0e10cSrcweir #define ADVAPI9X_API extern
95*cdf0e10cSrcweir 
96*cdf0e10cSrcweir 	//------------------------------------------------------------------------
97*cdf0e10cSrcweir // declare function pointers to the appropriate shell functions
98*cdf0e10cSrcweir //------------------------------------------------------------------------
99*cdf0e10cSrcweir 
100*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI * lpfnRegOpenKeyExW) (
101*cdf0e10cSrcweir   HKEY hKey,         // handle to open key
102*cdf0e10cSrcweir   LPCWSTR lpSubKey,  // subkey name
103*cdf0e10cSrcweir   DWORD ulOptions,   // reserved
104*cdf0e10cSrcweir   REGSAM samDesired, // security access mask
105*cdf0e10cSrcweir   PHKEY phkResult    // handle to open key
106*cdf0e10cSrcweir );
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegEnumKeyExW) (
109*cdf0e10cSrcweir   HKEY hKey,                  // handle to key to enumerate
110*cdf0e10cSrcweir   DWORD dwIndex,              // subkey index
111*cdf0e10cSrcweir   LPWSTR lpName,              // subkey name
112*cdf0e10cSrcweir   LPDWORD lpcName,            // size of subkey buffer
113*cdf0e10cSrcweir   LPDWORD lpReserved,         // reserved
114*cdf0e10cSrcweir   LPWSTR lpClass,             // class string buffer
115*cdf0e10cSrcweir   LPDWORD lpcClass,           // size of class string buffer
116*cdf0e10cSrcweir   PFILETIME lpftLastWriteTime // last write time
117*cdf0e10cSrcweir );
118*cdf0e10cSrcweir 
119*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegCreateKeyExW)(
120*cdf0e10cSrcweir   HKEY hKey,                                  // handle to open key
121*cdf0e10cSrcweir   LPCWSTR lpSubKey,                           // subkey name
122*cdf0e10cSrcweir   DWORD Reserved,                             // reserved
123*cdf0e10cSrcweir   LPWSTR lpClass,                             // class string
124*cdf0e10cSrcweir   DWORD dwOptions,                            // special options
125*cdf0e10cSrcweir   REGSAM samDesired,                          // desired security access
126*cdf0e10cSrcweir   LPSECURITY_ATTRIBUTES lpSecurityAttributes, // inheritance
127*cdf0e10cSrcweir   PHKEY phkResult,                            // key handle
128*cdf0e10cSrcweir   LPDWORD lpdwDisposition                     // disposition value buffer
129*cdf0e10cSrcweir );
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegDeleteKeyW) (
132*cdf0e10cSrcweir   HKEY hKey,         // handle to open key
133*cdf0e10cSrcweir   LPCWSTR lpSubKey   // subkey name
134*cdf0e10cSrcweir );
135*cdf0e10cSrcweir 
136*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegEnumValueW) (
137*cdf0e10cSrcweir   HKEY hKey,             // handle to key to query
138*cdf0e10cSrcweir   DWORD dwIndex,         // index of value to query
139*cdf0e10cSrcweir   LPWSTR lpValueName,    // value buffer
140*cdf0e10cSrcweir   LPDWORD lpcValueName,  // size of value buffer
141*cdf0e10cSrcweir   LPDWORD lpReserved,    // reserved
142*cdf0e10cSrcweir   LPDWORD lpType,        // type buffer
143*cdf0e10cSrcweir   LPBYTE lpData,         // data buffer
144*cdf0e10cSrcweir   LPDWORD lpcbData       // size of data buffer
145*cdf0e10cSrcweir );
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegQueryValueExW) (
148*cdf0e10cSrcweir   HKEY hKey,            // handle to key
149*cdf0e10cSrcweir   LPCWSTR lpValueName,  // value name
150*cdf0e10cSrcweir   LPDWORD lpReserved,   // reserved
151*cdf0e10cSrcweir   LPDWORD lpType,       // type buffer
152*cdf0e10cSrcweir   LPBYTE lpData,        // data buffer
153*cdf0e10cSrcweir   LPDWORD lpcbData      // size of data buffer
154*cdf0e10cSrcweir );
155*cdf0e10cSrcweir 
156*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegSetValueExW)(
157*cdf0e10cSrcweir   HKEY hKey,           // handle to key
158*cdf0e10cSrcweir   LPCWSTR lpValueName, // value name
159*cdf0e10cSrcweir   DWORD Reserved,      // reserved
160*cdf0e10cSrcweir   DWORD dwType,        // value type
161*cdf0e10cSrcweir   CONST BYTE *lpData,  // value data
162*cdf0e10cSrcweir   DWORD cbData         // size of value data
163*cdf0e10cSrcweir );
164*cdf0e10cSrcweir 
165*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegDeleteValueW) (
166*cdf0e10cSrcweir   HKEY hKey,            // handle to key
167*cdf0e10cSrcweir   LPCWSTR lpValueName   // value name
168*cdf0e10cSrcweir );
169*cdf0e10cSrcweir 
170*cdf0e10cSrcweir ADVAPI9X_API LONG (WINAPI *lpfnRegQueryInfoKeyW) (
171*cdf0e10cSrcweir 	HKEY hKey,						// handle to key to query
172*cdf0e10cSrcweir 	LPWSTR lpClassW,				// address of buffer for class string
173*cdf0e10cSrcweir 	LPDWORD lpcbClass,				// address of size of class string buffer
174*cdf0e10cSrcweir 	LPDWORD lpReserved,				// reserved
175*cdf0e10cSrcweir 	LPDWORD lpcSubKeys,				// address of buffer for number of
176*cdf0e10cSrcweir 									// subkeys
177*cdf0e10cSrcweir 	LPDWORD lpcbMaxSubKeyLen,		// address of buffer for longest subkey
178*cdf0e10cSrcweir 									// name length
179*cdf0e10cSrcweir 	LPDWORD lpcbMaxClassLen,		// address of buffer for longest class
180*cdf0e10cSrcweir 									// string length
181*cdf0e10cSrcweir 	LPDWORD lpcValues,				// address of buffer for number of value
182*cdf0e10cSrcweir 									// entries
183*cdf0e10cSrcweir 	LPDWORD lpcbMaxValueNameLen,	// address of buffer for longest
184*cdf0e10cSrcweir 									// value name length
185*cdf0e10cSrcweir 	LPDWORD lpcbMaxValueLen,		// address of buffer for longest value
186*cdf0e10cSrcweir 									// data length
187*cdf0e10cSrcweir 	LPDWORD lpcbSecurityDescriptor,	// address of buffer for security
188*cdf0e10cSrcweir 									// descriptor length
189*cdf0e10cSrcweir 	PFILETIME lpftLastWriteTime		// address of buffer for last write time
190*cdf0e10cSrcweir );
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir //------------------------------------------------------------------------
193*cdf0e10cSrcweir // redefine the above undefined macros so that the preprocessor replaces
194*cdf0e10cSrcweir // all occurrences of this macros with our function pointer
195*cdf0e10cSrcweir //------------------------------------------------------------------------
196*cdf0e10cSrcweir 
197*cdf0e10cSrcweir #define RegOpenKeyExW    lpfnRegOpenKeyExW
198*cdf0e10cSrcweir #define RegEnumKeyExW    lpfnRegEnumKeyExW
199*cdf0e10cSrcweir #define RegCreateKeyExW  lpfnRegCreateKeyExW
200*cdf0e10cSrcweir #define RegDeleteKeyW    lpfnRegDeleteKeyW
201*cdf0e10cSrcweir #define RegEnumValueW    lpfnRegEnumValueW
202*cdf0e10cSrcweir #define RegQueryValueExW lpfnRegQueryValueExW
203*cdf0e10cSrcweir #define RegSetValueExW   lpfnRegSetValueExW
204*cdf0e10cSrcweir #define RegDeleteValueW  lpfnRegDeleteValueW
205*cdf0e10cSrcweir #define RegQueryInfoKeyW lpfnRegQueryInfoKeyW
206*cdf0e10cSrcweir 
207*cdf0e10cSrcweir #ifdef __cplusplus
208*cdf0e10cSrcweir }
209*cdf0e10cSrcweir #endif
210