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();
+}