GetNamedPipeHandleStateA 関数 (winbase.h)

指定した名前付きパイプに関する情報を取得します。 返される情報は、名前付きパイプのインスタンスの有効期間中に異なる場合があります。

構文

BOOL GetNamedPipeHandleStateA(
  [in]            HANDLE  hNamedPipe,
  [out, optional] LPDWORD lpState,
  [out, optional] LPDWORD lpCurInstances,
  [out, optional] LPDWORD lpMaxCollectionCount,
  [out, optional] LPDWORD lpCollectDataTimeout,
  [out, optional] LPSTR   lpUserName,
  [in]            DWORD   nMaxUserNameSize
);

パラメーター

[in] hNamedPipe

情報が必要な名前付きパイプへのハンドル。 ハンドルには、読み取り専用パイプまたは読み取り/書き込みパイプのGENERIC_READアクセス権が必要です。または、書き込み専用パイプのGENERIC_WRITEおよびFILE_READ_ATTRIBUTESアクセス権が必要です。

このパラメーターは、 CreatePipe 関数によって返される匿名パイプへのハンドルにすることもできます。

[out, optional] lpState

ハンドルの現在の状態を示す変数へのポインター。 この情報が必要ない場合は、このパラメーターを NULL にすることができます 。 次の値のいずれかまたは両方を指定できます。

意味
PIPE_NOWAIT
0x00000001
パイプ ハンドルは非ブロッキング モードです。 このフラグを指定しない場合、パイプ ハンドルはブロッキング モードになります。
PIPE_READMODE_MESSAGE
0x00000002
パイプ ハンドルはメッセージ読み取りモードです。 このフラグを指定しない場合、パイプ ハンドルはバイト読み取りモードになります。

[out, optional] lpCurInstances

現在のパイプ インスタンスの数を受け取る変数へのポインター。 この情報が不要な場合、このパラメーターは NULL にすることができます

[out, optional] lpMaxCollectionCount

サーバーへの転送前にクライアントのコンピューターで収集される最大バイト数を受け取る変数へのポインター。 指定されたパイプ ハンドルが名前付きパイプのサーバー側にある場合、またはクライアントとサーバーのプロセスが同じコンピューター上にある場合、このパラメーターは NULL である必要があります。 この情報が不要な場合、このパラメーターは NULL にすることができます

[out, optional] lpCollectDataTimeout

リモートの名前付きパイプがネットワーク経由で情報を転送する前に渡すことができる最大時間 (ミリ秒単位) を受け取る変数へのポインター。 指定されたパイプ ハンドルが名前付きパイプのサーバー側にある場合、またはクライアントとサーバーのプロセスが同じコンピューター上にある場合、このパラメーターは NULL である必要があります。 この情報が不要な場合、このパラメーターは NULL にすることができます

[out, optional] lpUserName

クライアント アプリケーションに関連付けられているユーザー名文字列を受け取るバッファーへのポインター。 サーバーは、クライアントがアクセス権を持つパイプを開いた場合にのみ、この情報SECURITY_IMPERSONATION取得できます。

指定したパイプ ハンドルが名前付きパイプのクライアント側にある場合、このパラメーターは NULL である 必要があります。 この情報が不要な場合、このパラメーターは NULL にすることができます

[in] nMaxUserNameSize

TCHARlpUserName パラメーターで指定されたバッファーのサイズ。 lpUserNameNULL の場合、このパラメーターは無視されます。

戻り値

関数が成功すると、戻り値は 0 以外になります。

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

解説

GetNamedPipeHandleState 関数は、渡されるすべてのポインターが NULL であっても正常に返されます。

パイプ ハンドルの状態を設定するには、 SetNamedPipeHandleState 関数を 使用します。

Windows 10バージョン 1709: パイプは、アプリ コンテナー内でのみサポートされます。つまり、1 つの UWP プロセスから、同じアプリの一部である別の UWP プロセスまでです。 また、名前付きパイプでは、パイプ名の構文 \\.\pipe\LOCAL\ を使用する必要があります。

要件

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

関連項目

パイプ関数

パイプの概要

SetNamedPipeHandleState