GetDeviceDriverBaseName для поиска конкретного драйвера

#c #windows #device-driver

#c #Windows #устройство-драйвер

Вопрос:

Я довольно новичок в ядре, поэтому решил, что научусь находить драйвер устройства по имени на C . Я в тупике, поскольку я действительно не понимаю, как использовать GetDeviceDriverBaseName , чтобы получить из него конкретное имя драйвера. Я также не смог найти учебные пособия или документы, кроме тех, что от Microsoft.

Любая помощь приветствуется.

 #include <psapi.h>
#include <tchar.h>
#include "Title.h"

#define ARRAY_SIZE 1024

int main( void ) 
{   
    LPVOID drivers[ARRAY_SIZE];
    DWORD cbNeeded;
    int cDrivers, i;
    if (EnumDeviceDrivers(drivers, sizeof(drivers), amp;cbNeeded) amp;amp; cbNeeded < sizeof(drivers))
    {
        TCHAR szDriver[ARRAY_SIZE];
        cDrivers = cbNeeded / sizeof(drivers[0]);
        _tprintf(TEXT("There are %d drivers:n"), cDrivers);
        for (i = 0; i < cDrivers; i  )
        {
            if (GetDeviceDriverBaseName(drivers[i], szDriver, sizeof(szDriver) / sizeof(szDriver[0])))
            {
                _tprintf(TEXT("%d: %sn"), i   1, szDriver);
            }
        }
    }
    
    else
    {
        _tprintf(TEXT("Enumeration of Drivers failed; array size need is %dn"), cbNeeded / sizeof(LPVOID));
        return 1;
    } 
  

Комментарии:

1. Это похоже на ссылочный код здесь , но с #include <windows.h> отсутствующим, и этот комментарий обрезан: » Чтобы обеспечить правильное разрешение символов, добавьте Psapi.lib в TARGETLIBS и скомпилируйте с -DPSAPI_VERSION=1 «. Вы это сделали, и если да, то что не работает?

2. Проблема не в том, что мне не хватает файла заголовка, у меня Windows. h там я просто забыл вставить этот пост. Проблема в том, что моя цель — попытаться создать приложение на c в пользовательском режиме, которое может сообщить мне, загружен ли конкретный драйвер в данный момент. Я понятия не имею, как это сделать. Текущий код сообщает мне каждый драйвер, но не конкретный. Это моя проблема с фильтрацией / выделением определенного драйвера по имени из этого массива

3. Если вопрос заключается в том, как найти заданную строку в списке возвращенных строк, тогда просто strcmp строка, которую вы ищете, для каждой строки в списке.

4. я собираюсь попробовать это, я лично никогда не использовал strcmp, и я готов это сделать, спасибо за ответ.