IDIXXLOC – 独自のバッファリングを使用したダンプ・ストレージの検索
フォーマット
#include "idixufmh.h"
int IDIXXLOC(void *bufptr, unsigned long long addr, int len);
概要
IDIXXLOC() 関数は、仮想アドレスと長さによって、分析されたアドレス・スペース内のストレージにアクセスする場合に使用します。
バッファーのアドレスを bufptr で指定する必要があります。バッファーの長さは len 以上でなければなりません。
リアルタイム処理の場合、アクセスされるストレージは一般的に、分析中の実際のアドレス・スペースのストレージです。再分析の場合、ストレージは、ミニダンプまたは拡張ダンプ・データ・セットから取得されます。
リアルタイム・モードか再分析モードかにかかわらず、保護例外が発生するおそれがあるため、IDIXXLOC() 関数の呼び出しによって取得されていないストレージ域を間接参照しないでください。
IDIXXLOC() は、Fault Analyzer REXX コマンド「Evaluate」と機能的に同等です。
戻り値
要求された長さでストレージが使用可能な場合、IDIXXLOC() は指定されたバッファー (bufptr) のアドレスを返します。IDIXXLOC() は、要求されたアドレスが使用可能でも、長さが要求された長さよりも短い場合は負の値を返します。使用可能な長さは、戻り値を 0 から減算することで判別できます。部分的なストレージ域のアドレスを取得するには、削減した長さを使用して再度 IDIXXLOC() を呼び出します。
長さにかかわらず、要求されたアドレスが使用できない場合は、値 0 が返されます。
例
#include "idixufmh.h"
int maddr, i;
char buffer[500];
maddr = IDIXXLOC(buffer, 0x001F0000, 500); /* Get 500 bytes of storage at addr 1F0000 */
if (maddr > 0)
i = *(int *)maddr; /* Get first 4 bytes */