GetAppcConfig 函式提供一個非同步入口點,用於檢索特定本地 LU 可連接的遠端系統。
語法
HANDLE WINAPI GetAppcConfig(
HANDLE hWnd,
LPSTR pLocalLu,
LPSTR pMode,
LPINT pNumRemLu,
INT iMaxRemLu,
PSTR pRemLu,
LPINT pAsyncRetCode
);
參數
hWnd
提供的參數。 包含在通話完成時接收非同步完成訊息的視窗的代柄。 若非 null,完成訊息會貼入此視窗 handle。 此時, pAsyncRetCode (最後一個參數)必須為空。 非同步訊息補全是 Windows 應用程式使用此功能的推薦方法。
pLocalLu
提供的參數。 指定包含當地 LU 名稱的緩衝區位址,該名稱會回傳該資訊。 此本地 LU 名稱必須指定如下:
無襯墊
零終端
ASCII 字串
最大長度為八位元組(不含終端)
若要請求使用者使用預設本地 LU,緩衝區應包含八個空格後接一個空格。
pMode
提供的參數。 指定包含回傳資訊模式名稱的緩衝區位址。 在 Microsoft Host Integration Server 中,此參數未被使用,但為了與早期版本的 SNA Server 相容,必須指定以下模式名稱:無襯墊
零終端
ASCII 字串
最大長度為八位元組(不含終端)
pNumRemLu
提供的參數。 指定一個整數變數的位址,當函式完成時,該變數將包含若 pRemLu 指定的緩衝區足夠大以容納所有遠端 LU,所回傳的遠端 LU 數量。iMaxRemLu
提供的參數。 指定由 pRemLu 指示的緩衝區可持有的遠端 LU 名稱數量。pRemLu
提供的參數。 指定函式完成後,將儲存遠端 LU 名稱的緩衝區位址。 資訊會以字串陣列的形式回傳。 每個遠端 LU 名稱會儲存在緩衝區中,具體如下:無襯墊
零終端
ASCII 字串
最大長度為八位元組(不含終端)
字串每隔九個位元組在緩衝區中開始一次,因此 (pRemLu + (i–1)*9) 給出 第 i個字串的起始。 若緩衝區容量過小無法容納所有名稱,則只會回傳 iMaxRemLu 字串。
pAsyncRetCode
提供的參數。 指定用來儲存此函式回傳碼的整數變數位址,若所提供的位址非空。 回傳碼會與非同步完成訊息回傳相同。 在呼叫完成時,這個變數的值會APPC_CFG_PENDING。 當此非同步呼叫完成後,該變數的值會包含除 APPC_CFG_PENDING 以外的回傳碼。當視窗句柄未使用非同步訊息補全時,此變數用於輪詢完成。
請注意,若使用 pAsyncRetCode,hWnd 必須為 null。
傳回值
立即回傳值的意義取決於非同步請求是否被接受。 要測試是否接受,請評估以下表達式:
(<歸還帳號> 與APPC_CFG_SUCCESS)
若表達式為 FALSE,則請求被拒絕。 返回值即為下列列表中的同步返回碼之一。 若表達式為 TRUE,則請求被接受,且將適用以下其中一種情況。
若 hWnd 非空,則會收到以下形式的補全訊息:
訊息參數 說明 hWnd 目標窗戶的把手。 這個值與初始呼叫時以 hWnd 傳遞的值相同。 uMsg 與呼叫 RegisterWindowMessage 回傳的號碼相符,並以 WinAppcCfg 作為識別字串。 此串可按 #define WIN_APPC_CFG_COMPLETION_MSG 取得。 wParam 與初始呼叫回傳的 HANDLE 相符。 它被用作相關詞。 lParam 包含以下列表中的非同步回傳代碼之一。 如果 pAsyncRetCode 非空,則指定的整數變數會設為 APPC_CFG_PENDING。 此函式非同步完成後,其值將改變為下列非同步回傳碼之一。
同步回傳碼
APPC_CFG_ERROR_NO_APPC_INIT
Windows APPC 函式庫需要先呼叫 WinAPPCStartup 來初始化,然後再呼叫 GetAppcConfig ,但目前尚未完成此操作。
APPC_CFG_ERROR_INVALID_HWND
hWnd 傳遞的 handle 是非空的,但不是有效的視窗 handle 。
APPC_CFG_ERROR_BAD_POINTER
hWnd 參數為空值,表示完成是透過設定 pAsyncRetCode 指向的整數變數來表示,但 pAsyncRetCode 並非有效的指標。
APPC_CFG_ERROR_UNCLEAR_COMPLETION_MODE
hWnd 和 pAsyncCompletion 都不是空的,因此 GetAppcConfig 無法決定完成應該如何標示。
APPC_CFG_ERROR_TOO_MANY_REQUESTS
已經有太多 GetAppcConfig 呼叫正在處理中(目前顯示有 16 個請求未完成)。 延遲後再試一次通話。 針對 Microsoft Windows 3 版本。X 系統,你必須在這段期間讓路。
APPC_CFG_ERROR_GENERAL_FAILURE
發生了意外錯誤,可能是系統性錯誤。
非同步回傳碼
APPC_CFG_SUCCESS_NO_DEFAULT_REMOTE
設定資訊已被取得,但要麼沒有定義預設的遠端 LU,要麼指定的本地 LU 無法存取該區域。
APPC_CFG_SUCCESS_DEFAULT_REMOTE
設定資訊已被取得,且預設的遠端 LU 可由指定的本地 LU 存取。
APPC_CFG_ERROR_NO_DEFAULT_LOCAL_LU
嘗試取得與預設本地 LU 合作的遠端 LU,但未設定預設本地 LU。
APPC_CFG_ERROR_BAD_LOCAL_LU
指定的地方 LU 要麼未被設定,要麼對呼叫動詞無效。
APPC_CFG_ERROR_GENERAL_FAILURE
發生了意外錯誤,可能是系統性錯誤。
備註
使用 GetAppcConfig 前必須先呼叫 WinAPPCStartup。
錯誤碼是否代表成功或失敗,可透過評估(RetCode& APPC_CFG_SUCCESS)來測試成功,或(RetCode& APPC_CFG_FAILURE)測試失敗來判斷。
以下程式碼片段展示了主控台應用程式如何測試完成度:
while (*pAsyncRetCode == APPC_CFG_PENDING)
{
sleep(250);
}