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 文字列
最大長 8 バイト (ターミネータを除く)
ユーザーの既定のローカル LU の使用を要求するには、バッファーに 8 つのスペースの後に null が続く必要があります。
Pmode
指定されたパラメーター。 情報が返されるモード名を含むバッファーのアドレスを指定します。 Microsoft Host Integration Server では、このパラメーターは使用されませんが、以前のバージョンの SNA Server との互換性のために、モード名を次のように指定する必要があります。非padded
Null で終わる
ASCII 文字列
最大長 8 バイト (ターミネータを除く)
pNumRemLu
指定されたパラメーター。 関数の完了時に、返されたリモート LU の数が含まれる整数変数のアドレスを指定します。 pRemLu で指定されたバッファーが、すべてのリモート LU を格納するのに十分な大きさでした。iMaxRemLu
指定されたパラメーター。 pRemLu で示されるバッファーで保持できるリモート LU 名の数を指定します。pRemLu
指定されたパラメーター。 関数の完了後にリモート LU 名を保持するバッファーのアドレスを指定します。 情報は文字列の配列として返されます。 各リモート LU 名は、次のようにバッファーに格納されます。非padded
Null で終わる
ASCII 文字列
最大長 8 バイト (ターミネータを除く)
文字列はバッファー内の 9 バイトごとに開始されるため、(pRemLu + (i–1)*9) は i番目の文字列の先頭を示します。 バッファーが小さすぎてすべての名前を保持できない場合は、 iMaxRemLu 文字列のみが返されます。
pAsyncRetCode
指定されたパラメーター。 指定されたアドレスが null 以外の場合に、この関数からのリターン コードを格納するために使用される整数変数のアドレスを指定します。 リターン コードは、非同期完了メッセージによって返されるものと同じになります。 呼び出しが完了している間、この変数の値はAPPC_CFG_PENDINGされます。 この非同期呼び出しが完了すると、この変数の値には、APPC_CFG_PENDING以外の戻りコードが含まれます。この変数は、ウィンドウ ハンドルへの非同期メッセージ入力候補が使用されない場合に、完了をポーリングすることによって使用されます。
pAsyncRetCode を使用する場合、hWnd は null である必要があることに注意してください。
戻り値
即時戻り値の意味は、非同期要求が受け入れられたかどうかによって異なります。 受け入れをテストするには、式を評価します。
(<戻されたハンドル> & APPC_CFG_SUCCESS)
式が FALSE の場合、要求は拒否されました。 戻り値は、次の一覧の同期リターン コードのいずれかになります。 式が TRUE の場合、要求は受け入れられ、次のいずれかのケースが適用されます。
hWnd が null 以外の場合、完了メッセージは次の形式で到着します。
Message パラメーター 説明 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
GetAppcConfig を呼び出す前に、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);
}