Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: chrome_elf/chrome_elf_reg.h

Issue 1841573002: [Chrome ELF] New NT registry API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean up OverrideRegistry function. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
robertshield 2016/04/20 16:55:53 Suggest having at the top of this file some explan
penny 2016/05/28 01:34:23 Done. Comments about HANDLEs have been added to t
4
5 #ifndef CHROME_ELF_CHROME_ELF_REG_H_
6 #define CHROME_ELF_CHROME_ELF_REG_H_
7
8 #include <vector>
9
10 #include "base/strings/string16.h"
11 #include "sandbox/win/src/nt_internals.h" // NTSTATUS
12
13 namespace nt {
14
15 extern base::string16 HKLM_override;
16 extern base::string16 HKCU_override;
17
18 // AUTO will choose depending on system install or not.
19 // Use HKLM or HKCU to override.
20 typedef enum _ROOT_KEY { AUTO = 0, HKLM, HKCU } ROOT_KEY, *PROOT_KEY;
robertshield 2016/04/20 16:55:53 We don't usually explicitly typedef for a pointer-
penny 2016/05/28 01:34:23 Done. I just always do that as an old habit.
21
22 // If you don't need the new handle left open, pass in nullptr.
23 // Also, will happily succeed if key already exists.
24 bool CreateRegKey(ROOT_KEY root,
25 const wchar_t* key_path,
26 ACCESS_MASK access,
27 HANDLE* out_handle OPTIONAL);
28
29 // If key handle is passed in, caller must still call CloseRegKey
30 // after the delete.
31 bool DeleteRegKey(HANDLE key);
robertshield 2016/04/20 16:55:53 please add separate comments for each function.
penny 2016/05/28 01:34:23 Done.
32 bool DeleteRegKey(ROOT_KEY root, const wchar_t* key_path);
33
34 // Caller must call CloseRegKey on returned handle (on success).
35 bool OpenRegKey(ROOT_KEY root,
36 const wchar_t* key_path,
37 ACCESS_MASK access,
38 HANDLE* out_handle,
39 NTSTATUS* error_code OPTIONAL);
40
41 void CloseRegKey(HANDLE key);
42
43 //------------------------------------------------------------------------------
44 // Getter functions
45 //------------------------------------------------------------------------------
46
47 // Caller responsible for calling "delete[] *out_buffer".
48 // Types defined in winnt.h. E.g.: REG_DWORD, REG_SZ.
49 bool QueryRegKeyValue(HANDLE key,
robertshield 2016/04/20 16:55:53 For all of the functions in this file that take a
robertshield 2016/04/20 16:55:53 Why is this function called QueryXXX when the othe
penny 2016/05/28 01:34:23 Done.
penny 2016/05/28 01:34:23 Done. I've changed to always use "Query". This m
penny 2016/05/28 01:34:23 Done.
50 const wchar_t* value_name,
51 ULONG* out_type,
52 BYTE** out_buffer,
53 DWORD* out_size);
54
55 // If key handle is passed in, it will be left open. Otherwise,
56 // the registry key will be opened, queried, then closed.
robertshield 2016/04/20 16:55:53 Please attach comments to the individual functions
penny 2016/05/28 01:34:23 Done. I always use "git cl format" before uploadi
57 bool GetRegValue_DWORD(HANDLE key, const wchar_t* value_name, DWORD* out_dword);
58 bool GetRegValue_DWORD(ROOT_KEY root,
59 const wchar_t* key_path,
60 const wchar_t* value_name,
61 DWORD* out_dword);
62
63 bool GetRegValue_SZ(HANDLE key,
robertshield 2016/04/20 15:45:47 Minor style nit: base's registry functions are nam
penny 2016/05/28 01:34:23 Done.
64 const wchar_t* value_name,
65 base::string16* out_sz);
66 bool GetRegValue_SZ(ROOT_KEY root,
67 const wchar_t* key_path,
68 const wchar_t* value_name,
69 base::string16* out_sz);
70
71 bool GetRegValue_MULTI_SZ(HANDLE key,
72 const wchar_t* value_name,
73 std::vector<base::string16>* out_multi_sz);
74 bool GetRegValue_MULTI_SZ(ROOT_KEY root,
75 const wchar_t* key_path,
76 const wchar_t* value_name,
77 std::vector<base::string16>* out_multi_sz);
78
79 //------------------------------------------------------------------------------
80 // Setter functions
81 //------------------------------------------------------------------------------
82
83 // Types defined in winnt.h. E.g.: REG_DWORD, REG_SZ.
84 bool SetRegKeyValue(HANDLE key,
85 const wchar_t* value_name,
86 ULONG type,
87 BYTE* data,
88 DWORD data_size);
89
90 // If key handle is passed in, it will be left open. Otherwise,
91 // the registry key will be opened, set, then closed.
92 bool SetRegValue_DWORD(HANDLE key, const wchar_t* value_name, DWORD value);
93 bool SetRegValue_DWORD(ROOT_KEY root,
94 const wchar_t* key_path,
95 const wchar_t* value_name,
96 DWORD value);
97
98 // Passing in pointer to string for efficiency.
robertshield 2016/04/20 16:55:53 Use const ref instead of pointer here and everywhe
penny 2016/05/28 01:34:23 Done. I think done. I'm new to the strange '&' r
99 bool SetRegValue_SZ(HANDLE key,
100 const wchar_t* value_name,
101 base::string16* value);
102 bool SetRegValue_SZ(ROOT_KEY root,
103 const wchar_t* key_path,
104 const wchar_t* value_name,
105 base::string16* value);
106
107 // Passing in pointer to vector for efficiency.
108 bool SetRegValue_MULTI_SZ(HANDLE key,
109 const wchar_t* value_name,
110 std::vector<base::string16>* values);
111 bool SetRegValue_MULTI_SZ(ROOT_KEY root,
112 const wchar_t* key_path,
113 const wchar_t* value_name,
114 std::vector<base::string16>* values);
115
116 //------------------------------------------------------------------------------
117 // Utils
118 //------------------------------------------------------------------------------
119
120 // Handy function to get the current user sid in string form.
121 // Does NOT use advapi32, only ntdll.
robertshield 2016/04/20 16:55:53 Suggest: Returns the current user SID in string f
penny 2016/05/28 01:34:23 Done.
122 base::string16 GetCurrentUserSidString();
123
124 }; // namespace nt
125
126 #endif // CHROME_ELF_CHROME_ELF_REG_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698