Durga_Devi Ответов: 1

Проблема в драйвере устройства после установки последних исправлений безопасности


Привет,

Я использую драйвер устройства 3-й партии (файл. sys)и использую Windows embedded standard 7 os.

Когда я выполняю функцию DeviceIoControl () для вышеупомянутого sys-файла, код возврата успешен, но выходной буфер равен нулю. Используемый управляющий код - IOCTL_MAP_COMMON_BUFFER_TO_USER (User defined).

Функциональность приведенного выше управляющего кода заключается в следующем

Файл sys будет связываться с "L" \ \ Device\\PhysicalMemory" и сопоставит общий буфер с диапазоном виртуальных адресов в адресном пространстве процесса.

DeviceIoControl возвращает нулевой буфер только после обновления приведенных ниже последних исправлений безопасности для ОС Windows Embedded standard 7. Если я удалю приведенные ниже патчи, DeviceIoControl вернет действительный указатель буфера. Проблема возникает даже в том случае, если я устанавливаю любой из приведенных ниже патчей.
3126587
3153171
3146706
3060716
3071756

Не могли бы вы помочь, что делает вышеуказанный pathces и нужно ли мне менять код драйвера устройства?

Заранее спасибо

Что я уже пробовал:

Приведенная ниже функция возвращает нулевой буфер

r = DeviceIoControl(Display, IOCTL_MAP_COMMON_BUFFER_TO_USER, NULL, 0,
& UserPointer, sizeof(UINT_PTR), & BytesReturned, NULL);

if (UserPointer = = NULL)
{
AfxMessageBox(L " нулевой указатель для MAP_COMMON_BUFFER");
вернуть;
}

Dave Kreskowiak

Вам придется задать этот вопрос Службе поддержки Microsoft.

1 Ответов

Рейтинг:
1

KarstenK

Вам нужно обновить драйвер 3-й партии. Похоже, у него есть некоторые проблемы с безопасностью, которые нужно решить. В качестве альтернативы вы можете спросить об этом Microsoft, и, возможно, они сделали что-то не так.

Я бы назвал это устройство"\\.\PhysicalMemory " таким образом или изменить какой-то параметр.

Совет: GetLastError может указать, что пошло не так.