From fe6fec12bc6b03d1ed88c61bd3e2b4da62bdaf5b Mon Sep 17 00:00:00 2001 From: Gary Spencer Date: Thu, 6 Apr 2006 08:50:45 +0000 Subject: [PATCH] Added code to detect if running on 64bit Windows to the Win32NetBIOS static initializer method and load the appropriate DLL. Added the X64 utility class, currently just has a method for detecting 64bit Windows. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2627 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../filesys/netbios/win32/Win32NetBIOS.java | 13 +++- .../java/org/alfresco/filesys/util/X64.java | 66 +++++++++++++++++++ 2 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 source/java/org/alfresco/filesys/util/X64.java diff --git a/source/java/org/alfresco/filesys/netbios/win32/Win32NetBIOS.java b/source/java/org/alfresco/filesys/netbios/win32/Win32NetBIOS.java index eec3c4b8f0..a356facc04 100644 --- a/source/java/org/alfresco/filesys/netbios/win32/Win32NetBIOS.java +++ b/source/java/org/alfresco/filesys/netbios/win32/Win32NetBIOS.java @@ -25,6 +25,7 @@ import java.util.Hashtable; import org.alfresco.filesys.netbios.NetBIOSName; import org.alfresco.filesys.util.DataBuffer; import org.alfresco.filesys.util.IPAddress; +import org.alfresco.filesys.util.X64; /** * Win32 NetBIOS Native Call Wrapper Class @@ -696,15 +697,23 @@ public class Win32NetBIOS */ static { - + // Check if we are running under 64 bit Windows + + String dllName = "Win32NetBIOS"; + + if ( X64.isWindows64()) + dllName = "Win32NetBIOSx64"; + // Load the Win32 NetBIOS interface library try { - System.loadLibrary("Win32NetBIOS"); + System.loadLibrary( dllName); } catch (Throwable ex) { + ex.printStackTrace(); + // Save the native code load exception m_loadDLLException = ex; diff --git a/source/java/org/alfresco/filesys/util/X64.java b/source/java/org/alfresco/filesys/util/X64.java new file mode 100644 index 0000000000..7fb4af9e0b --- /dev/null +++ b/source/java/org/alfresco/filesys/util/X64.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ + +package org.alfresco.filesys.util; + +import java.util.Properties; + +/** + * X64 Class + * + *

Check if the platform is a 64bit operating system. + * + * @author gkspencer + */ +public class X64 +{ + /** + * Check if we are running on a Windows 64bit system + * + * @return boolean + */ + public static boolean isWindows64() + { + // Check for Windows + + String prop = System.getProperty("os.name"); + if ( prop == null || prop.startsWith("Windows") == false) + return false; + + // Check the OS architecture + + prop = System.getProperty("os.arch"); + if ( prop != null && prop.equalsIgnoreCase("amd64")) + return true; + + // Check the VM name + + prop = System.getProperty("java.vm.name"); + if ( prop != null && prop.indexOf("64-Bit") != -1) + return true; + + // Check the data model + + prop = System.getProperty("sun.arch.data.model"); + if ( prop != null && prop.equals("64")) + return true; + + // Not 64 bit Windows + + return false; + } +}