Hi Todd,

I think RegQueryValueExW is not the best choice for this to get the job
done. Back in the $work with a Windows box, I looked around and found the
RegGetValueW method:
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-reggetvaluew

This method accept a type. No need to use an array with fixed size for the
return data.

Greetings
Wolf

On Fri, 3 Jan 2020 at 20:24, ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> >> On Wed, 1 Jan 2020 at 03:48, ToddAndMargo via perl6-users
> >> <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
> >>
> >>     Hi All,
> >>
> >>     Request for Enhancement: Native Call error
> >>
> >>     perl6 -I. -e "use WinReg :WinReadRegKey; say WinReadRegKey(
> >>     HKEY_LOCAL_MACHINE,
> >>     Q[SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system],
> >>     Q[EnableLUA] );"
> >>
> >>     Native call expected argument that references a native integer, but
> got
> >>     P6int in method CALL-ME at
> >>
>  C:\rakudo\share\perl6\sources\947BDAB9F96E0E5FCCB383124F923A6BF6F8D76B
> >>     (NativeCall) line 587 in sub WinReadRegKey at
> >>     K:\Windows\NtUtil\WinReg.pm6 (WinReg) line 177 in block <unit> at -e
> >>     line 1
> >>
> >>
> >>     "references a native integer, but got P6int" is NOT REALLY HELPFUL.
> >>     Would you please tell me which one threw this error?
> >>
> >>
> >>     Many thanks,
> >>     -T
>
> On 2020-01-01 07:06, WFB wrote:
> > Hi Todd,
> > Sounds like in WinReg.pm6 line 177 is a definition like :
> >   sub RegOpenKeyExW( DWORD, WCHARS, DWORD, DWORD, DWORD is rw) is
> > native("Kernel32.dll") returns DWORD { * };
> > and you put a "my $i = 0" variable instead of "my int32 $i = 0" in it
> > somewhere.
> >
> > Greetings,
> > Wolf
> >
> Hi Wolf,
>
> I did figure it out.  I would just like the error message
> to be a little more helpful.
>
>     sub RegQueryValueExW( DWORD, WCHARS, DWORD, DWORD, CArray[BYTE] is
> rw, DWORD is rw ) is native( "Kernel32.dll" ) is symbol(
> "RegQueryValueExW" ) returns DWORD { * };
>
>     $RtnCode = RegQueryValueExW( $Handle, $lpValueName, 0, $lpType,
> $lpData, $lpcbData );
>
> -T
>

Reply via email to