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 */