Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Рабочий кусок кода... Если поможет - на здоровье...
Отправлено
ETM
15 июля 2009, г. 17:48
В ответ на:
Перехват в KernellDriver DispatchRead??????????
отправлено пользователем
Бомж
15 июля 2009, г. 16:57
NTSTATUS DeviceReadIRP_Handler(IN PDEVICE_OBJECT pDeviceObject,IN PIRP pIrp)
{
PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)pDeviceObject->DeviceExtension;
PIO_STACK_LOCATION pIrpStack = IoGetCurrentIrpStackLocation(pIrp);
NTSTATUS ntStatus=STATUS_SUCCESS;
ULONG xSize=0;
ULONG lenRx=0;
PUCHAR userBuffer;
//KDPRINT(("DeviceReadIRP_Handler is doing...\n"));
if(pDevExt->pRx==NULL) {
ntStatus= STATUS_INVALID_READ_MODE;
goto End;
}
//Переносим данные клиента в рабочий буффер
xSize=pIrpStack->Parameters.Read.Length;
if(xSize>0){
userBuffer=pIrp->AssociatedIrp.SystemBuffer;
lenRx=0;
while((pDevExt->pRx->ptrIn!=pDevExt->pRx->ptrOut) && (lenRx<xSize)){
pDevExt->pRx->ptrOut++; if(pDevExt->pRx->ptrOut>=MAX_SIZE_BUFF)pDevExt->pRx->ptrOut=0;
userBuffer[lenRx++]=pDevExt->pRx->dataBuff[pDevExt->pRx->ptrOut];
}
}
xSize=lenRx;
End:
//returning the given IRP to the I/O Manager...............
pIrp->IoStatus.Status=ntStatus;
pIrp->IoStatus.Information=xSize;
IoCompleteRequest(pIrp,IO_NO_INCREMENT);
//KDPRINT(("DeviceReadIRP_Handler: %d bytes transferred.\n",xSize));
return STATUS_SUCCESS ;
}
Составить ответ
|
Вернуться на конференцию.
Ответы
В вопросе "проблемма", в ответе - "буффер". Баланс, однако.
-
Леонид Иванович
(15.07.2009, 18:29:32
87.252.227.56
,
пустое
)
Ну, дык, учился русскому по учебнику "Смирнофф №21"... ;)
-
ETM
(15.07.2009, 19:10:55
94.79.44.1
,
пустое
)
:)))
-
Леонид Иванович
(16.07.2009, 02:57:29
87.252.227.56
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 2 на три:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru