master
 1const std = @import("../../std.zig");
 2const windows = std.os.windows;
 3const BOOL = windows.BOOL;
 4const DWORD = windows.DWORD;
 5const HKEY = windows.HKEY;
 6const BYTE = windows.BYTE;
 7const LPCWSTR = windows.LPCWSTR;
 8const LSTATUS = windows.LSTATUS;
 9const REGSAM = windows.REGSAM;
10const ULONG = windows.ULONG;
11
12pub extern "advapi32" fn RegOpenKeyExW(
13    hKey: HKEY,
14    lpSubKey: LPCWSTR,
15    ulOptions: DWORD,
16    samDesired: REGSAM,
17    phkResult: *HKEY,
18) callconv(.winapi) LSTATUS;
19
20pub extern "advapi32" fn RegQueryValueExW(
21    hKey: HKEY,
22    lpValueName: LPCWSTR,
23    lpReserved: ?*DWORD,
24    lpType: ?*DWORD,
25    lpData: ?*BYTE,
26    lpcbData: ?*DWORD,
27) callconv(.winapi) LSTATUS;
28
29pub extern "advapi32" fn RegCloseKey(hKey: HKEY) callconv(.winapi) LSTATUS;
30
31// RtlGenRandom is known as SystemFunction036 under advapi32
32// http://msdn.microsoft.com/en-us/library/windows/desktop/aa387694.aspx */
33pub extern "advapi32" fn SystemFunction036(output: [*]u8, length: ULONG) callconv(.winapi) BOOL;
34pub const RtlGenRandom = SystemFunction036;
35
36pub const RRF = struct {
37    pub const RT_ANY: DWORD = 0x0000ffff;
38
39    pub const RT_DWORD: DWORD = 0x00000018;
40    pub const RT_QWORD: DWORD = 0x00000048;
41
42    pub const RT_REG_BINARY: DWORD = 0x00000008;
43    pub const RT_REG_DWORD: DWORD = 0x00000010;
44    pub const RT_REG_EXPAND_SZ: DWORD = 0x00000004;
45    pub const RT_REG_MULTI_SZ: DWORD = 0x00000020;
46    pub const RT_REG_NONE: DWORD = 0x00000001;
47    pub const RT_REG_QWORD: DWORD = 0x00000040;
48    pub const RT_REG_SZ: DWORD = 0x00000002;
49
50    pub const NOEXPAND: DWORD = 0x10000000;
51    pub const ZEROONFAILURE: DWORD = 0x20000000;
52    pub const SUBKEY_WOW6464KEY: DWORD = 0x00010000;
53    pub const SUBKEY_WOW6432KEY: DWORD = 0x00020000;
54};
55
56pub extern "advapi32" fn RegGetValueW(
57    hkey: HKEY,
58    lpSubKey: LPCWSTR,
59    lpValue: LPCWSTR,
60    dwFlags: DWORD,
61    pdwType: ?*DWORD,
62    pvData: ?*anyopaque,
63    pcbData: ?*DWORD,
64) callconv(.winapi) LSTATUS;
65
66pub extern "advapi32" fn RegLoadAppKeyW(
67    lpFile: LPCWSTR,
68    phkResult: *HKEY,
69    samDesired: REGSAM,
70    dwOptions: DWORD,
71    reserved: DWORD,
72) callconv(.winapi) LSTATUS;