ダイナミック・リンク方式
アプリケーションは、ダイナミック・リンク方式を使用して、実行時にオペレーティング・システムに対する呼び出しを行い、Z and I Emulator for Windows EHLLAPI モジュールをロードし、その中の hllapi エントリー・ポイントを見つけます。この方式では、アプリケーションにより多くのコードが必要となりますが、 アプリケーションはエラー条件をより一層制御できるようになります。例えば、Z and I Emulator for Windowsの EHLLAPI モジュールが見つからない場合、アプリケーションはユーザーに特定のエラー・メッセージを表示することができます。
ダイナミック・リンクを使用するには、アプリケーションは適切な Z and I Emulator for Windows モジュールをロードして、エントリー・ポイントを見つける必要があります。エントリー・ポイントは、 名前ではなく、その序数で見つけられるようにすることをお勧めします。その序数は、ヘッダー・ファイルに定義されています。次の 32 ビット Windows コードは、IBM® 標準 32 ビット EHLLAPI モジュールをロードし、hllapi エントリー・ポイントを見つけて 、EHLLAPI 関数呼び出しを行います。
#include "hapi_c.h"
HMODULE Hmod; // Handle of PCSHLL32.DLL
long (APIENTRY hllapi)(int *, char *, int *, int *); // Function pointer
int HFunc, HLen, HRc; // Function parameters
char HBuff[1]; // Function parameters
Hmod = LoadLibrary("PCSHLL32.DLL"); // Load EHLLAPI module
if (Hmod == NULL) {
// ... Error, cannot load EHLLAPI module
}
hllapi = GetProcAddress(Hmod, MAKEINTRESOURCE(ord_hllapi));
// Get EHLLAPI entry point
if (hllapi == NULL) {
// ... Error, cannot find EHLLAPI entry point
}
HFunc = HA_RESET_SYSTEM; // Run EHLLAPI function
HLen = 0;
HRc = 0;
(*hllapi)(&Func, HBuff, &HLen, &HRc);
if (HRc != 0) {
// ... EHLLAPI access error
}