2012-03-13 42 views
1

我正在創建兩個獨立的C++ .dll,它們都與同一塊硬件對話。如果兩者都同時連接,則它們的命令會混淆並且硬件的行爲不正確。所以我需要確保只有一個連接到硬件(即使兩個DLL都被加載並運行)。.DLL暴露全系統狀態的方法(Windows)

這是到目前爲止我的想法:

    連接之前
  • ,該DLL創建了一個已知的位置
  • 當DLL連接,它會尋找其他DLL的文件,並拒絕連接,如果文件它是存在的。
  • 斷開連接後,DLL刪除其文件。

這似乎很簡單,但我想知道是否有更好的方法?某種類型的DLL可以定義的系統範圍的變量?簡單是關鍵 - 代碼的線越少越好。

回答

1

使用CreateMutex函數

+0

你可以添加一些示例代碼? – japreiss 2012-03-13 21:34:52

+0

當然:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686927(v=vs.85).aspx – SecurityMatt 2012-03-13 21:36:36

+0

該代碼在全局句柄變量中使用未命名的互斥體進行線程同步。我想使用一個已命名的互斥體作爲標誌變量而不共享任何句柄。這個例子不相關。 – japreiss 2012-03-13 21:40:35

0

您可以爲此使用全局互斥對象。

+0

可以添加一些示例代碼嗎? – japreiss 2012-03-13 21:35:04