Здравствуйте уважаемые программисты. Хочу научиться программировать драйвера. Вот учусь 

 Возникли вопросы, с которыми мне одному не разобраться. Необходимо прочитать параметр из реестра. Вот мои наработки:
#include <ntddk.h>
VOID ReadUserinit()
{
        UNICODE_STRING key;
        UNICODE_STRING param;
        OBJECT_ATTRIBUTES ObjAtr;
        HANDLE hKey;
        NTSTATUS opn, rd;
        PKEY_VALUE_PARTIAL_INFORMATION info;
        LONG size;
        
        DbgPrint("Start");
        
        RtlInitUnicodeString(&key, L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon");
        RtlInitUnicodeString(¶m, L"Userinit");
                        
        InitializeObjectAttributes(&ObjAtr, &key, OBJ_CASE_INSENSITIVE, NULL, NULL);
        
        opn = ZwOpenKey(&hKey, KEY_QUERY_VALUE, &ObjAtr);
        
        if(opn == STATUS_SUCCESS)
        {
                DbgPrint("ZwOpenKey()...YES");
                rd = ZwQueryValueKey(hKey, ¶m, KeyValuePartialInformation, NULL, 0, &size);
                if(rd == STATUS_SUCCESS)
                {
                        DbgPrint("ZwQueryValueKey(1)...YES");
                        info = (PKEY_VALUE_PARTIAL_INFORMATION)ExAllocatePool(PagedPool, size);
                        rd = ZwQueryValueKey(hKey, ¶m, KeyValuePartialInformation, info, sizeof(KEY_VALUE_PARTIAL_INFORMATION), &size);
                        if(rd = STATUS_SUCCESS)
                        {
                                DbgPrint("ZwQueryValueKey(2)...YES");
                                DbgPrint("Parametr: %s", info);
                        }
                        else
                        {
                                DbgPrint("ZwQueryValueKey(2)...NO");
                        }
                        ExFreePool(info);
                }
                else
                {
                        DbgPrint("ZwQueryValueKey(1)...NO");
                }
                ZwClose(hKey);
        }
        else
        {
                DbgPrint("ZwOpenKey()...NO");
        }
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
    DbgPrint("Loaded");
    ReadUserinit();     
    return STATUS_DEVICE_CONFIGURATION_ERROR;
}
При запуске драйвера и отладке программой DbgView, выполнение драйвера прекращается при первом вызове функции ZwQueryValueKey() т. е. DbgView выводит "ZwQueryValueKey(1)...NO" и далее, разумеется, ничего не работает. Прошу объяснить мне, где я не прав.