亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? singleton.cpp

?? Windows via C++ Code (December 1, 2007),關于如何在window下學習C++編程的代碼資源
?? CPP
字號:
/******************************************************************************
Module:  Singleton.cpp
Notices: Copyright (c) 2008 Jeffrey Richter & Christophe Nasarre
******************************************************************************/


#include "resource.h"

#include "..\CommonFiles\CmnHdr.h"     /* See Appendix A. */
#include <windowsx.h>
#include <Sddl.h>          // for SID management
#include <tchar.h>
#include <strsafe.h>



///////////////////////////////////////////////////////////////////////////////


// Main dialog
HWND     g_hDlg;

// Mutex, boundary and namespace used to detect previous running instance
HANDLE   g_hSingleton = NULL;
HANDLE   g_hBoundary = NULL;
HANDLE   g_hNamespace = NULL;

// Keep track whether or not the namespace was created or open for clean-up
BOOL     g_bNamespaceOpened = FALSE;

// Names of boundary and private namespace
PCTSTR   g_szBoundary = TEXT("3-Boundary");
PCTSTR   g_szNamespace = TEXT("3-Namespace");


#define DETAILS_CTRL GetDlgItem(g_hDlg, IDC_EDIT_DETAILS)


///////////////////////////////////////////////////////////////////////////////


// Adds a string to the "Details" edit control
void AddText(PCTSTR pszFormat, ...) {

   va_list argList;
   va_start(argList, pszFormat);

   TCHAR sz[20 * 1024];

   Edit_GetText(DETAILS_CTRL, sz, _countof(sz));
   _vstprintf_s(
      _tcschr(sz, TEXT('\0')), _countof(sz) - _tcslen(sz), 
      pszFormat, argList);
   Edit_SetText(DETAILS_CTRL, sz);
   va_end(argList);
}


///////////////////////////////////////////////////////////////////////////////


void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {

   switch (id) {
      case IDOK:
      case IDCANCEL:
         // User has clicked on the Exit button
         // or dismissed the dialog with ESCAPE
         EndDialog(hwnd, id);
         break;
   }
}


///////////////////////////////////////////////////////////////////////////////


void CheckInstances() {

   // Create the boundary descriptor
   g_hBoundary = CreateBoundaryDescriptor(g_szBoundary, 0);

   // Create a SID corresponding to the Local Administrator group
   BYTE localAdminSID[SECURITY_MAX_SID_SIZE];
   PSID pLocalAdminSID = &localAdminSID;
   DWORD cbSID = sizeof(localAdminSID);
   if (!CreateWellKnownSid(
      WinBuiltinAdministratorsSid, NULL, pLocalAdminSID, &cbSID)
      ) {
      AddText(TEXT("AddSIDToBoundaryDescriptor failed: %u\r\n"), 
         GetLastError());
      return;
   }
   
   // Associate the Local Admin SID to the boundary descriptor
   // --> only applications running under an administrator user
   //     will be able to access the kernel objects in the same namespace
   if (!AddSIDToBoundaryDescriptor(&g_hBoundary, pLocalAdminSID)) {
      AddText(TEXT("AddSIDToBoundaryDescriptor failed: %u\r\n"), 
         GetLastError());
      return;
   }

   // Create the namespace for Local Administrators only
   SECURITY_ATTRIBUTES sa;
   sa.nLength = sizeof(sa);
   sa.bInheritHandle = FALSE;
   if (!ConvertStringSecurityDescriptorToSecurityDescriptor(
      TEXT("D:(A;;GA;;;BA)"), 
      SDDL_REVISION_1, &sa.lpSecurityDescriptor, NULL)) {
      AddText(TEXT("Security Descriptor creation failed: %u\r\n"), GetLastError());
      return;
   }

   g_hNamespace = 
      CreatePrivateNamespace(&sa, g_hBoundary, g_szNamespace);

   // Don't forget to release memory for the security descriptor
   LocalFree(sa.lpSecurityDescriptor);


   // Check the private namespace creation result
   DWORD dwLastError = GetLastError();
   if (g_hNamespace == NULL) {
      // Nothing to do if access is denied
      // --> this code must run under a Local Administrator account
      if (dwLastError == ERROR_ACCESS_DENIED) {
         AddText(TEXT("Access denied when creating the namespace.\r\n"));
         AddText(TEXT("   You must be running as Administrator.\r\n\r\n"));
         return;
      } else { 
         if (dwLastError == ERROR_ALREADY_EXISTS) {
         // If another instance has already created the namespace, 
         // we need to open it instead. 
            AddText(TEXT("CreatePrivateNamespace failed: %u\r\n"), dwLastError);
            g_hNamespace = OpenPrivateNamespace(g_hBoundary, g_szNamespace);
            if (g_hNamespace == NULL) {
               AddText(TEXT("   and OpenPrivateNamespace failed: %u\r\n"), 
               dwLastError);
               return;
            } else {
               g_bNamespaceOpened = TRUE;
               AddText(TEXT("   but OpenPrivateNamespace succeeded\r\n\r\n"));
            }
         } else {
            AddText(TEXT("Unexpected error occured: %u\r\n\r\n"),
               dwLastError);
            return;
         }
      }
   }
   
   // Try to create the mutex object with a name 
   // based on the private namespace 
   TCHAR szMutexName[64];
   StringCchPrintf(szMutexName, _countof(szMutexName), TEXT("%s\\%s"), 
      g_szNamespace, TEXT("Singleton"));

   g_hSingleton = CreateMutex(NULL, FALSE, szMutexName);
   if (GetLastError() == ERROR_ALREADY_EXISTS) {
      // There is already an instance of this Singleton object
      AddText(TEXT("Another instance of Singleton is running:\r\n"));
      AddText(TEXT("--> Impossible to access application features.\r\n"));
   } else  {
      // First time the Singleton object is created
      AddText(TEXT("First instance of Singleton:\r\n"));
      AddText(TEXT("--> Access application features now.\r\n"));
   }
}


