any PInvoke failure, we should `throw new Win32Exception();` which will take care getLastError() automatically.