Здраствуйте! У меня маленький вопрос. Помогите, если Вы в силах. Это действительно SOS! У меня есть мой драйвер виртуального COM-порта. В HyperTerminal я устанавливаю соединение с этим COM-портом. Соединение нормально устанавливается. Когда я набираю какой-либо символ на клавиатуре, то вызывается функция DispatchWrite. В DKK(Serial Major I/O Requests) написано, что при вызове этой функции есть два входных параметра - Parameters.Write.Length - количество байт в буфере AssociatedIrp.SystemBuffer - указатель на буфер В Parameters.Write.Length при вызове функции лежит единица, то есть в порт записан 1 байт. Но в AssociatedIrp.SystemBuffer всегда ноль! А по-моему там должен быть адрес буфера. Вопрос - как получить доступ к этому буферу, т.е. узнать что было записано по порту. Есть предположение, что это связано с виртуальной памятью, физической памятью и файлом подкачки. Т.е. AssociatedIrp.SystemBuffer в каком-то другом адресном пространстве. Помогите пожалуйста.
Собственно не занимался COM портом, но по аналогии работы с драйверами Код (Text): assume esi:ptr _IRP ....... .elseif [edi].MajorFunction==IRP_MJ_WRITE .if [esi].MdlAddress != NULL invoke MmGetSystemAddressForMdlSafe, [esi].MdlAddress, NormalPagePriority .if eax != NULL mov p, eax; Здесь и есть буффер mov edx, device_extension .if [edx].pEnCipher!=NULL ........ И ещё должен быть установлен флаг or (DEVICE_OBJECT PTR [eax]).Flags, DO_DIRECT_IO если это буфферезированный обмен, или другой...
SteelRat, огромное, просто титаническое спасибо. Выручил просто по НАСТОЯЩЕМУ!!! С меня пиво! А если не любишь пиво...короче огромное спасибо! Я просто мало в kernel mode варюсь ещё, так что задаю такие вопросы. Спасибо еще раз!
Пиво я люблю... Если посмотреть по форуму, то создатся впечатление, что пиво так и "бродит" ящиками между учасниками Сейчас я тебе помог, потом ты мне поможешь советом... Почитай знаменитого Four-F ! Если ещё не читал, то много потерял...
Bill_Prisoner, а можешь драйвером поделиться? ) Или мб кто подскажет, как сделать глобальное символьное имя устройства, т.е. не писать в приложении "\\\\.\\COM9"?