ある特定のアプリケーションとデータベースに接続しているすべてのユーザーを、それらのユーザーが現在ロックしているデータ・ブロックのカウントとともにリストします。EssListLocksに似ていますが、ユーザー・ディレクトリにホストされているユーザーが含まれます。
構文
ESS_FUNC_M EssListLocksEx (
hCtx
,
AppName
,
DbName
,
pCount
,
ppLockList
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル(入力)。 |
AppName |
ESS_STR_T |
アプリケーション名(入力)。 |
DbName |
ESS_STR_T |
データベース名(入力)。 |
pCount |
ESS_PUSHORT_T |
ユーザー・カウントを受け取る変数のアドレス(出力)。 |
ppLockList |
ESS_PPLOCKINFOEX_T |
割り当てられたユーザー・ロック情報構造体の配列を受け取るポインタのアドレス(出力)。情報構造体には、ユーザー・ディレクトリおよび一意のID属性を含められます。 |
備考
この関数はスナップショットです。この関数が呼び出されたときにサーバーに接続していたユーザーのみがリストされます。
ppLockListに対して割り当てられたメモリーは、EssFreeを使用して解放する必要があります。
戻り値
正常終了の場合は、接続しているユーザー数のカウントがpCountに、ユーザー・ロック構造体のリストがppLockListに戻されます。
アクセス
この関数を使用するには、呼出し元が、指定したデータベースに対してデータベース・デザイン権限(ESS_PRIV_DBDESIGN)を持っている必要があります。
例
void DisplayLock(ESS_LOCKINFOEX_T lockinfo)
{
ESS_STS_T sts = ESS_STS_NOERR;
printf("\tUser Name: %s\n", lockinfo.UserName);
printf("\tProvider Name: %s\n", lockinfo.ProviderName);
printf("\tConnection Parameter: %s\n", lockinfo.connparam);
printf("\tNumber of Locks: %d\n", lockinfo.nLocks);
printf("\tTime: %ld\n", lockinfo.Time);
printf("\tLoginId: %ld\n", lockinfo.LoginId);
printf("\n");
}
ESS_FUNC_M ESS_ListLocksEx (ESS_HCTX_T hCtx, ESS_HINST_T hInst)
{
ESS_STS_T sts;
ESS_USHORT_T count, i;
ESS_PLOCKINFOEX_T plockinfo = NULL;
ESS_ACCESS_T Access;
sts = EssSetActive(hCtx, AppName, DbName, &Access);
printf("EssSetActive sts: %ld\n",sts);
sts = EssListLocksEx (hCtx, AppName, DbName, &count, &plockinfo);
printf("EssListLocksEx sts: %ld\n", sts);
if(!sts)
{
printf("\nNumber of lock info returned: %d\n", count);
for(i = 0; i < count; i++)
{
DisplayLock(plockinfo[i]);
}
}
return (sts);
}
関連トピック