IDIXXLOC – Locate dump storage using own buffering

Format


#include "idixufmh.h"
int IDIXXLOC(void *bufptr, unsigned long long addr, int len);

General description

The IDIXXLOC() function is used to access storage in the analyzed address space by virtual address and length.

The address of a buffer must be specified in bufptr. The length of the buffer must be greater, or equal to, len.

For real-time processing, the storage that is accessed is generally that of the actual address space that is being analyzed. For reanalysis, the storage is obtained from the minidump or the extended dump data set.

Regardless of real time or reanalysis mode, do not dereference storage areas that are not obtained by calling the IDIXXLOC() function, because protection exceptions might otherwise occur.

IDIXXLOC() is functionally equivalent to the Fault Analyzer REXX command "Evaluate".

Returned value

If the storage is available for the requested length, then IDIXXLOC() returns the address of the provided buffer (bufptr). IDIXXLOC() returns a negative value if the requested address is available, but for a length that is less than the requested length. The available length can be determined by subtracting the returned value from 0. To obtain the address of the partial storage area, call IDIXXLOC() again with the reduced length.

A zero value is returned if the requested address is not available, regardless of length.

Example


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