差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
cpp:sc:queryservicelockstatus [2016/04/19 13:34]
tony
cpp:sc:queryservicelockstatus [2023/06/25 09:48] (目前版本)
行 1: 行 1:
-{{tag>​cpp Windows}}+{{tag>​cpp Windows ​SCM}}
 ====== QueryServiceLockStatus ​ ====== ====== QueryServiceLockStatus ​ ======
 ===== Introduction ===== ===== Introduction =====
行 10: 行 10:
 因此,我們可以先檢查SCM database是否lock,再決定我們接下來該怎麼做。 因此,我們可以先檢查SCM database是否lock,再決定我們接下來該怎麼做。
 ===== How to? ===== ===== How to? =====
 +要解決這問題,可以使用:​
 +  * API: QueryServiceLockStatus。
 +  * Command line: sc querylock。
 +首先來看看QueryServiceLockStatus:​
 <code cpp> <code cpp>
 BOOL IsSCMRelease(){ BOOL IsSCMRelease(){
行 30: 行 34:
  ret = FALSE;  ret = FALSE;
  } else {  } else {
- ret = !(hStatus->​fIsLocked);+ ret = hStatus->​fIsLocked ​== 0;
  }  }
  
行 44: 行 48:
  
 </​code>​ </​code>​
-如果要透過command line,可以使用sc querylock+透過command line:
 <code bash> <code bash>
 C:​\Users\tonylin>​chcp 437 & sc querylock C:​\Users\tonylin>​chcp 437 & sc querylock
行 58: 行 62:
   * [[https://​msdn.microsoft.com/​zh-tw/​library/​windows/​desktop/​ms685104(v=vs.85).aspx|MSDN - SCM Handles]]   * [[https://​msdn.microsoft.com/​zh-tw/​library/​windows/​desktop/​ms685104(v=vs.85).aspx|MSDN - SCM Handles]]
   * [[http://​www.tenouk.com/​cpluscodesnippet/​changewindowserviceconfig.html|sample code]]   * [[http://​www.tenouk.com/​cpluscodesnippet/​changewindowserviceconfig.html|sample code]]
 +  * [[https://​technet.microsoft.com/​zh-tw/​sqlserver/​ms684953|QUERY_SERVICE_LOCK_STATUS structure]]
 =====    ===== =====    =====
 ---- ----
 \\ \\
 ~~DISQUS~~ ~~DISQUS~~