ShutdownBlockReasonQuery 関数 (winuser.h)

ShutdownBlockReasonCreate 関数によって設定された理由文字列を取得します。

構文

BOOL ShutdownBlockReasonQuery(
  [in]            HWND   hWnd,
  [out, optional] LPWSTR pwszBuff,
  [in, out]       DWORD  *pcchBuff
);

パラメーター

[in] hWnd

アプリケーションのメイン ウィンドウへのハンドル。

[out, optional] pwszBuff

理由文字列を受け取るバッファーへのポインター。 このパラメーターが NULL の場合、関数は理由文字列内の文字数を取得します。

[in, out] pcchBuff

pwszBuff バッファーのサイズを文字で指定する変数へのポインター。 関数が成功した場合、この変数はバッファーにコピーされた文字数 ( null 終端文字を含む) を受け取ります。 バッファーが小さすぎる場合、変数は必要なバッファー サイズ ( null 終端文字を含まない) を文字単位で受け取ります。

戻り値

呼び出しが成功した場合、戻り値は 0 以外です。

呼び出しが失敗した場合、戻り値は 0 になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

この関数は、 hWnd パラメーターで指定されたウィンドウを作成したスレッドからのみ呼び出すことができます。 それ以外の場合、関数は失敗し、最後のエラー コードはERROR_ACCESS_DENIED。

次の例では、必要なバッファー サイズを取得し、理由文字列にメモリを割り当て、理由文字列を取得して、デバッグ出力として文字列を表示します。

#include <windows.h>

#pragma comment(lib, "User32.lib")

HWND hWnd;

BOOL DisplayShutdownBlockReason()
{
    DWORD cch=0;

    if (ShutdownBlockReasonQuery(hWnd, NULL, &cch)) 
    { 
        WCHAR *pch = (WCHAR *)LocalAlloc(LMEM_FIXED, cch * sizeof(*pch)); 
        if (NULL != pch) 
        { 
            if (ShutdownBlockReasonQuery(hWnd, pch, &cch)) 
            { 
                OutputDebugStringW(L"Shutdown block reason: "); 
                OutputDebugStringW(pch); 
                OutputDebugStringW(L"\n"); 
            } 
            LocalFree(pch); 
            return TRUE;
        } 
    }
    return FALSE;
}

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll

こちらもご覧ください

ShutdownBlockReasonCreate

シャットダウン