реклама на сайте
подробности

 
 
> Драйвер USB с помощью Driver Studio - несколько Device Object
Sevens
сообщение Sep 16 2006, 22:07
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 5-08-06
Пользователь №: 19 337



Возник такой вопрос, пишу драйвер для USB устройства с помощью книги Агурова. Требуется несколько Device Object, чтобы читать с разных конечных точек, но не знаю, как это сделать. Пробовал так в методе NTSTATUS DV2::AddDevice(PDEVICE_OBJECT Pdo) класса KDriver создаю два экземпляра объекта KPnpDevice:

DV2Device * pDevice = new (
static_cast<PCWSTR>(KUnitizedName(L"DV2Device", m_Unit)),
FILE_DEVICE_UNKNOWN,
static_cast<PCWSTR>(KUnitizedName(L"DV2Device", m_Unit)),
0,
DO_BUFFERED_IO
)
DV2Device(Pdo, m_Unit,1);

if (pDevice == NULL)
{
return STATUS_INSUFFICIENT_RESOURCES;
}

NTSTATUS status = pDevice->ConstructorStatus();

if ( !NT_SUCCESS(status) )
{
delete pDevice;
}
else
{
m_Unit++;
DbgPrint("Unit Number is %d",m_Unit);
}



DV2Device * pDeviceEP = new (
static_cast<PCWSTR>(KUnitizedName(L"DV2DeviceT", m_UnitEP)),
FILE_DEVICE_UNKNOWN,
static_cast<PCWSTR>(KUnitizedName(L"DV2DeviceT", m_UnitEP)),
0,
DO_BUFFERED_IO
)
CandDV2Device(Pdo, m_UnitEP,2);

if (pDeviceEP == NULL)
{
return STATUS_INSUFFICIENT_RESOURCES;
}

status = pDeviceEP->ConstructorStatus();

if ( !NT_SUCCESS(status) )
{
delete pDeviceEP;
}
else
{
m_UnitEP++;
DbgPrint("Unit EP Number is %d",m_UnitEP);
}

В конструкторе класса kPNPDevice есть строки
status = m_Lower.Initialize(this, Pdo);

if (status == STATUS_SUCCESS){
DbgPrint("m_Lower.Initialize OK");
} else {
DbgPrint("ERROR: m_Lower.Initialize");
}
Для DV2Device все нормально, а для DV2DeviceT - ERROR: m_Lower.Initialize

И ещё, метод OnStartDevice вызывается только для DV2Device, а для DV2DeviceT - т.е. он видимо не инициализируется, так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Седой
сообщение Sep 17 2006, 10:05
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата
Возник такой вопрос, пишу драйвер для USB устройства с помощью книги Агурова. Требуется несколько Device Object, чтобы читать с разных конечных точек, но не знаю, как это сделать.


1. Выкинуть Агурова. Читать DDK и Walter Oney http://club.shelek.com/download.php?id=9
2. Зачем несколько Device Object? Для одного PDO - один FDO.
3. В Driver Studio есть прекрасный Wizard для генерации кода драйвера, пользуйтесь.
4. Посмотрите пример EZUsb - полнофункциональный драйвер для USB чипов Cypress.

PS. Извините за резкость, но прежде чем писать код драйвера, не мешало бы понять - что такое драйвер в Windows.

Сообщение отредактировал Седой - Sep 17 2006, 10:06
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016