On Sun, Nov 20, 2022 at 3:48 AM ToddAndMargo via perl6-users <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:

    Hi All,

    In one of my native call, I get returned a
    pointer to a DWORD (uint32).

    How do I turn that into the actual value
    in the DWORD?

    Many thanks,
    -T

On 11/20/22 16:00, Clifton Wood wrote:
@ToddAndMargo,

Two ways:

 - Use "my CArray[uint32] $p", use $p as your parameter, and access the value as "$p[0]"

or

- Use "my Pointer[uint32] $p"  and use "$p.deref"

My personal preference is the former, as it is the best way to access AND set the actual former value. The latter can only deref. To my knowledge, you cannot set the referenced value of a Pointer type. I do reserve the right to be wrong on this, though.


Hi Clifton,

I have a pointer $p (from a Windows API call)
that points to a spot in memory that is 24
bytes long.

# Where do I tell it I want 24 bytes back?
my $ca = CArray[uint8].new( 0xFF ** 24 )
$ca = $p.deref;

Internal error: unhandled target type


Yours in confusion,
-T

Reply via email to