GetNamedPipeHandleStateW 函式 (namedpipeapi.h)
擷取指定命名管道的相關信息。 傳回的資訊在具名管道實例的存留期內可能會有所不同。
語法
BOOL GetNamedPipeHandleStateW(
[in] HANDLE hNamedPipe,
[out, optional] LPDWORD lpState,
[out, optional] LPDWORD lpCurInstances,
[out, optional] LPDWORD lpMaxCollectionCount,
[out, optional] LPDWORD lpCollectDataTimeout,
[out, optional] LPWSTR lpUserName,
[in] DWORD nMaxUserNameSize
);
參數
[in] hNamedPipe
所要資訊之命名管道的句柄。 句柄必須具有唯讀或讀取/寫入管道的GENERIC_READ存取權,或者必須具有只讀管道的GENERIC_WRITE和FILE_READ_ATTRIBUTES存取權。
此參數也可以是匿名管道的句柄,如 CreatePipe 函式所傳回。
[out, optional] lpState
變數的指標,表示句柄的目前狀態。 如果不需要此資訊,這個參數可以是 NULL 。 您可以指定下列其中一個或兩個值。
值 | 意義 |
---|---|
|
管道句柄處於非封鎖模式。 如果未指定此旗標,管道句柄會處於封鎖模式。 |
|
管道句柄處於訊息讀取模式。 如果未指定此旗標,管道句柄會處於位元組讀取模式。 |
[out, optional] lpCurInstances
接收目前管道實例數目之變數的指標。 如果不需要此資訊,這個參數可以是 NULL 。
[out, optional] lpMaxCollectionCount
變數的指標,會接收在傳送至伺服器之前,用戶端計算機上要收集的最大位元元組數目。 如果指定的管道句柄位於命名管道的伺服器端,或者客戶端和伺服器進程位於同一部計算機上,則此參數必須為 NULL 。 如果不需要此資訊,這個參數可以是 NULL 。
[out, optional] lpCollectDataTimeout
接收最大時間的變數指標,以毫秒為單位,可在遠端命名管道透過網路傳輸資訊之前傳遞。 如果指定的管道句柄位於命名管道的伺服器端,或者客戶端和伺服器進程位於同一部計算機上,則此參數必須為 NULL 。 如果不需要此資訊,這個參數可以是 NULL 。
[out, optional] lpUserName
緩衝區的指標,接收與用戶端應用程式相關聯的用戶名稱字串。 如果用戶端以SECURITY_IMPERSONATION存取開啟管道,則伺服器只能擷取這項資訊。
如果指定的管道句柄位於命名管道的用戶端端,這個參數必須是 NULL 。 如果不需要此資訊,這個參數可以是 NULL 。
[in] nMaxUserNameSize
TCHARs 中 lpUserName 參數所指定的緩衝區大小。 如果 lpUserName 為 NULL,則會忽略此參數。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
即使傳遞給它的所有指標都是 NULL,GetNamedPipeHandleState 函式仍會成功傳回。
若要設定管道句柄狀態,請使用 SetNamedPipeHandleState 函式。
Windows 10 版本 1709:管線僅支援在應用程式容器內;亦即,從一個 UWP 程式到屬於相同應用程式的另一個 UWP 進程。 此外,命名管道必須使用管道名稱的語法 \\.\pipe\LOCAL\
。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | namedpipeapi.h |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |