A Null pointer is just a pointer that points to the address 0. So if you are dealing with it as an integer it will be 0.
On Fri, Dec 27, 2019 at 6:06 AM ToddAndMargo via perl6-users < perl6-us...@perl.org> wrote: > Hi All, > > https://docs.perl6.org/language/nativecall > > "As you may have predicted by now, a NULL pointer > is represented by the type object of the struct type." > > > https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexw > > C++ > LSTATUS RegQueryValueExW( > HKEY hKey, > LPCWSTR lpValueName, > LPDWORD lpReserved, > LPDWORD lpType, > LPBYTE lpData, > LPDWORD lpcbData > ); > > lpReserved > This parameter is reserved and must be NULL. > > With "native", how do I satisfy the "NULL" requirement? > > constant WCHAR := uint16; > > constant DWORD := int32; > > > sub RegQueryValueExW( DWORD, WCHARS, DWORD, DWORD, DWORD is rw, DWORD is > rw ) is native("Kernel32.dll") returns DWORD { * }; > > $RtnCode = RegQueryValueExW( $Handle, $lpValueName, int32, REG_DWORD, > $lpData, $lpcbData ); > > "int32" returns: > > Cannot unbox a type object (int32) to int in method > CALL-ME at C:\rakudo\share\perl6\sources \947BDAB9F96E0E5FCCB383124F9 > 23A6BF6F8D76B (NativeCall) line 587 > > > Many thanks, > -T >