I may have.

Regardless, I have written a proof of concept in 'C' which works.
My question isn't how to interface with the Windows Operating System
because I have already done so in 'C' quite easily.

My question pertains to working around the bug as described here:
https://github.com/rakudo/rakudo/issues/3633
Do you have any comments concerning this bug and/or the approach I'm taking?
Passing a flattened array of 260 int16's doesn't work so my approach is
passing 65 non-flattened int64's.

The 65 int64's are in fact being utilized by the callee, yet I'm looking
for a method to reconstruct this back into 260 wchar_t's (which has a width
of 16)  w/ a simple method that doesn't include me walking the int64 and
masking the chars out myself.
Does this exist.

Thanks,
~Paul

On Thu, Jan 14, 2021 at 9:58 PM ToddAndMargo via perl6-users <
perl6-us...@perl.org> wrote:

> On 1/14/21 4:32 PM, Paul Procacci wrote:
> >
> https://docs.microsoft.com/en-us/windows/win32/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot
> > <
> https://docs.microsoft.com/en-us/windows/win32/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot
> >
> >
> > On Thu, Jan 14, 2021 at 7:30 PM ToddAndMargo via perl6-users
> > <perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote:
> >
> >     On 1/14/21 3:42 PM, Paul Procacci wrote:
> >      > Let me preface this by saying if I were using a lower level
> language
> >      > (like C) I wouldn't have this problem; as I know how to shift and
> >     mask
> >      > accordingly.
> >      >
> >      > On raku however, how to do so *eloquantly* eludes me.
> >      >
> >      > I've defined a CStruct as follows:
> >      >
> >      > class test is repr('CStruct') {
> >      >
> >      >    has int64 $.a1;
> >      >
> >      >    has int64 $.a2;
> >      >
> >      >    ...
> >      >
> >      >    has int64 $.a65;
> >      >
> >      > }
> >      >
> >      > Under normal circumstances I would have defined the member as:
> >      > `HAS int16 @.a[260] is CArray` however that seems to be broken.
> See:
> >      >
> >      > https://github.com/rakudo/rakudo/issues/3633
> >     <https://github.com/rakudo/rakudo/issues/3633>
> >      > <https://github.com/rakudo/rakudo/issues/3633
> >     <https://github.com/rakudo/rakudo/issues/3633>>
> >      >
> >      > The function that gets called with these members $.a1 .. $.a65
> >     should
> >      > get filled with a wchar_t character array.
> >      >
> >      > Does raku employ a simple method of decoding the 4 wchar_t's that
> >     get
> >      > placed into a int64 structure?  The characters I'd like to
> >     extract are
> >      > at bit positions [15:0], [31.16], [47:32], [63:48]
> >      >
> >      > I'm imagining something along the lines of:
> >      >
> >      > buf16.new( $.a1, ... $.a64);
> >      >
> >      > ... but that doesn't quite work like I would expect.
> >      >
> >      > Thanks,
> >      > ~Paul
> >
> >     Hi Paul,
> >
> >     Would you post the system call you are trying to
> >     interface with?
> >
> >     -T
>
>
> Did you see?
>
>
> https://docs.microsoft.com/en-us/windows/win32/toolhelp/taking-a-snapshot-and-viewing-processes
>
>

-- 
__________________

:(){ :|:& };:

Reply via email to