Программирование драйверов Перепрограммировать I8259A: драйвер клавиатурыДоброе время суток, пишу драйвер клавиатуры, во время работы следующего кода при первом нажатии клавиши вызывается _irq1_handler, при следующих нажатиях, прерывание игнорируется и обработчик не вызывается
use32
global _start
extern kernel_main
IRQ0_VECTOR equ 0x20
IRQ1_VECTOR equ IRQ0_VECTOR + 1
IRQ8_VECTOR equ 0x28
section .text
_start:https://www.cyberforum.ru/ drivers-programming/ thread1504128.html
Драйвер не выводит DbgPrint Программирование драйверов Драйвер самый обычный:
driver_template.cpp
#include "StdAfx.h"
#include "drv_common.h"
PDRIVER_OBJECT DriverObject;
NTSTATUS DriverEntry(IN PDRIVER_OBJECT driverObject, IN PUNICODE_STRING RegistryPath)
{
DbgPrint("Hello world!\n");
Программирование драйверов Написание драйвера для мобильного модемаhttps://www.cyberforum.ru/ drivers-programming/ thread1499115.html Уважаемые форумчане, кто занимался написанием драйверов для 3g либо 4g usb модема? Можете подсказать, к каким данным мы имеем доступ, то есть конкретно интересует возможность вывести в систему данные о сети (Cell ID, LAC, C1, C2, CRO)? Насколько я знаю, мобильный телефон на основе параметра вышки C2 решает переключиться ли ему к другой базовой станции. Возможно ли получить подобные данные от...
Программирование драйверов Перехват любой графической операции в Windowshttps://www.cyberforum.ru/ drivers-programming/ thread1498155.html Как бы поймать в ring0 любую графический вывод. НАПРИМЕР ВЫВОД ТЕКСТА GDIPLUS не вызывает не DrvBitBlt, не (конечно) DrvTextOut. Даже mirror драйвера не видят этой операции (по крайней мере DDK example и DF Mirage Mirror Driver). Но как-то она его выводит, понятно что можно индивидуально подойти к каждой операции и перехватить все ф-ции. Но нет ли универсального способа, т.е. такая ф-ция которую...
Программирование драйверов Книга "Использование Microsoft WDM"https://www.cyberforum.ru/ drivers-programming/ thread1495151.html Нашел у себя вышеупомянутую книгу авторства Уолтера Они, решил освоить программирование драйверов. Но год издательства 2007, и там разбирается ХР, хотя скоро выйдет полноценная десятка.
Серьезны ли различия между программированием на ХР и сегодняшних версиях Окон?
Программирование драйверов Подпись драйвера Коллеги, приветствую!
Подскажите (кто имеет опыт), как официально подписать драйвер в MS?
Куда заливать исходники или сам драйвер, что для этого надо и т.п.
Спасибо!
Программирование драйверов Планировщик процессов windows 7Пытаюсь написать что-то вроде антируткита, для windows 7. Пришел к тому, что нужно манипулировать со структурами планировщика. Читал на wasm'e статью ,как это делалось для XP. Собственно все сработало, правда пришлось допиливать, Теперь хотелось бы уметь тоже самое под windows 7. Собственно может кто-нибудь с этим помочь? Если есть какие-либо ссылки на эту тему, либо уже готовые решения, либо...https://www.cyberforum.ru/ drivers-programming/ thread1492316.html
Программирование драйверов IoWriteErrorLogEntry пишет только ERROR сообщения в EventLog Windows?https://www.cyberforum.ru/ drivers-programming/ thread1490427.html Коллеги, приветствую!
У меня два вопроса:
1. IoWriteErrorLogEntry пишет только сообщения с Event Type - ERROR?
Или есть возможность писать просто информативные сообщения? в UM можно юзать ReportEvent, которая позволяет писать любого типа мессаги.
2. Как можно программно в Kernel Mode, создать свою ветку в EventLog? Не очень юзабилити для админов юзать запись в события Windows.
...
USB device на хосте Программирование драйверов Здравствуйте! Есть встраиваемое устройство с USB контроллером, который может работать как host и как клиентское устройство, на нем стоит windows, задача написать драйвер так, чтобы устройство работало как клиентское устройство USB и было видно при подключении как диск. Где можно посмотреть/подсмотреть USB интерфейс для такого драйвера?
Программирование драйверов Драйвер для отслеживания обращения к папкамhttps://www.cyberforum.ru/ drivers-programming/ thread1487853.html Добрый вечер, форумчане! Мне нужно написать драйвер для отслеживания обращения к 2 папкам. Сам драйвер должен выполнять функцию блокировки - не давать доступ к папке и запрещать добавлять в эту папку другие папки и файлы, пока пользователь не закроет программу. Не з
//----------------------------------------------------------------------------// функция декодировки информационных пакетов// в случае ошибки truebool DecodeInfoPack(void){// если стартовые байты ошибочныif( CheckStartByte())return(ret_err);// проверка посылки, попадает ли она в разряд информационных// если нет выходif((USBPackBuff[0x4]== TypeInitializat)||(USBPackBuff[0x4]== TypeLoadSetting)){
DecodeBuff.type= USBPackBuff[0x4];
DecodeBuff.regim= USBPackBuff[0x5];
DecodeBuff.sec= DeCodeByte(USBPackBuff[0x6]);
DecodeBuff.min= DeCodeByte(USBPackBuff[0x7]);
DecodeBuff.hour= DeCodeByte(USBPackBuff[0x8]);
DecodeBuff.dey= DeCodeByte(USBPackBuff[0x9]);
DecodeBuff.month= DeCodeByte(USBPackBuff[0xA]);
DecodeBuff.year= DeCodeByte(USBPackBuff[0xB]);
DecodeBuff.strlo= USBPackBuff[0x12];
DecodeBuff.strhi= USBPackBuff[0x13];
DecodeBuff.duration=((float)(USBPackBuff[0xF]))/100;
DecodeBuff.period=((float)(USBPackBuff[0x0D]+256* USBPackBuff[0x0E]))/100;
DecodeBuff.volt=((float)USBPackBuff[0x0C]* UMult)/UDiv;switch(USBPackBuff[0x11]){case0x01:{
DecodeBuff.polar=" + ";break;}case0x02:{
DecodeBuff.polar=" - ";break;}case0x31:{
DecodeBuff.polar="+/-";break;}default:{
DecodeBuff.polar="???";}}if( USBPackBuff[0x10]==0){
DecodeBuff.numpack="неограниченно";}else{
DecodeBuff.numpack= IntToStr(USBPackBuff[0x10]);}}else{return(ret_err);// пакет не информационный}return(ret_ok);// декодирование произведено успешно}//----------------------------------------------------------------------------// функция синхронной записи в USB порт// если все в порядке возвращает ret_ok (false)bool USBWrite(void){int ftByteReal =0;// число реально переданных байтif( ftHandISF !=NULL)// если порт открыт{// инициализация посылка запросif( FT_W32_WriteFile(ftHandISF,USBPackBuff,
SizePack,&DWORD(ftByteReal),NULL)){if( SizePack != ftByteReal )// ошибка по таймауту{
AnsiString ftErrMess ="Ошибка передачи данных.";
Application->MessageBox(ftErrMess.c_str(),MBCapErr.c_str(),MB_OK +
MB_ICONERROR);// закрытие USB
USBClose();// выходимreturn(ret_err);}}else// ошибка операции записи в порт{
AnsiString ftErrMess ="Ошибка передачи данных.";
Application->MessageBox(ftErrMess.c_str(),MBCapErr.c_str(),MB_OK +
MB_ICONERROR);// закрытие USB
USBClose();// выходимreturn(ret_err);}}else// если USB порт не открыт{
AnsiString ftErrMess ="USB порт не открыт.";
Application->MessageBox(ftErrMess.c_str(),MBCapErr.c_str(),MB_OK +
MB_ICONERROR);// выходимreturn(ret_err);}// передача состояласьreturn(ret_ok);}//----------------------------------------------------------------------------// открытие и настройка порта для асинхронного режима// те Open a device for overlapped I/Obool USBOpenASinhro(void){
FT_STATUS ftStat;
FTDCB ftDCB;// структура настроек USB порта// закрытие USB порта если он открытif( ftHandISF !=NULL){if( USBClose())// если ошибка закрытия порта{return(ret_err);}}// откраваем устройство с выбранным серийным номером// для асинхронного режима, по серийному номеру
ftHandISF =
FT_W32_CreateFile(USBSerNumb.c_str(),GENERIC_READ|GENERIC_WRITE,
0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|
FILE_FLAG_OVERLAPPED|FT_OPEN_BY_SERIAL_NUMBER,0);// в случае ошибки открытия портаif( ftHandISF == INVALID_HANDLE_VALUE ){
AnsiString ftErrMess ="USB порт не открывается.";
Application->MessageBox(ftErrMess.c_str(),MBCapErr.c_str(),MB_OK +
MB_ICONERROR);
ftHandISF =NULL;// выход по ошибкеreturn(ret_err);}// чтение текущих настроекif(!(FT_W32_GetCommState(ftHandISF,&ftDCB)))// в случае ошибки{// закрытие USB
USBClose();// сообщение об ошибке
AnsiString ftErrMess ="Ошибка чтения USB настроек";
Application->MessageBox(ftErrMess.c_str(),MBCapErr.c_str(),MB_OK +
MB_ICONERROR);// выход по ошибкеreturn(ret_err);}// редактирование настроек под прибор ISF
ftDCB.BaudRate= USBSpeed;// скорость передачи данных
ftDCB.StopBits= FT_STOP_BITS_1;// один стоповый бит
ftDCB.ByteSize= FT_BITS_8;// число битов данных
ftDCB.fParity=false;// проверки четности нет
ftDCB.Parity= FT_PARITY_NONE;// тип проверки четн. нет// запись новых настроек в портif(!(FT_W32_SetCommState(ftHandISF,&ftDCB)))// в случае ошибки{// закрытие USB
USBClose();// сообщение об ошибке
AnsiString ftErrMess ="Ошибка записи USB настроек";
Application->MessageBox(ftErrMess.c_str(),MBCapErr.c_str(),MB_OK +
MB_ICONERROR);// выход по ошибкеreturn(ret_err);}//--------------------------------------------------// очистка буфера приема передачи USB портаif(!(FT_W32_PurgeComm(ftHandISF,PURGE_TXCLEAR|PURGE_RXCLEAR|
PURGE_TXABORT|PURGE_RXABORT))){// в случае ошибки// закрытие USB
USBClose();// сообщение об ошибке
AnsiString ftErrMess ="Ошибка очистки буфера USB порта";
Application->MessageBox(ftErrMess.c_str(),MBCapErr.c_str(),MB_OK +
MB_ICONERROR);// выход по ошибкеreturn(ret_err);}// выход в случае полного успеха открытия USB портаreturn(ret_ok);}