summaryrefslogtreecommitdiff
path: root/odk/source
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2006-06-19 12:08:07 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2006-06-19 12:08:07 +0000
commita929e608fbb2a75cab8de3a54fa03ee3bd49c2bb (patch)
tree114024676b6d2782446050345fea79eda8a46dc8 /odk/source
parentd5e331f2beb2d07c89f117ff0f3dbba5d8ab1506 (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.cxx190
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;
+}