2013-07-29 2 views
0

Моя машина Windows 8. Я хочу прочитать ключ «UpperFilters» от HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36fc9e60-c465-11cf-8056-444553540000} от моего пользовательского драйвера, чтобы получить наличие драйверов фильтров через USB-устройства.Как читать из реестра из внутреннего кода драйвера?

ответ

3

Я не написал драйвер, так как дней XP, но предполагая, что вы говорите о драйвере режима ядра. Я считаю, что вы хотите ZwOpenKey, ZwQueryValueKey и ZwClose. Общее руководство here.

+1

Да, это именно то, что мне нужно. –

-1

here является пример кода для чтения реестра с

здесь образец:

DWORD BufferSize = TOTALBYTES; 
DWORD cbData; 
DWORD dwRet; 

PPERF_DATA_BLOCK PerfData = (PPERF_DATA_BLOCK) malloc(BufferSize); 
cbData = BufferSize; 

printf("\nRetrieving the data..."); 

dwRet = RegQueryValueEx(HKEY_PERFORMANCE_DATA, 
         TEXT("Global"), 
         NULL, 
         NULL, 
         (LPBYTE) PerfData, 
         &cbData); 
while(dwRet == ERROR_MORE_DATA) 
{ 
    // Get a buffer that is big enough. 

    BufferSize += BYTEINCREMENT; 
    PerfData = (PPERF_DATA_BLOCK) realloc(PerfData, BufferSize); 
    cbData = BufferSize; 

    printf("."); 
    dwRet = RegQueryValueEx(HKEY_PERFORMANCE_DATA, 
        TEXT("Global"), 
        NULL, 
        NULL, 
        (LPBYTE) PerfData, 
        &cbData); 
} 
if(dwRet == ERROR_SUCCESS) 
    printf("\n\nFinal buffer size is %d\n", BufferSize); 
else printf("\nRegQueryValueEx failed (%d)\n", dwRet); 

или в простом примере

RegGetValue(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Class", "{36fc9e60-c465-11cf-8056-444553540000}", RRF_RT_ANY, NULL, (PVOID)&value, &BufferSize); 
+1

Ницца. Отличная работа. Ваш код отлично работает в пользовательском режиме. Но это не отвечает на мой вопрос. Фактически в режиме ядра, поскольку я говорю о развитии драйвера, malloc и его родственники не найдены, вместо этого у нас есть ExAllocatePool() и его родственники. Также функции RegXXX() недоступны. Вместо этого у нас есть функции ZwXXX(). –

Смежные вопросы