첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170
using System.Runtime.InteropServices;

#region RESTART MANAGER 리스트 구하기 - RmGetList(sessionHandle, processCountNeeded, processCount, processArray, rebootReason)

/// <summary>
/// RESTART MANAGER 리스트 구하기
/// </summary>
/// <param name="sessionHandle">세션 핸들</param>
/// <param name="processCountNeeded">필요 프로세스 카운트</param>
/// <param name="processCount">프로세스 카운트</param>
/// <param name="processArray">프로세스 배열</param>
/// <param name="rebootReason">리부팅 사유</param>
/// <returns>처리 결과</returns>
[DllImport("rstrtmgr.dll")]
private static extern int RmGetList
(
    uint                        sessionHandle,
    out uint                    processCountNeeded,
    ref uint                    processCount,
    [In, Out] RM_PROCESS_INFO[] processArray,
    ref uint                    rebootReason
);

#endregion

#region RESTART MANAGER 프로세스 정보 - RM_PROCESS_INFO

/// <summary>
/// RESTART MANAGER 프로세스 정보
/// </summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct RM_PROCESS_INFO
{
    /// <summary>
    /// 프로세스
    /// </summary>
    public RM_UNIQUE_PROCESS Process;

    /// <summary>
    /// 애플리케이션명
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CCH_RM_MAX_APP_NAME + 1)]
    public string ApplicationName;

    /// <summary>
    /// 서비스 단축명
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CCH_RM_MAX_SVC_NAME + 1)]
    public string ServiceShortName;

    /// <summary>
    /// 애플리케이션 타입
    /// </summary>
    public RM_APP_TYPE ApplicationType;

    /// <summary>
    /// 애플리케이션 상태
    /// </summary>
    public uint ApplicationStatus;

    /// <summary>
    /// 터미널 서비스 세션 ID
    /// </summary>
    public uint TerminalServiceSessionID;

    /// <summary>
    /// 재시작 가능 여부
    /// </summary>
    [MarshalAs(UnmanagedType.Bool)]
    public bool bRestartable;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by 사용자 icodebroker
TAG , ,

댓글을 달아 주세요