Количество невыполненных клиентов файла ввода-вывода службы/драйвера в WindowsC++

Программы на C++. Форум разработчиков
Anonymous
 Количество невыполненных клиентов файла ввода-вывода службы/драйвера в Windows

Сообщение Anonymous »

После запуска службы/драйвера (.sys) связь обычно происходит через файл (псевдокод клиента):

Код: Выделить всё

HANDLE gHandle = CreateFileA("\\\\.\\DriverFile",
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
...
DeviceIoControl(gHandle, MY_MSG_ID, NULL, 0, &refCount,
sizeof(refCount), &length, NULL);
...
CloseHandle(gHandle);
Есть ли способ узнать, сколько клиентов имеют открытое соединение с файлом драйвера?
Один из способов реализовать это — обработать IRP_MJ_CREATE/IRP_MJ_CLOSE на стороне драйвера и сохранить подсчет рефов вручную; затем использование некоторого сообщения в клиентском коде драйвера может получить счетчик. Есть ли способ сделать это без внесения изменений в драйвер?

Подробнее здесь: https://stackoverflow.com/questions/790 ... on-windows

Вернуться в «C++»