GetAppcConfig
GetAppcConfig 函式提供異步進入點,以擷取特定本機 LU 可連線到的遠端系統。
語法
HANDLE WINAPI GetAppcConfig(
HANDLE hWnd,
LPSTR pLocalLu,
LPSTR pMode,
LPINT pNumRemLu,
INT iMaxRemLu,
PSTR pRemLu,
LPINT pAsyncRetCode
);
參數
hWnd
提供的參數。 包含當呼叫完成時接收異步完成訊息之視窗的句柄。 如果為非 Null,則完成訊息會張貼至此視窗句柄。 在此情況下, pAsyncRetCode (最後一個參數) 必須是 null。 異步訊息完成是 Windows 應用程式使用此函式的建議方法。
pLocalLu
提供的參數。 指定緩衝區的位址,其中包含傳回資訊的本機 LU 名稱。 這個本機 LU 名稱必須指定如下:
非padded
Null 終止
ASCII 字串
排除終止符) 的八個字節長度上限 (
若要要求使用用戶的預設本機 LU,緩衝區應該包含八個空格,後面接著 Null。
pMode
提供的參數。 指定緩衝區的位址,其中包含傳回資訊的模式名稱。 在 Microsoft Host Integration Server 中,不會使用此參數,但為了與舊版 SNA 伺服器相容,必須指定模式名稱,如下所示:非padded
Null 終止
ASCII 字串
排除終止符) 的八個字節長度上限 (
pNumRemLu
提供的參數。 指定整數變數的位址,當函式完成時會包含會傳回的遠端 RU 數目,如果 pRemLu 指定的緩衝區夠大,足以容納所有遠端 RU。iMaxRemLu
提供的參數。 指定可由 pRemLu 指示的緩衝區保留的遠端 LU 名稱數目。pRemLu
提供的參數。 指定在函式完成之後,將保存遠端 LU 名稱的緩衝區位址。 資訊會以字串陣列的形式傳回。 每個遠端 LU 名稱都會儲存在緩衝區中,如下所示:非padded
Null 終止
ASCII 字串
排除終止符) 的八個字節長度上限 (
字串會開始緩衝區中的每九個字節,因此 (pRemLu + (i–1) *9) 提供第 i個字符串的開頭。 如果緩衝區太小而無法保存所有名稱,則只會傳回 iMaxRemLu 字串。
pAsyncRetCode
提供的參數。 指定整數變數的位址,如果提供的位址不是 Null,則用來儲存此函式的傳回碼。 傳回碼會與異步完成訊息所傳回的傳回碼相同。 當呼叫完成時,此變數的值將會APPC_CFG_PENDING。 完成這個異步呼叫時,這個變數的值會包含一些傳回碼,而不是APPC_CFG_PENDING。當未使用異步訊息完成至視窗句柄時,輪詢以完成這個變數。
請注意,如果使用 pAsyncRetCode,hWnd 必須是 null。
傳回值
立即傳回值的意義取決於是否接受異步要求。 若要測試接受,請評估表達式:
< (傳回的句柄> & APPC_CFG_SUCCESS)
如果表達式為 FALSE,表示要求遭到拒絕。 傳回值接著是下列清單中的其中一個同步傳回碼。 如果表達式為TRUE,則會接受要求,並套用下列其中一個案例。
如果 hWnd 不是 Null,則完成訊息會以下列形式送達:
訊息參數 Description hWnd 目標視窗的句柄。 這個值與在初始呼叫上傳入 hWnd 的值相同。 uMsg 比對 RegisterWindowMessage 呼叫所傳回的數位,並將 WinAppcCfg 當做識別字串使用。 此字串可供 #define WIN_APPC_CFG_COMPLETION_MSG 使用。 wParam 符合從初始呼叫傳回的 HANDLE 。 它會當做相互關聯子使用。 lParam 包含下列清單中的其中一個異步傳回碼。 如果 pAsyncRetCode 不是 Null,則指定的整數變數將會設定為 APPC_CFG_PENDING。 在此函式以異步方式完成之後,其值會變更為下列其中一個異步傳回碼。
同步傳回碼
APPC_CFG_ERROR_NO_APPC_INIT
呼叫 WinAPPCStartup 之前,必須先初始化 Windows APPC 連結庫,而且尚未這麼做。
APPC_CFG_ERROR_INVALID_HWND
傳入 hWnd 的句柄不是 Null,但不是有效的視窗句柄。
APPC_CFG_ERROR_BAD_POINTER
hWnd 參數為 null,表示完成是藉由設定 pAsyncRetCode 指向的整數變數來發出訊號,但 pAsyncRetCode 不是有效的指標。
APPC_CFG_ERROR_UNCLEAR_COMPLETION_MODE
hWnd 和 pAsyncCompletion 都是非 Null,因此 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);
}