Core Function PTRRead

From Sputnik Wiki
Revision as of 15:51, 29 September 2013 by UberFoX (Talk | contribs)
Jump to: navigation, search
PTRRead( <ptr>, <type>, <offset> )

Contents

Description

Read data from a memory pointer optionally starting from a given index.

Parameters

ptr

The pointer to use.

type

The type of data to read

[TYPE]		[WHAT IT IS]
r		Raw bytes
c		ASCII char
C		UNICODE char
b		unsigned byte
B		signed byte
s		signed int16
i		signed int32
l		signed int64
S		unsigned int16
I		unsigned int32
L		unsigned int64
f		float
d		double
t		pointer

offset

Offset to add to the pointer.


length

Optional; Only valid if type is "r" this defines how many bytes to read.

Return Value

Success: Returns the value requested or -1 if fail.

Failure: Returns null.

Remarks

None.

Example

$PTR = Alloc(300);
 
PTRWrite($PTR, "f", 0, 133.77);
PTRWrite($PTR, "l", 4, 777);
PTRWrite($PTR, "i", 12, 1221);
 
Println( PTRRead($PTR, "f", 0) );
Println( PTRRead($PTR, "l", 4) );
Println( PTRRead($PTR, "i", 12) );
 
Free($PTR);

If the type is a NUMBER instead of a STRING this function will READ that many BYTES from the pointer and return it as a binary variable example

#PTRRead($p, 100, 0); # Read 100 bytes from offset 0
#PTRRead($p, 100, 50); # Read 100 bytes from offset 50
#PTRRead($p, 70, 25); # Read 70 bytes from offset 25
 
my $GameCap = "Pacman 2.4";
my $GamePID = WinGetProcess($GameCap);
$Value = GetUTF8Bytes("The Cat");
WriteMem($GamePID, "", 0x400300, $Value);
 
// Grabs the raw UTF8 bytes from ram
// and returns them as a binary variable
Function GetUTF8Bytes( &$String )
{
	fixed( $p = $String )
	{
		// Read the whole memory of the string
		// including all the extra unicode characters
		// and even grab its null terminator
		return PTRRead($p, "r", 0, StrLen($String) * @CharSize + 1);
	}
}
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox