RtlQueryRegistryValues(): +Satisfy secdrv.sys 'CSDVersion'.
authorshort <>
Mon, 10 Nov 2003 20:50:50 +0000 (20:50 +0000)
committershort <>
Mon, 10 Nov 2003 20:50:50 +0000 (20:50 +0000)
src/libcaptive/cm/rtlfunc.c

index 62f4128..5b3a26f 100644 (file)
@@ -48,6 +48,8 @@ const WCHAR *Path__captive_filesystem_Parameters_ucs2=
                captive_utf8_to_UnicodeString_alloca("\\captive\\filesystem\\Parameters")->Buffer;
 const WCHAR *QueryTable_WritingSupport_Name_ucs2=
                captive_utf8_to_UnicodeString_alloca("WritingSupport")->Buffer;
+const WCHAR *QueryTable_CSDVersion_Name_ucs2=
+               captive_utf8_to_UnicodeString_alloca("CSDVersion")->Buffer;
 const gchar *RelativeTo_table[]={
                "RTL_REGISTRY_ABSOLUTE",
                "RTL_REGISTRY_SERVICES",
@@ -81,5 +83,18 @@ UNICODE_STRING Path_UnicodeString;
                return STATUS_SUCCESS;
                }
 
+       if (RelativeTo==RTL_REGISTRY_WINDOWS_NT
+                       && *Path==0
+                       && QueryTable[0].Name!=NULL
+                                       && captive_ucs2_compare(QueryTable[0].Name,QueryTable_CSDVersion_Name_ucs2)
+                       && QueryTable[0].Flags==RTL_QUERY_REGISTRY_DIRECT
+                       && QueryTable[0].EntryContext!=NULL
+                       && QueryTable[1].Name==NULL) {
+               RtlCopyUnicodeString(
+                               (UNICODE_STRING *)QueryTable->EntryContext,     /* DestinationString */
+                               captive_utf8_to_UnicodeString_alloca("Service Pack 1"));        /* SourceString */
+               return STATUS_SUCCESS;
+               }
+
        return STATUS_OBJECT_NAME_NOT_FOUND;
 }