71{
75 {
78 };
80 typedef struct
81 {
84 } STR_AND_LEN;
85#define CONST_STR_AND_LEN(d) { (d), sizeof(d) }
86#define CSAL CONST_STR_AND_LEN
87
88#define NO_AUTO_LEN 1
89#define NO_DEFAULT 2
90#define AUTO_DIFFERS 4
91#define DEFAULT_DIFFERS 8
92 struct
93 {
98 ULONG DefaultExpectedCount;
99 STR_AND_LEN DefaultExpected[20];
100
102 {
108 {
CSAL(
L"String\0"), 1, {
CSAL(
L"String") } },
110 {
CSAL(
L"String1\0String2\0"), 2, {
CSAL(
L"String1"),
CSAL(
L"String2") } },
114 };
115
116#define DO_QUERY(ExpectedArray, ExpectedCount) do \
117 { \
118 ULONG _i; \
119 ULONG _ExpectedCount = (ExpectedCount); \
120 for (_i = 0; _i < _ExpectedCount; _i++) \
121 { \
122 Expected.Values[_i].ValueName = ValueName.Buffer; \
123 Expected.Values[_i].ValueType = REG_SZ; \
124 Expected.Values[_i].ValueData = (ExpectedArray)[_i].Str; \
125 Expected.Values[_i].ValueLength = (ExpectedArray)[_i].Len; \
126 } \
127 Expected.CurrentIndex = 0; \
128 Expected.Count = _ExpectedCount; \
129 if (_ExpectedCount == 1) \
130 QueryTable[0].EntryContext = &Expected.Values[0]; \
131 else \
132 QueryTable[0].EntryContext = NULL; \
133 Status = RtlQueryRegistryValues(RTL_REGISTRY_HANDLE, \
134 (PCWSTR)KeyHandle, \
135 QueryTable, \
136 &Expected, \
137 NULL); \
138 ok_eq_hex(Status, STATUS_SUCCESS); \
139 ok_eq_ulong(Expected.CurrentIndex, Expected.Count); \
140 } while(0)
141
144
145 for (
i = 0;
i < TestCount;
i++)
146 {
150 0,
155
157 }
158
159
162 "ZwDeleteValueKey returned %lx\n",
Status);
163
164
166
167 for (
i = 0;
i < TestCount;
i++)
168 {
170 continue;
171 trace(
"Default: %lu\n",
i);
175
178 else
180 }
181
182 for (
i = 0;
i < TestCount;
i++)
183 {
185 continue;
190
193 else
195 }
196}
static NTSTATUS NTAPI QueryRoutine(_In_ PWSTR ValueName, _In_ ULONG ValueType, _In_ PVOID ValueData, _In_ ULONG ValueLength, _In_ PVOID Context, _In_ PVOID EntryContext)
#define DO_QUERY(ExpectedArray, ExpectedCount)
NTSYSAPI NTSTATUS NTAPI ZwDeleteValueKey(__in IN HANDLE Key, __in IN PUNICODE_STRING ValueName)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define RTL_CONSTANT_STRING(s)
#define STATUS_OBJECT_NAME_NOT_FOUND
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Must_inspect_result_ _In_ ULONG Flags