代码之家  ›  专栏  ›  技术社区  ›  theParanoidAndroid

Python win32serviceutil QueryServiceStatus:返回值的含义是什么?

  •  2
  • theParanoidAndroid  · 技术社区  · 7 年前

    我正在学习使用pywin32,并尝试在64位Python 3.6.4上使用Win32 ServiceUtil模块

    以下代码:

    import win32serviceutil as service
    serviceStatus = service.QueryServiceStatus("WinDefend")
    print(serviceStatus)
    

    返回以下元组:

    (16, 4, 197, 0, 0, 0, 0)
    

    我对windows api和pywin32完全陌生,这6个值意味着什么?任何关于pywin32和win32的文档都没有透露任何信息。

    编辑-我正在运行Windows 10

    2 回复  |  直到 7 年前
        1
  •  3
  •   RbMm    7 年前

    你有 SERVICE_STATUS 结构

    具体值意味着:

    dwServiceType=SERVICE_WIN32_OWN_PROCESS(16)
    dwCurrentState=SERVICE_RUNNING(4)
    dwControlsAccepted=SERVICE_ACCEPT_SESSIONCHANGE|SERVICE_ACCEPT_POWEREVENT|SERVICE_ACCEPT_SHUTDOWN|SERVICE_ACCEPT_STOP (0xc5==197)
    dwWin32ExitCode=NO_ERROR (0)
    dwServiceSpecificExitCode=0 // This value is ignored because dwWin32ExitCode != ERROR_SERVICE_SPECIFIC_ERROR.
    dwCheckPoint=0
    dwWaitHint=0
    
        2
  •  0
  •   CristiFati    6 年前

    win32serviceutil 是的一部分 [GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions ,这是 蟒蛇 包装器覆盖 WINAPI s

    • [ActiveState.Docs]: win32service.QueryServiceStatus (这是我能找到的最接近官员的 PyWin32 doc)是包装器 [MS.Docs]: QueryServiceStatus function 并返回 [ActiveState.Docs]: SERVICE_STATUS Object (元组)

      Items:
      [0] int : serviceType
              The type of service.
      [1] int : serviceState
              The current state of the service.
      [2] int : controlsAccepted
              The controls the service accepts.
      [3] int : win32ExitCode
              The win32 error code for the service.
      [4] int : serviceSpecificErrorCode
              The service specific error code.
      [5] int : checkPoint
              The checkpoint reported by the service.
      [6] int : waitHint
              The wait hint reported by the service.
      
    • win32serviceutil.QueryServiceStatus 是前一个调用的简写(它封装了所有其他相关调用: win32service.OpenSCManager , win32service.OpenService , win32service.CloseServiceHandle )并返回相同的内容