From: George on
Hi All,

This is my first post on this group and will gladly welcome any help on this
matter.

I am writing two KMDF PCI drivers. One is for a IDE controller and the other
one is a PCI-ISA bridge device. Here is my observation after which I would
like to ask my question.


1. After I have loaded the driver, in device manager, I see the "Disable"
option for the IDE controller PCI driver whereas I do NOT see the "Disable"
option for my PCI-ISA bridge PCI driver.
My first question is to why I do not see it in the second
case, because having that option helped me during developement as I can now
dynamically load/unload the driver and test my startup code ( DriverEntry,
EvtDeviceAdd)

2. After I do an "Update Driver " through Device Manager, for the IDE
controller PCI driver, Windows does not ask me for a system restart but when
I do an "Update Driver" for the PCI-ISA bridge driver, it always asks for a
system restart.
My second question, is as to how I can prevent from Windows
asking for a system restart every time I update my driver.

Now the interesting thing here is that for simplicity purposes, both the
drivers as exactly the same in all aspects but for the fact that I changed
the device ID's in the INF file so that the respective drivers are loaded.

The only other difference that i can think of is that the "class code"
inside the PCI configuration space is different for these two PCI devices.
For the IDE controller, the class code indicates a "Mass Storage Controller"
and for the other one, it shows it as a "Bridge Device". Is it possible that
everytime I update the driver for the PCI-ISA bridge, Windows that this
device is of type "Bridge Device" and hence asks me restart the system.

I'll appreciate any help on this topic.

Thanks,
George

From: Maxim S. Shatskih on
> I am writing two KMDF PCI drivers. One is for a IDE controller and the other

KMDF does not support storage devices yet, for instance, it does not have
guaranteed forward progress yet.

For IDE controller driver, I would use SCSIPORT/STORPORT and represent the
controller as SCSI one. Both storage ports play the same framework role as
KMDF.

> 1. After I have loaded the driver, in device manager, I see the "Disable"
> option for the IDE controller PCI driver whereas I do NOT see the "Disable"
> option for my PCI-ISA bridge PCI driver.

Probably the PCI bridges are not stoppable at all, especially pre-Vista.

> I do an "Update Driver" for the PCI-ISA bridge driver, it always asks for a
> system restart.

This is a logical consequence of 1. Reboot is usually wanted on driver update
if the OS could not stop the existing driver.

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim(a)storagecraft.com
http://www.storagecraft.com

From: George on
Thanks for such a prompt reply.

Is there a way, I can fool Windows into thinking that the PCI device in
question is not a PCI-ISA bridge, so that I don't have to keep rebooting the
system everytime I make a small change in my driver.

The only way I know of making Windows think its not a PCI-ISA bridge is to
change class code inside the PCI configuration register to represent some
other device.

Thanks,
George

"Maxim S. Shatskih" wrote:

> > I am writing two KMDF PCI drivers. One is for a IDE controller and the other
>
> KMDF does not support storage devices yet, for instance, it does not have
> guaranteed forward progress yet.
>
> For IDE controller driver, I would use SCSIPORT/STORPORT and represent the
> controller as SCSI one. Both storage ports play the same framework role as
> KMDF.
>
> > 1. After I have loaded the driver, in device manager, I see the "Disable"
> > option for the IDE controller PCI driver whereas I do NOT see the "Disable"
> > option for my PCI-ISA bridge PCI driver.
>
> Probably the PCI bridges are not stoppable at all, especially pre-Vista.
>
> > I do an "Update Driver" for the PCI-ISA bridge driver, it always asks for a
> > system restart.
>
> This is a logical consequence of 1. Reboot is usually wanted on driver update
> if the OS could not stop the existing driver.
>
> --
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> maxim(a)storagecraft.com
> http://www.storagecraft.com
>
>
From: Don Burn on

"George" <George(a)discussions.microsoft.com> wrote in message
news:09E29FBE-BF21-4796-99C2-EC03D40CA0B1(a)microsoft.com...
> Thanks for such a prompt reply.
>
> Is there a way, I can fool Windows into thinking that the PCI device in
> question is not a PCI-ISA bridge, so that I don't have to keep rebooting
> the
> system everytime I make a small change in my driver.
>
> The only way I know of making Windows think its not a PCI-ISA bridge is to
> change class code inside the PCI configuration register to represent some
> other device.
>
It is not the fact that it is a bridge it is the fact that by definition a
bridge has related devices. Since there are drivers depending on the bridge
driver this is causing the reboot requirement. The only way to replace the
driver without the reboot is to shutdown all the references to the driver.


--
Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply



From: Kalle Olavi Niemitalo on
"Maxim S. Shatskih" <maxim(a)storagecraft.com> writes:

> KMDF does not support storage devices yet, for instance, it
> does not have guaranteed forward progress yet.

In Windows, is guaranteed forward progress more important for
storage drivers than for other drivers? Why is that?