Получить типы данных переменных в драйверах режима ядра windows - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу знать, есть ли какой-либо метод в драйверах режима ядра, который дает тип данных переменной. Например, если я объявлю:

INT i = 0;

и запросит тип данных «i», он вернет INT. Я тоже хочу то же самое для структур.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Вы можете объявить свою функцию следующим образом:

void myapi(void *param, enum type param_type);

И соответствующее перечисление:

enum type {
    TYPE_INT,
    TYPE_CHAR,
    // more types
 };

С таким телом:

void myapi(void *param, enum type param_type)
{
    if (param_type == TYPE_INT) {
        int *intptr = param;
        // do something with intptr
    } else if (param_type == TYPE_CHAR) {
        char *charptr = param;
        // do something with charptr
    // cases for other types
    }
}

И Вы бы назвали это так:

int myint = 0;
myapi(&myint, TYPE_INT);
char mychar = 'x';
myapi(&mychar, TYPE_CHAR);
0 голосов
/ 20 февраля 2020

Это невозможно. Ядро эффективно сборочное. Если вы получаете PVOID, это либо 32-, либо 64-битный адрес, и вы даже не знаете размер объекта, на который он указывает.

...