You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2011/04/30 17:56:15 UTC
svn commit: r1098123 - in /commons/sandbox/runtime/trunk/src/main:
java/org/apache/commons/runtime/platform/windows/Win32.java
native/os/win32/winapi.c
Author: mturk
Date: Sat Apr 30 15:56:15 2011
New Revision: 1098123
URL: http://svn.apache.org/viewvc?rev=1098123&view=rev
Log:
Start adding Services code
Modified:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/platform/windows/Win32.java
commons/sandbox/runtime/trunk/src/main/native/os/win32/winapi.c
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/platform/windows/Win32.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/platform/windows/Win32.java?rev=1098123&r1=1098122&r2=1098123&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/platform/windows/Win32.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/platform/windows/Win32.java Sat Apr 30 15:56:15 2011
@@ -125,6 +125,16 @@ final class Win32
public static final int PAGE_WRITECOMBINE = 0x00000400;
public static final int INVALID_HANDLE_VALUE = 0xFFFFFFFF;
+ public static final String SERVICES_ACTIVE_DATABASE = "ServicesActive";
+ public static final String SERVICES_FAILED_DATABASE = "ServicesFailed";
+
+ public static final int SC_MANAGER_CONNECT = 0x0001;
+ public static final int SC_MANAGER_CREATE_SERVICE = 0x0002;
+ public static final int SC_MANAGER_ENUMERATE_SERVICE = 0x0004;
+ public static final int SC_MANAGER_LOCK = 0x0008;
+ public static final int SC_MANAGER_QUERY_LOCK_STATUS = 0x0010;
+ public static final int SC_MANAGER_MODIFY_BOOT_CONFIG = 0x0020;
+ public static final int SC_MANAGER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x003F;
public static native int CloseHandle(int handle);
public static native int LocalFree(long ptr);
@@ -140,6 +150,8 @@ final class Win32
public static native int VirtualProtect(long addr, long size, int protect);
public static native int VirtualFree(long addr, long size, int type);
+ public static native long OpenSCManager(String machine, String database, int mode);
+ public static native int CloseServiceHandle(long handle);
public static final int HEAP_POINTER = 1;
public static final int SLICE_POINTER = 2;
Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/winapi.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/winapi.c?rev=1098123&r1=1098122&r2=1098123&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/winapi.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/winapi.c Sat Apr 30 15:56:15 2011
@@ -178,3 +178,27 @@ ACR_WIN_EXPORT(jint, Win32, VirtualFree)
else
return ACR_GET_OS_ERROR();
}
+
+ACR_WIN_EXPORT(jlong, Win32, OpenSCManager)(JNI_STDARGS, jstring machine, jstring database, jint mode)
+{
+ DWORD rc = ACR_EINVAL;
+ SC_HANDLE scm = 0;
+
+ WITH_WSTR(machine) {
+ WITH_WSTR(database) {
+ scm = OpenSCManager(J2S(machine), J2S(database), mode);
+ if (scm == 0)
+ ACR_SAVE_OS_ERROR();
+ } DONE_WITH_STR(database);
+ } DONE_WITH_STR(machine);
+
+ return P2J(scm);
+}
+
+ACR_WIN_EXPORT(jint, Win32, CloseServiceHandle)(JNI_STDARGS, jlong handle)
+{
+ if (CloseServiceHandle(J2P(handle, SC_HANDLE)))
+ return 0;
+ else
+ return ACR_GET_OS_ERROR();
+}