Доброй ночи !
Пишу драйвер для работы с USB устройством на базе PHILIPS ISP1583.
Использую:
- Windows XP SP2
- Compuware Driver Studio (3.00)
- DDK XP (2600)
- USB 2.0
Читая данные с устройства посредством BULK - все работает.
Пытаюсь читать данные с устройства через ISOCHRONOUS (соответствующие конечные точки сконфигурированы).
Взял пример из Driver Studio "usbisoch\iread.cpp".
В UsbIsocDevice::StartIsocReads() на функции "BuildIsochronousTransfer"
получаю BSOD. Пожалуйста, подскажите где ошибка. Заранее благодарю.
#define ISOC_NUM_PACKETS_PER_URB 32
#define ISOC_PACKET_SIZE 64
#define ISOC_URB_DATA_SIZE (ISOC_NUM_PACKETS_PER_URB * ISOC_PACKET_SIZE)
...
UCHAR *p = new (NonPagedPool) UCHAR[ISOC_URB_DATA_SIZE];
...
PURB pUrb = m_Iso_Endpoint_IN.BuildIsochronousTransfer(
ISOC_NUM_PACKETS_PER_URB, // # packets
ISOC_PACKET_SIZE, // packet size
TRUE, // bIn
TRUE, // bASAP
USBD_ISO_START_FRAME_RANGE, // Start Frame
p, // pBuffer
ISOC_URB_DATA_SIZE // Length
);