At first, I should explain my HW/SW situation.
To make display adapter working on USB bus, I choose to use PCI graphic
controller chip & PCI-to-USB bridge chip supplied by PLX Technology
(http://www.plxtech.com).
Because I could acquire video display device driver source from graphic
chip vendor, and PCI-to-USB bridging API from PLX(they call it RemotePCI),
I tried to rebuild existing device driver to work on USB bus.
RemotePCI API is based on WDM, and to initialize it properly, I needed both
of functional device object & physical device object.
In most of situation which follows WDM, this can be worked because I can
create device object in AddDevice routine, but in video miniport driver,
things were quite different.
Device creation & other stuffs are hide in generic video port driver, and I
couldn’t find a way to get FDO/PDO in my video miniport driver.
So, I have two ideas for solving this problem.
-
make independent USB class device driver, let it detected by PnP, and
create device object & attach to device stack in AddDevice() routine, and
then load another Display class device driver & do driver-to-driver
communication.
-
make some kind of bus driver which can cooperate with video
port/miniport driver.
But, in case 1), I don’t know how to make compatible between miniport<-
port & display<->port communication with my USB class driver.
And, in case 2), even I can’t figure out this is possible or not.
Well, as Tim mentioned, if there is a way to get FDO/PDO in miniport
driver, it may be easiest solution to me.
Better idea, or how to approach this subject?
-----??? ????-----
??? ???: xxxxx@lists.osr.com [mailto:bounce-279192-
xxxxx@lists.osr.com] ??(??) ??? ??? ??? ???: xxxxx@probo.com
??? ??¥: 2007?? 2?? 26?? ??? ??? 7:06
?? ???: Windows System Software Devs Interest List
???: Tim Roberts
???: Re: [ntdev] Designing video miniport driver using USB
On Sat, Feb 24, 2007 at 07:59:27AM -0500, xxxxx@legend.co.kr wrote:
I’m developing sub display adapter using USB.
Interesting idea. What are actually transmitting? The typical video pixel
stream is WAY more than a USB can handle. Is is a CCIR656 stream, or are
you trying to send the individual commands?
Because I’m quite a newbie in Windows device driver development, I
don’t know every aspect of windows driver architecture.
Well, except for file system drivers, you could not have chosen a more
complicated starting point.
After some study of video device driver, I noticed my video miniport
driver should communicate with kernel via video port driver.
Yes; in fact, it is REQUIRED to do so.
But, most of samples or explanations about this subject, only explain
the case video apapter attached to PCI bus.
After I called VideoPortInitialize() in DriverEntry(), FindAdapter()
function in my miniport driver is called, and AdapterInterfaceType in
VIDEO_PORT_CONFIG_INFO is set to PNPBus.
But from this point, I don’t know what I should do. There is no proper
argument on VideoPortGetBusData() for PNPBus.
Right. You won’t be calling VideoPortGetBusData. Instead, you’ll call
into USBD like any normal USB driver, to fetch your device’s descriptors,
select your configuration, select your interface and alternate setting, and
populate your interface and endpoint structures.
The more interesting question is, how are you going to find out where to
send your URBs? For that, you need the device object of the next lower
driver in the stack. Ordinarily, you’d get that from the call to
IoAttachDeviceToDeviceStack, or from the DEVICE_OBJECT, but you don’t have
access to those. I assume someone here will now how to get this
information for a video miniport.
What should I do for properly configure bus information to communicate
between miniport driver and video port driver?
Well, this part won’t involve the video port very much.
Tim Roberts, xxxxx@probo.com
Providenza & Boeklheide, Inc.
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer