Драйвер ядра: как получить правильное содержимое каждой переменной в структуре?
У меня есть следующий код с участием struct
включая переменные указателя, и я не могу получить правильное содержимое каждой переменной.
Кто-нибудь может мне помочь, пожалуйста?
struct MyData
{
ULONG Value[3];
wchar_t *Str1;
int Str1Len;
wchar_t *Str2;
int Str2Len;
};
// In the driver, on method that receives commands i have following:
struct MyData *pData = (struct MyData*) Irp->AssociatedIrp.SystemBuffer;
DbgPrint("0x%x \n 0x%x \n 0x%x \n %s \n %d \n %s \n %d", &pData->Value[0], &pData->Value[1], &pData->Value[2], &pData.Str1, &pData->Str1Len, &pData->Str2, &pData->Str2Len);
1 ответ
Решение
DbgPrint
называется очень похоже printf
называется, поэтому вы должны передать значения, а не адрес значений. Так
DbgPrint("0x%x \n 0x%x \n 0x%x \n %s \n %d \n %s \n %d", &pData->Value[0], // etc...
должно быть
DbgPrint("0x%x \n 0x%x \n 0x%x \n %s \n %d \n %s \n %d", pData->Value[0], // etc...