diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2006-06-19 12:08:07 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2006-06-19 12:08:07 +0000 |
commit | a929e608fbb2a75cab8de3a54fa03ee3bd49c2bb (patch) | |
tree | 114024676b6d2782446050345fea79eda8a46dc8 /odk/source | |
parent | d5e331f2beb2d07c89f117ff0f3dbba5d8ab1506 (diff) |
INTEGRATION: CWS warnings01 (1.1.2); FILE ADDED
2006/03/01 14:13:07 sb 1.1.2.1: #i53898# Moved unowinreg.c to unowinreg.cxx to help make code waring-free.
Diffstat (limited to 'odk/source')
-rw-r--r-- | odk/source/unowinreg/win/unowinreg.cxx | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/odk/source/unowinreg/win/unowinreg.cxx b/odk/source/unowinreg/win/unowinreg.cxx new file mode 100644 index 000000000000..b2b5697274e1 --- /dev/null +++ b/odk/source/unowinreg/win/unowinreg.cxx @@ -0,0 +1,190 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: unowinreg.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: hr $ $Date: 2006-06-19 13:08:07 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#if defined _MSC_VER +#pragma warning(push, 1) +#endif +#include <windows.h> +#if defined _MSC_VER +#pragma warning(pop) +#endif + +#include <jni.h> + +extern "C" BOOL __stdcall _DllMainCRTStartup(HINSTANCE, DWORD, LPVOID) +{ + return TRUE; +} + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegOpenClassesRoot( + JNIEnv *env, jclass, jlongArray hkresult) +{ + jboolean ret = JNI_FALSE; + PHKEY phkey = (PHKEY)env->GetLongArrayElements(hkresult, 0); + if (RegOpenKeyEx(HKEY_CLASSES_ROOT, NULL, 0, KEY_READ, phkey) + == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseLongArrayElements(hkresult, (jlong *)phkey, 0); + return ret; +} + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegOpenCurrentConfig( + JNIEnv *env, jclass, jlongArray hkresult) +{ + jboolean ret = JNI_FALSE; + PHKEY phkey = (PHKEY)env->GetLongArrayElements(hkresult, 0); + if (RegOpenKeyEx(HKEY_CURRENT_CONFIG, NULL, 0, KEY_READ, phkey) + == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseLongArrayElements(hkresult, (jlong *)phkey, 0); + return ret; +} + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegOpenCurrentUser( + JNIEnv *env, jclass, jlongArray hkresult) +{ + jboolean ret = JNI_FALSE; + PHKEY phkey = (PHKEY)env->GetLongArrayElements(hkresult, 0); + if (RegOpenKeyEx(HKEY_CURRENT_USER, NULL, 0, KEY_READ, phkey) + == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseLongArrayElements(hkresult, (jlong *)phkey, 0); + return ret; +} + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegOpenLocalMachine( + JNIEnv *env, jclass, jlongArray hkresult) +{ + jboolean ret = JNI_FALSE; + PHKEY phkey = (PHKEY)env->GetLongArrayElements(hkresult, 0); + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, NULL, 0, KEY_READ, phkey) + == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseLongArrayElements(hkresult, (jlong *)phkey, 0); + return ret; +} + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegOpenUsers( + JNIEnv *env, jclass, jlongArray hkresult) +{ + jboolean ret = JNI_FALSE; + PHKEY phkey = (PHKEY)env->GetLongArrayElements(hkresult, 0); + if (RegOpenKeyEx(HKEY_USERS, NULL, 0, KEY_READ, phkey) == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseLongArrayElements(hkresult, (jlong *)phkey, 0); + return ret; +} + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegOpenKeyEx( + JNIEnv *env, jclass, jlong parent, jstring name, jlongArray hkresult) +{ + jboolean ret = JNI_FALSE; + const char *namestr = env->GetStringUTFChars(name, 0); + PHKEY phkey = (PHKEY)env->GetLongArrayElements(hkresult, 0); + if (RegOpenKeyEx((HKEY)parent, namestr, 0, KEY_READ, phkey) + == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseStringUTFChars(name, namestr); + env->ReleaseLongArrayElements(hkresult, (jlong *)phkey, 0); + return ret; +} + + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegCloseKey( + JNIEnv *, jclass, jlong hkey) +{ + jboolean ret = JNI_FALSE; + if (RegCloseKey((HKEY)hkey) == ERROR_SUCCESS) + ret = JNI_TRUE; + return ret; +} + +extern "C" JNIEXPORT jboolean + JNICALL Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegQueryValueEx( + JNIEnv *env, jclass, jlong hkey, jstring value, jlongArray type, + jbyteArray data, jlongArray size) +{ + jboolean ret = JNI_FALSE; + const char* valuestr = env->GetStringUTFChars(value, 0); + LPDWORD ptype = (LPDWORD)env->GetLongArrayElements(type, 0); + LPBYTE pdata = (LPBYTE)env->GetByteArrayElements(data, 0); + LPDWORD psize = (LPDWORD)env->GetLongArrayElements(size, 0); + if (RegQueryValueEx((HKEY)hkey, valuestr, NULL, ptype, pdata, psize) + == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseStringUTFChars(value, valuestr); + env->ReleaseLongArrayElements(type, (jlong *)ptype, 0); + env->ReleaseByteArrayElements(data, (jbyte *)pdata, 0); + env->ReleaseLongArrayElements(size, (jlong *)psize, 0); + return ret; +} + +extern "C" JNIEXPORT jboolean JNICALL + Java_com_sun_star_lib_loader_WinRegKey_winreg_1RegQueryInfoKey( + JNIEnv *env, jclass, jlong hkey, jlongArray subkeys, + jlongArray maxSubkeyLen, jlongArray values, jlongArray maxValueNameLen, + jlongArray maxValueLen, jlongArray secDescriptor) +{ + jboolean ret = JNI_FALSE; + LPDWORD psubkeys = (LPDWORD)env->GetLongArrayElements(subkeys, 0); + LPDWORD pmaxSubkeyLen = + (LPDWORD)env->GetLongArrayElements(maxSubkeyLen, 0); + LPDWORD pvalues = (LPDWORD)env->GetLongArrayElements(values, 0); + LPDWORD pmaxValueNameLen = + (LPDWORD)env->GetLongArrayElements(maxValueNameLen, 0); + LPDWORD pmaxValueLen = + (LPDWORD)env->GetLongArrayElements(maxValueLen, 0); + LPDWORD psecDescriptor = + (LPDWORD)env->GetLongArrayElements(secDescriptor, 0); + FILETIME ft; + if (RegQueryInfoKey((HKEY)hkey, NULL, NULL, NULL, psubkeys, pmaxSubkeyLen, + NULL, pvalues, pmaxValueNameLen, pmaxValueLen, + psecDescriptor, &ft) == ERROR_SUCCESS) + ret = JNI_TRUE; + env->ReleaseLongArrayElements(subkeys, (jlong*)psubkeys, 0); + env->ReleaseLongArrayElements(maxSubkeyLen, (jlong*)pmaxSubkeyLen, 0); + env->ReleaseLongArrayElements(values, (jlong*)pvalues, 0); + env->ReleaseLongArrayElements(maxValueNameLen, (jlong*)pmaxValueNameLen, 0); + env->ReleaseLongArrayElements(maxValueLen, (jlong*)pmaxValueLen, 0); + env->ReleaseLongArrayElements(secDescriptor, (jlong*)psecDescriptor, 0); + return ret; +} |