///////////////////////////////////////////////////////////////////////////////


BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) {

   chSETDLGICONS(hwnd, IDI_SINGLETON);

   // Keep track of the main dialog window handle
   g_hDlg = hwnd;

   // Check whether another instance is already running
   CheckInstances();
      
   return(TRUE);
}


///////////////////////////////////////////////////////////////////////////////


INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

   switch (uMsg) {
      chHANDLE_DLGMSG(hwnd, WM_COMMAND,    Dlg_OnCommand);
      chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog);
   }

   return(FALSE);
}


///////////////////////////////////////////////////////////////////////////////


int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
   UNREFERENCED_PARAMETER(hPrevInstance);
   UNREFERENCED_PARAMETER(lpCmdLine);

   // Show main window 
   DialogBox(hInstance, MAKEINTRESOURCE(IDD_SINGLETON), NULL, Dlg_Proc);

   // Don't forget to clean up and release kernel resources
   if (g_hSingleton != NULL) {
      CloseHandle(g_hSingleton);
   }

   if (g_hNamespace != NULL) {
      if (g_bNamespaceOpened) {  // Open namespace
         ClosePrivateNamespace(g_hNamespace, 0);
      } else { // Created namespace
         ClosePrivateNamespace(g_hNamespace, PRIVATE_NAMESPACE_FLAG_DESTROY);
      }
   }

   if (g_hBoundary != NULL) {
      DeleteBoundaryDescriptor(g_hBoundary);
   }

   return(0);
}


