@@ -45,16 +45,16 @@ var advApi = {
45
45
_Inout_opt_ LPDWORD lpcbData
46
46
);
47
47
*/
48
- RegQueryValueExA : function ( hKey , valueName , shouldBeNull , lpType , lpData , lpcbData ) {
49
- debug ( 'RegQueryValueExA ' ) ;
48
+ RegQueryValueExW : function ( hKey , valueName , shouldBeNull , lpType , lpData , lpcbData ) {
49
+ debug ( 'RegQueryValueExW ' ) ;
50
50
if ( lpData === null ) {
51
51
debug ( keys [ hKey . address ( ) ] . values . test_value_name ) ;
52
52
lpType . writeUInt32LE ( windef . REG_VALUE_TYPE . REG_SZ , 0 ) ;
53
53
lpcbData . writeUInt32LE ( keys [ hKey . address ( ) ] . values [ valueName ] . length , 0 ) ;
54
54
return 0 ;
55
55
}
56
56
57
- lpData . write ( keys [ hKey . address ( ) ] . values [ valueName ] . value , 'utf8' ) ;
57
+ keys [ hKey . address ( ) ] . values [ valueName ] . valueBuffer . copy ( lpData ) ;
58
58
lpType . writeUInt16LE ( windef . REG_VALUE_TYPE . REG_SZ ) ;
59
59
return 0 ;
60
60
} ,
@@ -67,9 +67,9 @@ var advApi = {
67
67
_Out_ PHKEY phkResult
68
68
);
69
69
*/
70
- RegOpenKeyExA : function ( hKey , subKeyName , shouldBeZero , accessLevel , pHkey ) {
70
+ RegOpenKeyExW : function ( hKey , subKeyName , shouldBeZero , accessLevel , pHkey ) {
71
71
var accessLevelFound = findValueInHash ( accessLevel , windef . KEY_ACCESS ) ;
72
- debug ( 'Mock: RegOpenKeyExA subkey: ' + subKeyName ) ;
72
+ debug ( 'Mock: RegOpenKeyExW subkey: ' + subKeyName ) ;
73
73
if ( hKey . address ) {
74
74
debug ( 'Mock: hKey address:' + hKey . address ( ) ) ;
75
75
}
@@ -123,8 +123,8 @@ var advApi = {
123
123
_In_ DWORD cbData
124
124
);
125
125
*/
126
- RegSetValueExA : function ( hKey , valueName , shouldBeNull , valueType , valueBuffer , bufferLength ) {
127
- debug ( 'Mock: RegSetValueExA ' ) ;
126
+ RegSetValueExW : function ( hKey , valueName , shouldBeNull , valueType , valueBuffer , bufferLength ) {
127
+ debug ( 'Mock: RegSetValueExW ' ) ;
128
128
// predefined key
129
129
if ( typeof hKey === 'number' ) {
130
130
assert ( findValueInHash ( hKey , windef . HKEY ) , 'Mock: Invalid predefined key specified' ) ;
@@ -136,9 +136,16 @@ var advApi = {
136
136
assert ( valueBuffer . constructor === Buffer ) ;
137
137
assert ( typeof bufferLength === 'number' ) ;
138
138
139
+ // Use the passed length, not the length of valueBuffer
140
+ var value = ref . reinterpret ( valueBuffer , bufferLength , 0 ) ;
141
+
142
+ // Copy the value to a new buffer and store that
143
+ var valueCopy = new Buffer ( bufferLength ) ;
144
+ value . copy ( valueCopy , 0 , 0 , bufferLength ) ;
145
+
139
146
keys [ hKey . address ( ) ] . values [ valueName ] = {
140
147
valueType : valueType ,
141
- value : ref . readCString ( valueBuffer ) ,
148
+ valueBuffer : valueCopy ,
142
149
length : bufferLength
143
150
} ;
144
151
return 0 ;
@@ -156,8 +163,8 @@ var advApi = {
156
163
_Out_opt_ LPDWORD lpdwDisposition
157
164
);
158
165
*/
159
- RegCreateKeyExA : function ( hKey , subKeyName , shouldBeNull , shouldBeNull2 , securityAttributes , accessLevel , shouldBeNull3 , pHkey , shouldBeNull4 ) {
160
- debug ( 'Mock: RegCreateKeyExA ' ) ;
166
+ RegCreateKeyExW : function ( hKey , subKeyName , shouldBeNull , shouldBeNull2 , securityAttributes , accessLevel , shouldBeNull3 , pHkey , shouldBeNull4 ) {
167
+ debug ( 'Mock: RegCreateKeyExW ' ) ;
161
168
assert ( hKey . constructor === Buffer ) ;
162
169
assert ( typeof subKeyName === 'string' ) ;
163
170
assert ( shouldBeNull === null ) ;
@@ -192,7 +199,7 @@ var advApi = {
192
199
_In_opt_ LPCTSTR lpSubKey
193
200
);
194
201
*/
195
- RegDeleteTreeA : function ( hKey , subKeyName ) {
202
+ RegDeleteTreeW : function ( hKey , subKeyName ) {
196
203
if ( typeof hKey === 'number' ) {
197
204
assert ( findValueInHash ( hKey , windef . HKEY ) , 'Mock: Invalid predefined key specified' ) ;
198
205
} else {
0 commit comments