modules/jdk.packager/src/main/native/library/common/WindowsPlatform.h
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2014, 2016, Oracle and/or its affiliates.
* All rights reserved. Use is subject to license terms.
*
* This file is available and licensed under the following license:
*
* Redistribution and use in source and binary forms, with or without
--- 1,7 ----
/*
! * Copyright (c) 2014, 2017, Oracle and/or its affiliates.
* All rights reserved. Use is subject to license terms.
*
* This file is available and licensed under the following license:
*
* Redistribution and use in source and binary forms, with or without
*** 42,51 ****
--- 42,88 ----
#include "JavaUserPreferences.h"
#include <Windows.h>
+ // the class is used to create and detect single instance of user application
+ class SingleInstance {
+ private:
+ const int BUF_SIZE;
+
+ DWORD _lastError;
+ HANDLE _mutex;
+ TString _name;
+ TString _sharedMemoryName;
+ HANDLE _hMapFile;
+ LPCTSTR _pBuf;
+
+ SingleInstance(): BUF_SIZE(0) {}
+
+ SingleInstance(TString& name_);
+
+ public:
+ static SingleInstance* getInstance(TString& name) {
+ static SingleInstance* result = NULL;
+
+ if (result == NULL) {
+ result = new SingleInstance(name);
+ }
+
+ return result;
+ }
+
+ ~SingleInstance();
+
+ bool IsAnotherInstanceRunning() {
+ return (ERROR_ALREADY_EXISTS == _lastError);
+ }
+
+ bool writePid(DWORD pid);
+ DWORD readPid();
+ };
+
#pragma warning( push )
#pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member'
class WindowsPlatform : virtual public Platform, GenericPlatform {
private:
DWORD FMainThread;
*** 78,88 ****
--- 115,127 ----
virtual std::vector<TString> GetLibraryImports(const TString FileName);
virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports);
virtual Process* CreateProcess();
+ virtual void reactivateAnotherInstance();
virtual bool IsMainThread();
+ virtual bool CheckForSingleInstance(TString Name);
virtual TPlatformNumber GetMemorySize();
#ifdef DEBUG
virtual bool IsNativeDebuggerPresent();
virtual int GetProcessID();