//////////////////////////////// End of File //////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本特黄久久久高潮| 欧美综合视频在线观看| 欧洲精品中文字幕| 国产欧美日本一区二区三区| 亚洲午夜电影在线| av亚洲精华国产精华| 精品少妇一区二区三区| 亚洲成人自拍一区| av一区二区三区| 国产精品网曝门| 精品一区二区免费视频| 欧美视频一区二区在线观看| 欧美激情一区二区三区| 久久99精品视频| 日韩一区二区在线播放| 亚洲成人一区在线| 欧美亚洲综合一区| 亚洲中国最大av网站| 91色视频在线| 亚洲美女淫视频| 色综合久久天天综合网| 国产精品美女www爽爽爽| 国产老肥熟一区二区三区| 欧美刺激午夜性久久久久久久| 天堂午夜影视日韩欧美一区二区| 欧美日韩日日摸| 亚洲国产日日夜夜| 精品视频一区二区三区免费| 玉米视频成人免费看| 色哟哟欧美精品| 亚洲精品一卡二卡| 在线看国产日韩| 亚洲一区二区三区爽爽爽爽爽| 色94色欧美sute亚洲线路一ni| 综合av第一页| 在线免费av一区| 午夜日韩在线观看| 精品日韩在线观看| 国产综合色在线| 国产精品污网站| 91在线视频播放地址| 国产精品久久看| 91在线丨porny丨国产| 国产精品欧美一区喷水| av在线免费不卡| 亚洲午夜av在线| 欧美videossexotv100| 国内外成人在线视频| 国产日产欧产精品推荐色| 成人白浆超碰人人人人| 亚洲精品视频观看| 欧美日韩国产片| 麻豆精品新av中文字幕| 久久久777精品电影网影网 | 日本不卡在线视频| 精品sm捆绑视频| 99热这里都是精品| 午夜日韩在线观看| 久久精品人人做人人爽人人| 成人手机在线视频| 一区二区免费看| ww亚洲ww在线观看国产| 9色porny自拍视频一区二区| 亚洲大片免费看| 国产欧美一区二区三区在线看蜜臀 | 久久99日本精品| 中文字幕欧美国产| 欧美日韩极品在线观看一区| 国产一区二区免费在线| 伊人夜夜躁av伊人久久| 久久综合久久鬼色中文字| 91麻豆免费看| 国内精品国产三级国产a久久| 亚洲美女电影在线| 久久日韩精品一区二区五区| 91蜜桃网址入口| 国产精品嫩草99a| 日本高清不卡视频| eeuss鲁片一区二区三区在线观看| 一区二区免费视频| 国产欧美一区二区精品久导航 | 精品视频1区2区| 国产精品中文字幕欧美| 亚洲成人免费av| 亚洲日本中文字幕区| 久久久久久亚洲综合影院红桃 | 色88888久久久久久影院野外| 精品亚洲免费视频| 亚洲一区二区三区在线看| 国产网站一区二区| 精品国产伦一区二区三区观看方式 | 亚洲男人天堂av| 久久精品亚洲一区二区三区浴池| 欧美日韩视频不卡| 色婷婷一区二区| av网站一区二区三区| 国模套图日韩精品一区二区 | 国产精品一区不卡| 亚洲在线一区二区三区| 中文字幕一区二区三区精华液 | 国产福利一区二区三区视频| 视频一区中文字幕国产| 一区二区在线观看免费| 国产精品美女久久久久久久网站| 久久久三级国产网站| 日韩一级黄色片| 91麻豆精品91久久久久久清纯| 色综合久久中文综合久久牛| 99re成人在线| 色综合久久久久综合体| 91影院在线免费观看| 国产传媒欧美日韩成人| 国产一区二区三区在线观看免费| 久久99国内精品| 激情国产一区二区| 国产一区 二区 三区一级| 国产精品18久久久久久久久久久久| 久久疯狂做爰流白浆xx| 热久久国产精品| 韩国理伦片一区二区三区在线播放| 精品一区二区三区视频| 国产乱对白刺激视频不卡| 丁香网亚洲国际| 99久久国产综合精品色伊| 色94色欧美sute亚洲线路二| 在线观看中文字幕不卡| 欧美三级三级三级| 日韩免费一区二区| 久久久久久久电影| 亚洲欧美一区二区三区国产精品 | 欧美国产成人精品| 国产精品久久国产精麻豆99网站 | 精品亚洲成a人在线观看| 国产真实乱偷精品视频免| 成人黄色在线视频| 欧美午夜片在线看| 精品乱人伦一区二区三区| 国产日产欧美一区| 一区二区三区四区在线播放| 日韩在线一区二区三区| 国产精品一二三四区| 91福利资源站| 精品理论电影在线观看| 国产精品久久久久三级| 亚洲五码中文字幕| 国产一区二区看久久| 99久久精品国产观看| 91精品国产全国免费观看| 欧美国产成人在线| 五月婷婷综合网| 成人一级视频在线观看| 欧美日韩一区在线观看| 精品久久人人做人人爽| 一区二区三区欧美激情| 国产制服丝袜一区| 欧美视频在线一区| 国产精品丝袜91| 蜜桃久久久久久久| 91免费在线视频观看| 欧美哺乳videos| 亚洲一区二区三区四区五区黄 | 日韩色在线观看| 亚洲精品国产成人久久av盗摄| 蜜臀精品久久久久久蜜臀| 成人黄色免费短视频| 日韩一级大片在线观看| 亚洲精品视频在线观看网站| 国产一区二区不卡在线 | 奇米综合一区二区三区精品视频| 成人免费毛片a| 欧美精品tushy高清| 中文字幕va一区二区三区| 欧美aaaaaa午夜精品| 欧洲亚洲国产日韩| 最新热久久免费视频| 国产一本一道久久香蕉| 91精品国产综合久久香蕉麻豆| 亚洲精品免费在线播放| 大白屁股一区二区视频| 26uuu国产电影一区二区| 日韩黄色免费电影| 欧美色成人综合| 亚洲欧美aⅴ...| 99久久99久久精品免费看蜜桃 | 亚洲国产精品麻豆| 91亚洲精品久久久蜜桃网站 | 99久久精品免费精品国产| 精品久久人人做人人爽| 日日夜夜精品免费视频| 欧美无砖专区一中文字| 最好看的中文字幕久久| 成人av资源在线| 国产亲近乱来精品视频| 国产成人高清视频| 欧美tk丨vk视频| 国产美女av一区二区三区| 久久一日本道色综合| 狠狠色综合播放一区二区| 亚洲精品一区在线观看| 韩国理伦片一区二区三区在线播放|