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