Getting the NIC binding in Bus Driver

I am trying to get the NIC binding information into the Bus Driver when a new one occurs in the NDIS stack. I followed the steps described below: I took the sample given in the DDK,for the Bus driver to try it out.

  1. Write root enumerated virtual bus driver, something with at least the following entry points populated in the driver entry like the sample shows from DDK:
    DriverObject->MajorFunction [IRP_MJ_PNP] = Bus_PnP;
    DriverObject->MajorFunction [IRP_MJ_POWER] = Bus_Power;
    DriverObject->DriverExtension->AddDevice = Bus_AddDevice;

  2. Eventually Bus_AddDevice would be called to create the PDO for this, and would be started as indicated in Bus_pnp() for the FDO -> IRP_MN_START_DEVICE

Here when this PDO is started, register with the NDIS Protocol as
NdisRegisterProtocol(&status, &Globals.NdisProtocolHandle, &ProtocolCharacteristics, sizeof(NDIS_PROTOCOL_CHARACTERISTICS)); this has the parameters as something like:
ProtocolCharacteristics.MajorNdisVersion = 5;
ProtocolCharacteristics.MinorNdisVersion = 1;
ProtocolCharacteristics.ResetCompleteHandler = NDISProtocolResetComplete;
ProtocolCharacteristics.RequestCompleteHandler = NDISProtocolOidRequestComplete;
ProtocolCharacteristics.StatusHandler = NDISProtocolStatus;
ProtocolCharacteristics.StatusCompleteHandler = NDISProtocolStatusComplete;
ProtocolCharacteristics.OpenAdapterCompleteHandler = NDISProtocolOpenAdapterCompleteEx;
ProtocolCharacteristics.CloseAdapterCompleteHandler = NDISProtocolCloseAdapterCompleteEx;
ProtocolCharacteristics.UnloadHandler = NDISProtocolUninstall;;
ProtocolCharacteristics.BindAdapterHandler = NDISProtocolBindAdapter;
ProtocolCharacteristics.UnbindAdapterHandler = NDISProtocolUnbindAdapter;
ProtocolCharacteristics.SendCompleteHandler = NDISProtocolSendComplete;
ProtocolCharacteristics.ReceiveHandler = NDISProtocolReceive;
ProtocolCharacteristics.ReceivePacketHandler = NDISProtocolReceivePacket;
ProtocolCharacteristics.ReceiveCompleteHandler = NDISProtocolReceiveComplete;
ProtocolCharacteristics.TransferDataCompleteHandler = NDISProtocolTransferDataComplete;
ProtocolCharacteristics.PnPEventHandler = NDISProtocolPnPEvent;

Here the name should be the name of the Root Enumerated Virtual Bus Driver, say BusEnum ?? <– confirm me this please?
ProtocolCharacteristics.Name = NDIS_STRING_CONST(“BusEnum”);

The code would be returining for IRP_MN_START_DEVICE here.

  1. After this, should I expect NDISProtocolBindAdapter to be called inside the virtual bus driver where I can create the CHILD PDO which I needed.

Is this the right sequence I am following, I tried upto here and I don’t see the NDISProtocolBindAdapter call from the NDIS, though it calls the NDISProtocolPnPEvent with NetEventBindsComplete. I need help here.

If someone has a smple, that would be of great help.

Tarun

Please note that WDM and NDIS protocol interfaces have nothing to do with one another - although your driver may implement them both on its respectively upper and lower edges, it has to abide by the rules of 2 totally different contracts and have different INF files (please note that the former one must be installed by Device Manager and the later one by InetCfg). Normally you register a protocol right in DriverEntry() and not upon receiving PnP IRPs. What you do here is creating *identical* protocols drivers that have the same handlers. What is the point???

Here the name should be the name of the Root Enumerated Virtual Bus Driver

The name should be the one that you have specified in INF file for a protocol…

should I expect NDISProtocolBindAdapter to be called inside the virtual bus driver where I

ProtocolBindAdapter() gets invoked by NDIS for all bindings that are specified in the registry. As I told you already, you have to install your protocol by InetCfg *for each adapter* you want your protocol to be bound to. Another option (legacy one) is to do it without INF file and call NdisOpenAdapter() right after registering a protocol for each adapter you want to bind to ( in this case ProtocolBindAdapter() will never get invoked - you need an INF file if you want to bind to underlying miniport in ProtocolBindAdapter())

Actually, to be honest, I don’t understand what you are trying to do here. What is the point of making your driver act upon two totally unrelated contracts???

Anton Bassov

> Is this the right sequence I am following, I tried upto here and I don’t see
the

NDISProtocolBindAdapter call from the NDIS

What about the INF/registry setup of your driver? protocols do require this.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

I was loading it as the bus driver, do I load it as the protocol driver and have the inf being used. I don’t know how I can associate the bus driver inf with the protocol driver.

-Tarun

----- Original Message ----
From: Maxim S. Shatskih
To: Windows System Software Devs Interest List
Sent: Thursday, April 3, 2008 11:50:38 AM
Subject: Re:[ntdev] Getting the NIC binding in Bus Driver

> Is this the right sequence I am following, I tried upto here and I don’t see
the
>NDISProtocolBindAdapter call from the NDIS

What about the INF/registry setup of your driver? protocols do require this.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

> I don’t know how I can associate the bus driver inf with the protocol driver.

You can’t - as I told you already, these are 2 totally different contracts , so that you need two separate INF files. that even have to be installed differently The only thing that keeps them in common is your driver’ s service description entry in a registry that they share. NDIS has no idea about your driver’s role as a bus driver, and PnP has no idea about its role as a protocol one…

Anton Bassov

Tarun,

Actually, I want to create a child PDO and load my driver on it, whenever new selected NIC binding >occurs. I want to handle the pnp for the child PDO in my driver itself like when binding disapper
I wouldbe deleting the child PDO etc. by notifying the Iomanager etc.

So basically I want to write a driver that will let me know that a new binding is available and I will create > a child PDO which I need to load another driver which will be using the NDIS
stack to send and recieve some LAN packets.

If I got it right, you want your PDO to represent a binding between your protocol and a particular adapter, right? In such case you took completely wrong approach in your code - you do NDIS-related stuff in response to PnP requests that are sent to your driver. Instead, you should do thing the other way around. What you have to do is to inform PnP Manager about “device detection” in ProtocolBindAdapter() after having called NdisOpenAdapter(), so that it will sent IRP_MN_QUERY_DEVICE_RELATIONS to your driver…

Anton Bassov

Hi Anton,

Thanks, your information is of great help.I tried the model of using the upper edge as the bus driver and lower edge as the protocol driver for the same driver binary but with different inf files as you suggested. It seems to work fine and I am able to create a child PDO on a new NIC binding, but I am running into a problem when I try to delete the child PDO using the IoEjectDevice(pdo) in the context of NIC unbindAdapter call by the NDIS, and wait there for the PDO to be deleted. I don’t see IO manager issuing any pnp quiries to make this happen, and system hangs, and unbind never completes, because driver waits for the PDO to be deleted. I don’t understand why? What I am missing here.

-Tarun

----- Original Message ----
From: “xxxxx@hotmail.com
To: Windows System Software Devs Interest List
Sent: Thursday, April 3, 2008 3:47:45 PM
Subject: RE:[ntdev] Getting the NIC binding in Bus Driver

Tarun,

> Actually, I want to create a child PDO and load my driver on it, whenever new selected NIC binding >occurs. I want to handle the pnp for the child PDO in my driver itself like when binding disapper
> I wouldbe deleting the child PDO etc. by notifying the Iomanager etc.

> So basically I want to write a driver that will let me know that a new binding is available and I will create > a child PDO which I need to load another driver which will be using the NDIS
> stack to send and recieve some LAN packets.

If I got it right, you want your PDO to represent a binding between your protocol and a particular adapter, right? In such case you took completely wrong approach in your code - you do NDIS-related stuff in response to PnP requests that are sent to your driver. Instead, you should do thing the other way around. What you have to do is to inform PnP Manager about “device detection” in ProtocolBindAdapter() after having called NdisOpenAdapter(), so that it will sent IRP_MN_QUERY_DEVICE_RELATIONS to your driver…

Anton Bassov


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

>to delete the child PDO using the IoEjectDevice(pdo) in the context of NIC

unbindAdapter call by the NDIS, and wait there for the PDO to be deleted.

Have you tried to mark the PDO as “dead” using your own flag, then call
IoInvalidateDeviceRelations, and then do not return the “dead” PDO in
relations?

This is the normal way of deleting the PDO in the bus driver.

Another way is IoInvalidateDeviceState with the proper response “I want to die”
to the MN_QUERY_DEVICE_STATE IRP.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

IoInvalidateDeviceState + returning that the devices is failed/removed in the query irp also requires async behavior (IRP_MN_QUERY_DEVICE_STATE is state changing) and does not allow him to resurrect/restart the PDO when the binding is readded.

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Maxim S. Shatskih
Sent: Saturday, April 05, 2008 4:58 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Getting the NIC binding in Bus Driver

to delete the child PDO using the IoEjectDevice(pdo) in the context of NIC
unbindAdapter call by the NDIS, and wait there for the PDO to be deleted.

Have you tried to mark the PDO as “dead” using your own flag, then call
IoInvalidateDeviceRelations, and then do not return the “dead” PDO in
relations?

This is the normal way of deleting the PDO in the bus driver.

Another way is IoInvalidateDeviceState with the proper response “I want to die”
to the MN_QUERY_DEVICE_STATE IRP.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

All this works, but I am just stuck when someone disables the NIC, the CHILD PDO which was created on this NIC doesn’t get a chance to send the packets on the Network Stack because NIC unbind was almost half way done. I am looking a way to know advance about NIC unbind, so that I can stop my child PDO and tell the NDIS stack to go ahead and start the NIC Unbind one child PDO deletion completes. You said in one of the last email that this requires a work in the kernel. So probably we need to contact Microsoft. I don’t know how MS iSCSI driver works, because it is also sitting on top of the NIC.

-Tarun

----- Original Message ----
From: Doron Holan
To: Windows System Software Devs Interest List
Sent: Saturday, April 5, 2008 10:03:27 PM
Subject: RE: Re:[ntdev] Getting the NIC binding in Bus Driver

IoInvalidateDeviceState + returning that the devices is failed/removed in the query irp also requires async behavior (IRP_MN_QUERY_DEVICE_STATE is state changing) and does not allow him to resurrect/restart the PDO when the binding is readded.

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Maxim S. Shatskih
Sent: Saturday, April 05, 2008 4:58 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Getting the NIC binding in Bus Driver

>to delete the child PDO using the IoEjectDevice(pdo) in the context of NIC
>unbindAdapter call by the NDIS, and wait there for the PDO to be deleted.

Have you tried to mark the PDO as “dead” using your own flag, then call
IoInvalidateDeviceRelations, and then do not return the “dead” PDO in
relations?

This is the normal way of deleting the PDO in the bus driver.

Another way is IoInvalidateDeviceState with the proper response “I want to die”
to the MN_QUERY_DEVICE_STATE IRP.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

If you are considering asking for a kernel change, I highly doubt you will get it. This is a fundamental behavior that will not change. The iSCSI driver uses TDI to talk to the NIC, so I do not think it is going the same route you are.

d

-----Original Message-----
From: Tarun Singh [mailto:xxxxx@yahoo.com]
Sent: Sunday, April 06, 2008 4:34 AM
To: Windows System Software Devs Interest List
Cc: Doron Holan
Subject: Re: Re:[ntdev] Getting the NIC binding in Bus Driver

All this works, but I am just stuck when someone disables the NIC, the CHILD PDO which was created on this NIC doesn’t get a chance to send the packets on the Network Stack because NIC unbind was almost half way done. I am looking a way to know advance about NIC unbind, so that I can stop my child PDO and tell the NDIS stack to go ahead and start the NIC Unbind one child PDO deletion completes. You said in one of the last email that this requires a work in the kernel. So probably we need to contact Microsoft. I don’t know how MS iSCSI driver works, because it is also sitting on top of the NIC.

-Tarun

----- Original Message ----
From: Doron Holan
To: Windows System Software Devs Interest List
Sent: Saturday, April 5, 2008 10:03:27 PM
Subject: RE: Re:[ntdev] Getting the NIC binding in Bus Driver

IoInvalidateDeviceState + returning that the devices is failed/removed in the query irp also requires async behavior (IRP_MN_QUERY_DEVICE_STATE is state changing) and does not allow him to resurrect/restart the PDO when the binding is readded.

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Maxim S. Shatskih
Sent: Saturday, April 05, 2008 4:58 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Getting the NIC binding in Bus Driver

>to delete the child PDO using the IoEjectDevice(pdo) in the context of NIC
>unbindAdapter call by the NDIS, and wait there for the PDO to be deleted.

Have you tried to mark the PDO as “dead” using your own flag, then call
IoInvalidateDeviceRelations, and then do not return the “dead” PDO in
relations?

This is the normal way of deleting the PDO in the bus driver.

Another way is IoInvalidateDeviceState with the proper response “I want to die”
to the MN_QUERY_DEVICE_STATE IRP.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Hi:

I used the KMDF version of the dynamic bus version to
create the child PDO when driver notices a new NIC
Binding, I loaded the virtual storage miniport driver
on this newly created child PDO, which works fine, but
I am seeing a problem of system hang during system
shutdown and hibernation. The system keep displaying
the following line,

During shutdown it keeps displaying:
Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
(89ff0c90) SetPower-Shutdown status 0

During hibernation it keeps displaying:
Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
(89cc6cd8) SetPower-Hibernate status 0

Is this is a known issue? If you have a fix, where I
can get it from. I am using the W2K3 SP2 with web
updates for the virtual storport available.

-Tarun

— Doron Holan wrote:

> If you are considering asking for a kernel change, I
> highly doubt you will get it. This is a fundamental
> behavior that will not change. The iSCSI driver
> uses TDI to talk to the NIC, so I do not think it is
> going the same route you are.
>
> d
>
> -----Original Message-----
> From: Tarun Singh [mailto:xxxxx@yahoo.com]
> Sent: Sunday, April 06, 2008 4:34 AM
> To: Windows System Software Devs Interest List
> Cc: Doron Holan
> Subject: Re: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> All this works, but I am just stuck when someone
> disables the NIC, the CHILD PDO which was created on
> this NIC doesn’t get a chance to send the packets on
> the Network Stack because NIC unbind was almost half
> way done. I am looking a way to know advance about
> NIC unbind, so that I can stop my child PDO and tell
> the NDIS stack to go ahead and start the NIC Unbind
> one child PDO deletion completes. You said in one of
> the last email that this requires a work in the
> kernel. So probably we need to contact Microsoft. I
> don’t know how MS iSCSI driver works, because it is
> also sitting on top of the NIC.
>
> -Tarun
>
> ----- Original Message ----
> From: Doron Holan
> To: Windows System Software Devs Interest List
>
> Sent: Saturday, April 5, 2008 10:03:27 PM
> Subject: RE: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> IoInvalidateDeviceState + returning that the devices
> is failed/removed in the query irp also requires
> async behavior (IRP_MN_QUERY_DEVICE_STATE is state
> changing) and does not allow him to
> resurrect/restart the PDO when the binding is
> readded.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf
> Of Maxim S. Shatskih
> Sent: Saturday, April 05, 2008 4:58 AM
> To: Windows System Software Devs Interest List
> Subject: Re:[ntdev] Getting the NIC binding in Bus
> Driver
>
> >to delete the child PDO using the
> IoEjectDevice(pdo) in the context of NIC
> >unbindAdapter call by the NDIS, and wait there for
> the PDO to be deleted.
>
> Have you tried to mark the PDO as “dead” using your
> own flag, then call
> IoInvalidateDeviceRelations, and then do not return
> the “dead” PDO in
> relations?
>
> This is the normal way of deleting the PDO in the
> bus driver.
>
> Another way is IoInvalidateDeviceState with the
> proper response “I want to die”
> to the MN_QUERY_DEVICE_STATE IRP.
>
> –
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Is \Driver\ifcoevm your driver? What is \Device\RaidPort0? A PDO or FDO? What is the output of !irp ff for each of the irps listed (e.g. !irp 89ff0c90 ff)

d
-----Original Message-----
From: Tarun Singh [mailto:xxxxx@yahoo.com]
Sent: Monday, April 07, 2008 12:20 PM
To: Windows System Software Devs Interest List
Cc: Doron Holan
Subject: Re:[ntdev] Getting the NIC binding in Bus Driver

Hi:

I used the KMDF version of the dynamic bus version to
create the child PDO when driver notices a new NIC
Binding, I loaded the virtual storage miniport driver
on this newly created child PDO, which works fine, but
I am seeing a problem of system hang during system
shutdown and hibernation. The system keep displaying
the following line,

During shutdown it keeps displaying:
Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
(89ff0c90) SetPower-Shutdown status 0

During hibernation it keeps displaying:
Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
(89cc6cd8) SetPower-Hibernate status 0

Is this is a known issue? If you have a fix, where I
can get it from. I am using the W2K3 SP2 with web
updates for the virtual storport available.

-Tarun

— Doron Holan wrote:

> If you are considering asking for a kernel change, I
> highly doubt you will get it. This is a fundamental
> behavior that will not change. The iSCSI driver
> uses TDI to talk to the NIC, so I do not think it is
> going the same route you are.
>
> d
>
> -----Original Message-----
> From: Tarun Singh [mailto:xxxxx@yahoo.com]
> Sent: Sunday, April 06, 2008 4:34 AM
> To: Windows System Software Devs Interest List
> Cc: Doron Holan
> Subject: Re: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> All this works, but I am just stuck when someone
> disables the NIC, the CHILD PDO which was created on
> this NIC doesn’t get a chance to send the packets on
> the Network Stack because NIC unbind was almost half
> way done. I am looking a way to know advance about
> NIC unbind, so that I can stop my child PDO and tell
> the NDIS stack to go ahead and start the NIC Unbind
> one child PDO deletion completes. You said in one of
> the last email that this requires a work in the
> kernel. So probably we need to contact Microsoft. I
> don’t know how MS iSCSI driver works, because it is
> also sitting on top of the NIC.
>
> -Tarun
>
> ----- Original Message ----
> From: Doron Holan
> To: Windows System Software Devs Interest List
>
> Sent: Saturday, April 5, 2008 10:03:27 PM
> Subject: RE: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> IoInvalidateDeviceState + returning that the devices
> is failed/removed in the query irp also requires
> async behavior (IRP_MN_QUERY_DEVICE_STATE is state
> changing) and does not allow him to
> resurrect/restart the PDO when the binding is
> readded.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf
> Of Maxim S. Shatskih
> Sent: Saturday, April 05, 2008 4:58 AM
> To: Windows System Software Devs Interest List
> Subject: Re:[ntdev] Getting the NIC binding in Bus
> Driver
>
> >to delete the child PDO using the
> IoEjectDevice(pdo) in the context of NIC
> >unbindAdapter call by the NDIS, and wait there for
> the PDO to be deleted.
>
> Have you tried to mark the PDO as “dead” using your
> own flag, then call
> IoInvalidateDeviceRelations, and then do not return
> the “dead” PDO in
> relations?
>
> This is the normal way of deleting the PDO in the
> bus driver.
>
> Another way is IoInvalidateDeviceState with the
> proper response “I want to die”
> to the MN_QUERY_DEVICE_STATE IRP.
>
> –
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Yeah \Driver\ifcoevm is my driver for a PDO created by
the bus driver. And \Device\RaidPort is system
created, I think sortport owns it.

This time I did hibernation, I have one instance of my
driver loaded in the system, so only IRP is pending,
Here is the dump:

0: kd> !irp 0x8a114200 ff
Irp is active with 2 stacks 2 is current (=
0x8a114294)
No Mdl: No System Buffer: Thread 00000000: Irp stack
trace.
Flags = 00000000
ThreadListEntry.Flink = 8a114210
ThreadListEntry.Blink = 8a114210
IoStatus.Status = 00000000
IoStatus.Information = 00000000
RequestorMode = 00000000
Cancel = 00
CancelIrql = 0
ApcEnvironment = 00
UserIosb = 00000000
UserEvent = 00000000
Overlay.AsynchronousParameters.UserApcRoutine =
00000000
Overlay.AsynchronousParameters.UserApcContext =
00000000
Overlay.AllocationSize = 00000000 - 00000000
CancelRoutine = 00000000
UserBuffer = 00000000
&Tail.Overlay.DeviceQueueEntry = 8a114240
Tail.Overlay.Thread = 00000000
Tail.Overlay.AuxiliaryBuffer = 00000000
Tail.Overlay.ListEntry.Flink = 00000000
Tail.Overlay.ListEntry.Blink = 00000000
Tail.Overlay.CurrentStackLocation = 8a114294
Tail.Overlay.OriginalFileObject = 00000000
Tail.Apc = 00000000
Tail.CompletionKey = 00000000
cmd flg cl Device File Completion-Context
[16, 0] 0 0 8a08fe58 00000000 ba634752-00000000

\Driver\IFCoEProt
storport!RaidAdapterSetSystemPowerCompletion
Args: 00000000 00000000 00000000 00000003

[16, 2] 0 e0 8a0d6620 00000000 809b0e62-84838a10
Success Error Cancel
\Driver\ifcoevm nt!PopCompleteSystemPowerIrp
Args: 00000000 00000000 00000005 00000003

-Tarun
— Doron Holan wrote:

> Is \Driver\ifcoevm your driver? What is
> \Device\RaidPort0? A PDO or FDO? What is the
> output of !irp ff for each of the irps listed
> (e.g. !irp 89ff0c90 ff)
>
> d
> -----Original Message-----
> From: Tarun Singh [mailto:xxxxx@yahoo.com]
> Sent: Monday, April 07, 2008 12:20 PM
> To: Windows System Software Devs Interest List
> Cc: Doron Holan
> Subject: Re:[ntdev] Getting the NIC binding in Bus
> Driver
>
> Hi:
>
> I used the KMDF version of the dynamic bus version
> to
> create the child PDO when driver notices a new NIC
> Binding, I loaded the virtual storage miniport
> driver
> on this newly created child PDO, which works fine,
> but
> I am seeing a problem of system hang during system
> shutdown and hibernation. The system keep displaying
> the following line,
>
> During shutdown it keeps displaying:
> Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> (89ff0c90) SetPower-Shutdown status 0
>
>
> During hibernation it keeps displaying:
> Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> (89cc6cd8) SetPower-Hibernate status 0
>
> Is this is a known issue? If you have a fix, where I
> can get it from. I am using the W2K3 SP2 with web
> updates for the virtual storport available.
>
> -Tarun
>
> — Doron Holan wrote:
>
> > If you are considering asking for a kernel change,
> I
> > highly doubt you will get it. This is a
> fundamental
> > behavior that will not change. The iSCSI driver
> > uses TDI to talk to the NIC, so I do not think it
> is
> > going the same route you are.
> >
> > d
> >
> > -----Original Message-----
> > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > Sent: Sunday, April 06, 2008 4:34 AM
> > To: Windows System Software Devs Interest List
> > Cc: Doron Holan
> > Subject: Re: Re:[ntdev] Getting the NIC binding in
> > Bus Driver
> >
> > All this works, but I am just stuck when someone
> > disables the NIC, the CHILD PDO which was created
> on
> > this NIC doesn’t get a chance to send the packets
> on
> > the Network Stack because NIC unbind was almost
> half
> > way done. I am looking a way to know advance about
> > NIC unbind, so that I can stop my child PDO and
> tell
> > the NDIS stack to go ahead and start the NIC
> Unbind
> > one child PDO deletion completes. You said in one
> of
> > the last email that this requires a work in the
> > kernel. So probably we need to contact Microsoft.
> I
> > don’t know how MS iSCSI driver works, because it
> is
> > also sitting on top of the NIC.
> >
> > -Tarun
> >
> > ----- Original Message ----
> > From: Doron Holan
> > To: Windows System Software Devs Interest List
> >
> > Sent: Saturday, April 5, 2008 10:03:27 PM
> > Subject: RE: Re:[ntdev] Getting the NIC binding in
> > Bus Driver
> >
> > IoInvalidateDeviceState + returning that the
> devices
> > is failed/removed in the query irp also requires
> > async behavior (IRP_MN_QUERY_DEVICE_STATE is state
> > changing) and does not allow him to
> > resurrect/restart the PDO when the binding is
> > readded.
> >
> > d
> >
> > -----Original Message-----
> > From: xxxxx@lists.osr.com
> > [mailto:xxxxx@lists.osr.com] On
> Behalf
> > Of Maxim S. Shatskih
> > Sent: Saturday, April 05, 2008 4:58 AM
> > To: Windows System Software Devs Interest List
> > Subject: Re:[ntdev] Getting the NIC binding in Bus
> > Driver
> >
> > >to delete the child PDO using the
> > IoEjectDevice(pdo) in the context of NIC
> > >unbindAdapter call by the NDIS, and wait there
> for
> > the PDO to be deleted.
> >
> > Have you tried to mark the PDO as “dead” using
> your
> > own flag, then call
> > IoInvalidateDeviceRelations, and then do not
> return
> > the “dead” PDO in
> > relations?
> >
> > This is the normal way of deleting the PDO in the
> > bus driver.
> >
> > Another way is IoInvalidateDeviceState with the
> > proper response “I want to die”
> > to the MN_QUERY_DEVICE_STATE IRP.
> >
> > –
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> >
> > —
> > NTDEV is sponsored by OSR
> >
> > For our schedule of WDF, WDM, debugging and other
> > seminars visit:
> > http://www.osr.com/seminars
> >
> > To unsubscribe, visit the List Server section of
> OSR
> > Online at
> > http://www.osronline.com/page.cfm?name=ListServer
> >
> > —
> > NTDEV is sponsored by OSR
> >
> > For our schedule of WDF, WDM, debugging and other
> > seminars visit:
> > http://www.osr.com/seminars
> >
> > To unsubscribe, visit the List Server section of
> OSR
> > Online at
> > http://www.osronline.com/page.cfm?name=ListServer
> >
> > —
> > NTDEV is sponsored by OSR
> >
> > For our schedule of WDF, WDM, debugging and other
> > seminars visit:
> > http://www.osr.com/seminars
> >
> > To unsubscribe, visit the List Server section of
> OSR
> > Online at
> > http://www.osronline.com/page.cfm?name=ListServer
> >
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Are you marking the PDO as raw or as the power policy owner?

-----Original Message-----
From: Tarun Singh [mailto:xxxxx@yahoo.com]
Sent: Monday, April 07, 2008 1:21 PM
To: Windows System Software Devs Interest List
Cc: Doron Holan
Subject: RE: Re:[ntdev] Getting the NIC binding in Bus Driver

Yeah \Driver\ifcoevm is my driver for a PDO created by
the bus driver. And \Device\RaidPort is system
created, I think sortport owns it.

This time I did hibernation, I have one instance of my
driver loaded in the system, so only IRP is pending,
Here is the dump:

0: kd> !irp 0x8a114200 ff
Irp is active with 2 stacks 2 is current (=
0x8a114294)
No Mdl: No System Buffer: Thread 00000000: Irp stack
trace.
Flags = 00000000
ThreadListEntry.Flink = 8a114210
ThreadListEntry.Blink = 8a114210
IoStatus.Status = 00000000
IoStatus.Information = 00000000
RequestorMode = 00000000
Cancel = 00
CancelIrql = 0
ApcEnvironment = 00
UserIosb = 00000000
UserEvent = 00000000
Overlay.AsynchronousParameters.UserApcRoutine =
00000000
Overlay.AsynchronousParameters.UserApcContext =
00000000
Overlay.AllocationSize = 00000000 - 00000000
CancelRoutine = 00000000
UserBuffer = 00000000
&Tail.Overlay.DeviceQueueEntry = 8a114240
Tail.Overlay.Thread = 00000000
Tail.Overlay.AuxiliaryBuffer = 00000000
Tail.Overlay.ListEntry.Flink = 00000000
Tail.Overlay.ListEntry.Blink = 00000000
Tail.Overlay.CurrentStackLocation = 8a114294
Tail.Overlay.OriginalFileObject = 00000000
Tail.Apc = 00000000
Tail.CompletionKey = 00000000
cmd flg cl Device File Completion-Context
[16, 0] 0 0 8a08fe58 00000000 ba634752-00000000

\Driver\IFCoEProt
storport!RaidAdapterSetSystemPowerCompletion
Args: 00000000 00000000 00000000 00000003

[16, 2] 0 e0 8a0d6620 00000000 809b0e62-84838a10
Success Error Cancel
\Driver\ifcoevm nt!PopCompleteSystemPowerIrp
Args: 00000000 00000000 00000005 00000003

-Tarun
— Doron Holan wrote:

> Is \Driver\ifcoevm your driver? What is
> \Device\RaidPort0? A PDO or FDO? What is the
> output of !irp ff for each of the irps listed
> (e.g. !irp 89ff0c90 ff)
>
> d
> -----Original Message-----
> From: Tarun Singh [mailto:xxxxx@yahoo.com]
> Sent: Monday, April 07, 2008 12:20 PM
> To: Windows System Software Devs Interest List
> Cc: Doron Holan
> Subject: Re:[ntdev] Getting the NIC binding in Bus
> Driver
>
> Hi:
>
> I used the KMDF version of the dynamic bus version
> to
> create the child PDO when driver notices a new NIC
> Binding, I loaded the virtual storage miniport
> driver
> on this newly created child PDO, which works fine,
> but
> I am seeing a problem of system hang during system
> shutdown and hibernation. The system keep displaying
> the following line,
>
> During shutdown it keeps displaying:
> Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> (89ff0c90) SetPower-Shutdown status 0
>
>
> During hibernation it keeps displaying:
> Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> (89cc6cd8) SetPower-Hibernate status 0
>
> Is this is a known issue? If you have a fix, where I
> can get it from. I am using the W2K3 SP2 with web
> updates for the virtual storport available.
>
> -Tarun
>
> — Doron Holan wrote:
>
> > If you are considering asking for a kernel change,
> I
> > highly doubt you will get it. This is a
> fundamental
> > behavior that will not change. The iSCSI driver
> > uses TDI to talk to the NIC, so I do not think it
> is
> > going the same route you are.
> >
> > d
> >
> > -----Original Message-----
> > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > Sent: Sunday, April 06, 2008 4:34 AM
> > To: Windows System Software Devs Interest List
> > Cc: Doron Holan
> > Subject: Re: Re:[ntdev] Getting the NIC binding in
> > Bus Driver
> >
> > All this works, but I am just stuck when someone
> > disables the NIC, the CHILD PDO which was created
> on
> > this NIC doesn’t get a chance to send the packets
> on
> > the Network Stack because NIC unbind was almost
> half
> > way done. I am looking a way to know advance about
> > NIC unbind, so that I can stop my child PDO and
> tell
> > the NDIS stack to go ahead and start the NIC
> Unbind
> > one child PDO deletion completes. You said in one
> of
> > the last email that this requires a work in the
> > kernel. So probably we need to contact Microsoft.
> I
> > don’t know how MS iSCSI driver works, because it
> is
> > also sitting on top of the NIC.
> >
> > -Tarun
> >
> > ----- Original Message ----
> > From: Doron Holan
> > To: Windows System Software Devs Interest List
> >
> > Sent: Saturday, April 5, 2008 10:03:27 PM
> > Subject: RE: Re:[ntdev] Getting the NIC binding in
> > Bus Driver
> >
> > IoInvalidateDeviceState + returning that the
> devices
> > is failed/removed in the query irp also requires
> > async behavior (IRP_MN_QUERY_DEVICE_STATE is state
> > changing) and does not allow him to
> > resurrect/restart the PDO when the binding is
> > readded.
> >
> > d
> >
> > -----Original Message-----
> > From: xxxxx@lists.osr.com
> > [mailto:xxxxx@lists.osr.com] On
> Behalf
> > Of Maxim S. Shatskih
> > Sent: Saturday, April 05, 2008 4:58 AM
> > To: Windows System Software Devs Interest List
> > Subject: Re:[ntdev] Getting the NIC binding in Bus
> > Driver
> >
> > >to delete the child PDO using the
> > IoEjectDevice(pdo) in the context of NIC
> > >unbindAdapter call by the NDIS, and wait there
> for
> > the PDO to be deleted.
> >
> > Have you tried to mark the PDO as “dead” using
> your
> > own flag, then call
> > IoInvalidateDeviceRelations, and then do not
> return
> > the “dead” PDO in
> > relations?
> >
> > This is the normal way of deleting the PDO in the
> > bus driver.
> >
> > Another way is IoInvalidateDeviceState with the
> > proper response “I want to die”
> > to the MN_QUERY_DEVICE_STATE IRP.
> >
> > –
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> >
> > —
> > NTDEV is sponsored by OSR
> >
> > For our schedule of WDF, WDM, debugging and other
> > seminars visit:
> > http://www.osr.com/seminars
> >
> > To unsubscribe, visit the List Server section of
> OSR
> > Online at
> > http://www.osronline.com/page.cfm?name=ListServer
> >
> > —
> > NTDEV is sponsored by OSR
> >
> > For our schedule of WDF, WDM, debugging and other
> > seminars visit:
> > http://www.osr.com/seminars
> >
> > To unsubscribe, visit the List Server section of
> OSR
> > Online at
> > http://www.osronline.com/page.cfm?name=ListServer
> >
> > —
> > NTDEV is sponsored by OSR
> >
> > For our schedule of WDF, WDM, debugging and other
> > seminars visit:
> > http://www.osr.com/seminars
> >
> > To unsubscribe, visit the List Server section of
> OSR
> > Online at
> > http://www.osronline.com/page.cfm?name=ListServer
> >
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other
> seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR
> Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

I am using the Bus_CreatePdo() module as is to create
the child PDO as described by the sample. In this I
don’t see this option for the CHILD PDO as raw or as
the power policy owner, I this should be for FDO.

I am also using the Bus_EvtDeviceAdd() to create FDO
as is, and I don’t see that options specified here,
what call I need for this in the KMDF version for
dynamic Bus driver.

-Tarun

— Doron Holan wrote:

> Are you marking the PDO as raw or as the power
> policy owner?
>
> -----Original Message-----
> From: Tarun Singh [mailto:xxxxx@yahoo.com]
> Sent: Monday, April 07, 2008 1:21 PM
> To: Windows System Software Devs Interest List
> Cc: Doron Holan
> Subject: RE: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> Yeah \Driver\ifcoevm is my driver for a PDO created
> by
> the bus driver. And \Device\RaidPort is system
> created, I think sortport owns it.
>
> This time I did hibernation, I have one instance of
> my
> driver loaded in the system, so only IRP is pending,
> Here is the dump:
>
> 0: kd> !irp 0x8a114200 ff
> Irp is active with 2 stacks 2 is current (=
> 0x8a114294)
> No Mdl: No System Buffer: Thread 00000000: Irp
> stack
> trace.
> Flags = 00000000
> ThreadListEntry.Flink = 8a114210
> ThreadListEntry.Blink = 8a114210
> IoStatus.Status = 00000000
> IoStatus.Information = 00000000
> RequestorMode = 00000000
> Cancel = 00
> CancelIrql = 0
> ApcEnvironment = 00
> UserIosb = 00000000
> UserEvent = 00000000
> Overlay.AsynchronousParameters.UserApcRoutine =
> 00000000
> Overlay.AsynchronousParameters.UserApcContext =
> 00000000
> Overlay.AllocationSize = 00000000 - 00000000
> CancelRoutine = 00000000
> UserBuffer = 00000000
> &Tail.Overlay.DeviceQueueEntry = 8a114240
> Tail.Overlay.Thread = 00000000
> Tail.Overlay.AuxiliaryBuffer = 00000000
> Tail.Overlay.ListEntry.Flink = 00000000
> Tail.Overlay.ListEntry.Blink = 00000000
> Tail.Overlay.CurrentStackLocation = 8a114294
> Tail.Overlay.OriginalFileObject = 00000000
> Tail.Apc = 00000000
> Tail.CompletionKey = 00000000
> cmd flg cl Device File
> Completion-Context
> [16, 0] 0 0 8a08fe58 00000000 ba634752-00000000
>
> \Driver\IFCoEProt
> storport!RaidAdapterSetSystemPowerCompletion
> Args: 00000000 00000000
> 00000000 00000003
> >[16, 2] 0 e0 8a0d6620 00000000 809b0e62-84838a10
> Success Error Cancel
> \Driver\ifcoevm
> nt!PopCompleteSystemPowerIrp
> Args: 00000000 00000000
> 00000005 00000003
>
> -Tarun
> — Doron Holan wrote:
>
> > Is \Driver\ifcoevm your driver? What is
> > \Device\RaidPort0? A PDO or FDO? What is the
> > output of !irp ff for each of the irps
> listed
> > (e.g. !irp 89ff0c90 ff)
> >
> > d
> > -----Original Message-----
> > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > Sent: Monday, April 07, 2008 12:20 PM
> > To: Windows System Software Devs Interest List
> > Cc: Doron Holan
> > Subject: Re:[ntdev] Getting the NIC binding in Bus
> > Driver
> >
> > Hi:
> >
> > I used the KMDF version of the dynamic bus version
> > to
> > create the child PDO when driver notices a new NIC
> > Binding, I loaded the virtual storage miniport
> > driver
> > on this newly created child PDO, which works fine,
> > but
> > I am seeing a problem of system hang during system
> > shutdown and hibernation. The system keep
> displaying
> > the following line,
> >
> > During shutdown it keeps displaying:
> > Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> > (89ff0c90) SetPower-Shutdown status 0
> >
> >
> > During hibernation it keeps displaying:
> > Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> > (89cc6cd8) SetPower-Hibernate status 0
> >
> > Is this is a known issue? If you have a fix, where
> I
> > can get it from. I am using the W2K3 SP2 with web
> > updates for the virtual storport available.
> >
> > -Tarun
> >
> > — Doron Holan wrote:
> >
> > > If you are considering asking for a kernel
> change,
> > I
> > > highly doubt you will get it. This is a
> > fundamental
> > > behavior that will not change. The iSCSI driver
> > > uses TDI to talk to the NIC, so I do not think
> it
> > is
> > > going the same route you are.
> > >
> > > d
> > >
> > > -----Original Message-----
> > > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > > Sent: Sunday, April 06, 2008 4:34 AM
> > > To: Windows System Software Devs Interest List
> > > Cc: Doron Holan
> > > Subject: Re: Re:[ntdev] Getting the NIC binding
> in
> > > Bus Driver
> > >
> > > All this works, but I am just stuck when someone
> > > disables the NIC, the CHILD PDO which was
> created
> > on
> > > this NIC doesn’t get a chance to send the
> packets
> > on
> > > the Network Stack because NIC unbind was almost
> > half
> > > way done. I am looking a way to know advance
> about
> > > NIC unbind, so that I can stop my child PDO and
> > tell
> > > the NDIS stack to go ahead and start the NIC
> > Unbind
> > > one child PDO deletion completes. You said in
> one
> > of
> > > the last email that this requires a work in the
> > > kernel. So probably we need to contact
> Microsoft.
> > I
> > > don’t know how MS iSCSI driver works, because it
> > is
> > > also sitting on top of the NIC.
> > >
> > > -Tarun
> > >
> > > ----- Original Message ----
> > > From: Doron Holan
> > > To: Windows System Software Devs Interest List
> > >
> > > Sent: Saturday, April 5, 2008 10:03:27 PM
> > > Subject: RE: Re:[ntdev] Getting the NIC binding
> in
> > > Bus Driver
> > >
> > > IoInvalidateDeviceState + returning that the
> > devices
> > > is failed/removed in the query irp also requires
> > > async behavior (IRP_MN_QUERY_DEVICE_STATE is
> state
> > > changing) and does not allow him to
> > > resurrect/restart the PDO when the binding is
> > > readded.
> > >
> > > d
> > >
> > > -----Original Message-----
> > > From: xxxxx@lists.osr.com
> > > [mailto:xxxxx@lists.osr.com] On
> > Behalf
> > > Of Maxim S. Shatskih
> > > Sent: Saturday, April 05, 2008 4:58 AM
> > > To: Windows System Software Devs Interest List
> > > Subject: Re:[ntdev] Getting the NIC binding in
> Bus
> > > Driver
> > >
> > > >to delete the child PDO using the
>
=== message truncated ===

I am not suggesting that you mark the PDO as raw or as the power policy owner? You should keep the code as is. The reason I asked is that sometimes when there are 2 power policy owners in the stack, these types of problems (power irps that are not completed) occur.

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Tarun Singh
Sent: Monday, April 07, 2008 1:51 PM
To: Windows System Software Devs Interest List
Subject: RE: Re:[ntdev] Getting the NIC binding in Bus Driver

I am using the Bus_CreatePdo() module as is to create
the child PDO as described by the sample. In this I
don’t see this option for the CHILD PDO as raw or as
the power policy owner, I this should be for FDO.

I am also using the Bus_EvtDeviceAdd() to create FDO
as is, and I don’t see that options specified here,
what call I need for this in the KMDF version for
dynamic Bus driver.

-Tarun

— Doron Holan wrote:

> Are you marking the PDO as raw or as the power
> policy owner?
>
> -----Original Message-----
> From: Tarun Singh [mailto:xxxxx@yahoo.com]
> Sent: Monday, April 07, 2008 1:21 PM
> To: Windows System Software Devs Interest List
> Cc: Doron Holan
> Subject: RE: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> Yeah \Driver\ifcoevm is my driver for a PDO created
> by
> the bus driver. And \Device\RaidPort is system
> created, I think sortport owns it.
>
> This time I did hibernation, I have one instance of
> my
> driver loaded in the system, so only IRP is pending,
> Here is the dump:
>
> 0: kd> !irp 0x8a114200 ff
> Irp is active with 2 stacks 2 is current (=
> 0x8a114294)
> No Mdl: No System Buffer: Thread 00000000: Irp
> stack
> trace.
> Flags = 00000000
> ThreadListEntry.Flink = 8a114210
> ThreadListEntry.Blink = 8a114210
> IoStatus.Status = 00000000
> IoStatus.Information = 00000000
> RequestorMode = 00000000
> Cancel = 00
> CancelIrql = 0
> ApcEnvironment = 00
> UserIosb = 00000000
> UserEvent = 00000000
> Overlay.AsynchronousParameters.UserApcRoutine =
> 00000000
> Overlay.AsynchronousParameters.UserApcContext =
> 00000000
> Overlay.AllocationSize = 00000000 - 00000000
> CancelRoutine = 00000000
> UserBuffer = 00000000
> &Tail.Overlay.DeviceQueueEntry = 8a114240
> Tail.Overlay.Thread = 00000000
> Tail.Overlay.AuxiliaryBuffer = 00000000
> Tail.Overlay.ListEntry.Flink = 00000000
> Tail.Overlay.ListEntry.Blink = 00000000
> Tail.Overlay.CurrentStackLocation = 8a114294
> Tail.Overlay.OriginalFileObject = 00000000
> Tail.Apc = 00000000
> Tail.CompletionKey = 00000000
> cmd flg cl Device File
> Completion-Context
> [16, 0] 0 0 8a08fe58 00000000 ba634752-00000000
>
> \Driver\IFCoEProt
> storport!RaidAdapterSetSystemPowerCompletion
> Args: 00000000 00000000
> 00000000 00000003
> >[16, 2] 0 e0 8a0d6620 00000000 809b0e62-84838a10
> Success Error Cancel
> \Driver\ifcoevm
> nt!PopCompleteSystemPowerIrp
> Args: 00000000 00000000
> 00000005 00000003
>
> -Tarun
> — Doron Holan wrote:
>
> > Is \Driver\ifcoevm your driver? What is
> > \Device\RaidPort0? A PDO or FDO? What is the
> > output of !irp ff for each of the irps
> listed
> > (e.g. !irp 89ff0c90 ff)
> >
> > d
> > -----Original Message-----
> > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > Sent: Monday, April 07, 2008 12:20 PM
> > To: Windows System Software Devs Interest List
> > Cc: Doron Holan
> > Subject: Re:[ntdev] Getting the NIC binding in Bus
> > Driver
> >
> > Hi:
> >
> > I used the KMDF version of the dynamic bus version
> > to
> > create the child PDO when driver notices a new NIC
> > Binding, I loaded the virtual storage miniport
> > driver
> > on this newly created child PDO, which works fine,
> > but
> > I am seeing a problem of system hang during system
> > shutdown and hibernation. The system keep
> displaying
> > the following line,
> >
> > During shutdown it keeps displaying:
> > Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> > (89ff0c90) SetPower-Shutdown status 0
> >
> >
> > During hibernation it keeps displaying:
> > Waiting on: \Driver\ifcoevm \Device\RaidPort0 irp
> > (89cc6cd8) SetPower-Hibernate status 0
> >
> > Is this is a known issue? If you have a fix, where
> I
> > can get it from. I am using the W2K3 SP2 with web
> > updates for the virtual storport available.
> >
> > -Tarun
> >
> > — Doron Holan wrote:
> >
> > > If you are considering asking for a kernel
> change,
> > I
> > > highly doubt you will get it. This is a
> > fundamental
> > > behavior that will not change. The iSCSI driver
> > > uses TDI to talk to the NIC, so I do not think
> it
> > is
> > > going the same route you are.
> > >
> > > d
> > >
> > > -----Original Message-----
> > > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > > Sent: Sunday, April 06, 2008 4:34 AM
> > > To: Windows System Software Devs Interest List
> > > Cc: Doron Holan
> > > Subject: Re: Re:[ntdev] Getting the NIC binding
> in
> > > Bus Driver
> > >
> > > All this works, but I am just stuck when someone
> > > disables the NIC, the CHILD PDO which was
> created
> > on
> > > this NIC doesn’t get a chance to send the
> packets
> > on
> > > the Network Stack because NIC unbind was almost
> > half
> > > way done. I am looking a way to know advance
> about
> > > NIC unbind, so that I can stop my child PDO and
> > tell
> > > the NDIS stack to go ahead and start the NIC
> > Unbind
> > > one child PDO deletion completes. You said in
> one
> > of
> > > the last email that this requires a work in the
> > > kernel. So probably we need to contact
> Microsoft.
> > I
> > > don’t know how MS iSCSI driver works, because it
> > is
> > > also sitting on top of the NIC.
> > >
> > > -Tarun
> > >
> > > ----- Original Message ----
> > > From: Doron Holan
> > > To: Windows System Software Devs Interest List
> > >
> > > Sent: Saturday, April 5, 2008 10:03:27 PM
> > > Subject: RE: Re:[ntdev] Getting the NIC binding
> in
> > > Bus Driver
> > >
> > > IoInvalidateDeviceState + returning that the
> > devices
> > > is failed/removed in the query irp also requires
> > > async behavior (IRP_MN_QUERY_DEVICE_STATE is
> state
> > > changing) and does not allow him to
> > > resurrect/restart the PDO when the binding is
> > > readded.
> > >
> > > d
> > >
> > > -----Original Message-----
> > > From: xxxxx@lists.osr.com
> > > [mailto:xxxxx@lists.osr.com] On
> > Behalf
> > > Of Maxim S. Shatskih
> > > Sent: Saturday, April 05, 2008 4:58 AM
> > > To: Windows System Software Devs Interest List
> > > Subject: Re:[ntdev] Getting the NIC binding in
> Bus
> > > Driver
> > >
> > > >to delete the child PDO using the
>
=== message truncated ===


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

We are using Bus driver (Virtual Bus), then I think it
owns the power policy for it’s bus. Is that a problem?

-Tarun
— Doron Holan wrote:

> I am not suggesting that you mark the PDO as raw or
> as the power policy owner? You should keep the code
> as is. The reason I asked is that sometimes when
> there are 2 power policy owners in the stack, these
> types of problems (power irps that are not
> completed) occur.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf
> Of Tarun Singh
> Sent: Monday, April 07, 2008 1:51 PM
> To: Windows System Software Devs Interest List
> Subject: RE: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> I am using the Bus_CreatePdo() module as is to
> create
> the child PDO as described by the sample. In this I
> don’t see this option for the CHILD PDO as raw or as
> the power policy owner, I this should be for FDO.
>
> I am also using the Bus_EvtDeviceAdd() to create FDO
> as is, and I don’t see that options specified here,
> what call I need for this in the KMDF version for
> dynamic Bus driver.
>
> -Tarun
>
> — Doron Holan wrote:
>
> > Are you marking the PDO as raw or as the power
> > policy owner?
> >
> > -----Original Message-----
> > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > Sent: Monday, April 07, 2008 1:21 PM
> > To: Windows System Software Devs Interest List
> > Cc: Doron Holan
> > Subject: RE: Re:[ntdev] Getting the NIC binding in
> > Bus Driver
> >
> > Yeah \Driver\ifcoevm is my driver for a PDO
> created
> > by
> > the bus driver. And \Device\RaidPort is system
> > created, I think sortport owns it.
> >
> > This time I did hibernation, I have one instance
> of
> > my
> > driver loaded in the system, so only IRP is
> pending,
> > Here is the dump:
> >
> > 0: kd> !irp 0x8a114200 ff
> > Irp is active with 2 stacks 2 is current (=
> > 0x8a114294)
> > No Mdl: No System Buffer: Thread 00000000: Irp
> > stack
> > trace.
> > Flags = 00000000
> > ThreadListEntry.Flink = 8a114210
> > ThreadListEntry.Blink = 8a114210
> > IoStatus.Status = 00000000
> > IoStatus.Information = 00000000
> > RequestorMode = 00000000
> > Cancel = 00
> > CancelIrql = 0
> > ApcEnvironment = 00
> > UserIosb = 00000000
> > UserEvent = 00000000
> > Overlay.AsynchronousParameters.UserApcRoutine =
> > 00000000
> > Overlay.AsynchronousParameters.UserApcContext =
> > 00000000
> > Overlay.AllocationSize = 00000000 - 00000000
> > CancelRoutine = 00000000
> > UserBuffer = 00000000
> > &Tail.Overlay.DeviceQueueEntry = 8a114240
> > Tail.Overlay.Thread = 00000000
> > Tail.Overlay.AuxiliaryBuffer = 00000000
> > Tail.Overlay.ListEntry.Flink = 00000000
> > Tail.Overlay.ListEntry.Blink = 00000000
> > Tail.Overlay.CurrentStackLocation = 8a114294
> > Tail.Overlay.OriginalFileObject = 00000000
> > Tail.Apc = 00000000
> > Tail.CompletionKey = 00000000
> > cmd flg cl Device File
> > Completion-Context
> > [16, 0] 0 0 8a08fe58 00000000
> ba634752-00000000
> >
> > \Driver\IFCoEProt
> > storport!RaidAdapterSetSystemPowerCompletion
> > Args: 00000000 00000000
> > 00000000 00000003
> > >[16, 2] 0 e0 8a0d6620 00000000
> 809b0e62-84838a10
> > Success Error Cancel
> > \Driver\ifcoevm
> > nt!PopCompleteSystemPowerIrp
> > Args: 00000000 00000000
> > 00000005 00000003
> >
> > -Tarun
> > — Doron Holan wrote:
> >
> > > Is \Driver\ifcoevm your driver? What is
> > > \Device\RaidPort0? A PDO or FDO? What is the
> > > output of !irp ff for each of the irps
> > listed
> > > (e.g. !irp 89ff0c90 ff)
> > >
> > > d
> > > -----Original Message-----
> > > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > > Sent: Monday, April 07, 2008 12:20 PM
> > > To: Windows System Software Devs Interest List
> > > Cc: Doron Holan
> > > Subject: Re:[ntdev] Getting the NIC binding in
> Bus
> > > Driver
> > >
> > > Hi:
> > >
> > > I used the KMDF version of the dynamic bus
> version
> > > to
> > > create the child PDO when driver notices a new
> NIC
> > > Binding, I loaded the virtual storage miniport
> > > driver
> > > on this newly created child PDO, which works
> fine,
> > > but
> > > I am seeing a problem of system hang during
> system
> > > shutdown and hibernation. The system keep
> > displaying
> > > the following line,
> > >
> > > During shutdown it keeps displaying:
> > > Waiting on: \Driver\ifcoevm \Device\RaidPort0
> irp
> > > (89ff0c90) SetPower-Shutdown status 0
> > >
> > >
> > > During hibernation it keeps displaying:
> > > Waiting on: \Driver\ifcoevm \Device\RaidPort0
> irp
> > > (89cc6cd8) SetPower-Hibernate status 0
> > >
> > > Is this is a known issue? If you have a fix,
> where
> > I
> > > can get it from. I am using the W2K3 SP2 with
> web
> > > updates for the virtual storport available.
> > >
> > > -Tarun
> > >
> > > — Doron Holan
> wrote:
> > >
> > > > If you are considering asking for a kernel
> > change,
> > > I
> > > > highly doubt you will get it. This is a
> > > fundamental
> > > > behavior that will not change. The iSCSI
> driver
> > > > uses TDI to talk to the NIC, so I do not think
> > it
> > > is
> > > > going the same route you are.
> > > >
> > > > d
> > > >
> > > > -----Original Message-----
> > > > From: Tarun Singh
> [mailto:xxxxx@yahoo.com]
> > > > Sent: Sunday, April 06, 2008 4:34 AM
> > > > To: Windows System Software Devs Interest List
> > > > Cc: Doron Holan
> > > > Subject: Re: Re:[ntdev] Getting the NIC
> binding
> > in
> > > > Bus Driver
> > > >
> > > > All this works, but I am just stuck when
> someone
> > > > disables the NIC, the CHILD PDO which was
> > created
> > > on
> > > > this NIC doesn’t get a chance to send the
> > packets
> > > on
> > > > the Network Stack because NIC unbind was
> almost
>
=== message truncated ===

A bus driver is the PPO for the FDO it creates in EvtDriverDeviceAdd. A bus driver is not the PPO (typically) for any of the PDOs it creates, the FDOs which load on your bus’s PDOs are the PPOs for those stacks.

d

-----Original Message-----
From: Tarun Singh [mailto:xxxxx@yahoo.com]
Sent: Monday, April 07, 2008 2:48 PM
To: Windows System Software Devs Interest List
Cc: Doron Holan
Subject: RE: Re:[ntdev] Getting the NIC binding in Bus Driver

We are using Bus driver (Virtual Bus), then I think it
owns the power policy for it’s bus. Is that a problem?

-Tarun
— Doron Holan wrote:

> I am not suggesting that you mark the PDO as raw or
> as the power policy owner? You should keep the code
> as is. The reason I asked is that sometimes when
> there are 2 power policy owners in the stack, these
> types of problems (power irps that are not
> completed) occur.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf
> Of Tarun Singh
> Sent: Monday, April 07, 2008 1:51 PM
> To: Windows System Software Devs Interest List
> Subject: RE: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> I am using the Bus_CreatePdo() module as is to
> create
> the child PDO as described by the sample. In this I
> don’t see this option for the CHILD PDO as raw or as
> the power policy owner, I this should be for FDO.
>
> I am also using the Bus_EvtDeviceAdd() to create FDO
> as is, and I don’t see that options specified here,
> what call I need for this in the KMDF version for
> dynamic Bus driver.
>
> -Tarun
>
> — Doron Holan wrote:
>
> > Are you marking the PDO as raw or as the power
> > policy owner?
> >
> > -----Original Message-----
> > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > Sent: Monday, April 07, 2008 1:21 PM
> > To: Windows System Software Devs Interest List
> > Cc: Doron Holan
> > Subject: RE: Re:[ntdev] Getting the NIC binding in
> > Bus Driver
> >
> > Yeah \Driver\ifcoevm is my driver for a PDO
> created
> > by
> > the bus driver. And \Device\RaidPort is system
> > created, I think sortport owns it.
> >
> > This time I did hibernation, I have one instance
> of
> > my
> > driver loaded in the system, so only IRP is
> pending,
> > Here is the dump:
> >
> > 0: kd> !irp 0x8a114200 ff
> > Irp is active with 2 stacks 2 is current (=
> > 0x8a114294)
> > No Mdl: No System Buffer: Thread 00000000: Irp
> > stack
> > trace.
> > Flags = 00000000
> > ThreadListEntry.Flink = 8a114210
> > ThreadListEntry.Blink = 8a114210
> > IoStatus.Status = 00000000
> > IoStatus.Information = 00000000
> > RequestorMode = 00000000
> > Cancel = 00
> > CancelIrql = 0
> > ApcEnvironment = 00
> > UserIosb = 00000000
> > UserEvent = 00000000
> > Overlay.AsynchronousParameters.UserApcRoutine =
> > 00000000
> > Overlay.AsynchronousParameters.UserApcContext =
> > 00000000
> > Overlay.AllocationSize = 00000000 - 00000000
> > CancelRoutine = 00000000
> > UserBuffer = 00000000
> > &Tail.Overlay.DeviceQueueEntry = 8a114240
> > Tail.Overlay.Thread = 00000000
> > Tail.Overlay.AuxiliaryBuffer = 00000000
> > Tail.Overlay.ListEntry.Flink = 00000000
> > Tail.Overlay.ListEntry.Blink = 00000000
> > Tail.Overlay.CurrentStackLocation = 8a114294
> > Tail.Overlay.OriginalFileObject = 00000000
> > Tail.Apc = 00000000
> > Tail.CompletionKey = 00000000
> > cmd flg cl Device File
> > Completion-Context
> > [16, 0] 0 0 8a08fe58 00000000
> ba634752-00000000
> >
> > \Driver\IFCoEProt
> > storport!RaidAdapterSetSystemPowerCompletion
> > Args: 00000000 00000000
> > 00000000 00000003
> > >[16, 2] 0 e0 8a0d6620 00000000
> 809b0e62-84838a10
> > Success Error Cancel
> > \Driver\ifcoevm
> > nt!PopCompleteSystemPowerIrp
> > Args: 00000000 00000000
> > 00000005 00000003
> >
> > -Tarun
> > — Doron Holan wrote:
> >
> > > Is \Driver\ifcoevm your driver? What is
> > > \Device\RaidPort0? A PDO or FDO? What is the
> > > output of !irp ff for each of the irps
> > listed
> > > (e.g. !irp 89ff0c90 ff)
> > >
> > > d
> > > -----Original Message-----
> > > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > > Sent: Monday, April 07, 2008 12:20 PM
> > > To: Windows System Software Devs Interest List
> > > Cc: Doron Holan
> > > Subject: Re:[ntdev] Getting the NIC binding in
> Bus
> > > Driver
> > >
> > > Hi:
> > >
> > > I used the KMDF version of the dynamic bus
> version
> > > to
> > > create the child PDO when driver notices a new
> NIC
> > > Binding, I loaded the virtual storage miniport
> > > driver
> > > on this newly created child PDO, which works
> fine,
> > > but
> > > I am seeing a problem of system hang during
> system
> > > shutdown and hibernation. The system keep
> > displaying
> > > the following line,
> > >
> > > During shutdown it keeps displaying:
> > > Waiting on: \Driver\ifcoevm \Device\RaidPort0
> irp
> > > (89ff0c90) SetPower-Shutdown status 0
> > >
> > >
> > > During hibernation it keeps displaying:
> > > Waiting on: \Driver\ifcoevm \Device\RaidPort0
> irp
> > > (89cc6cd8) SetPower-Hibernate status 0
> > >
> > > Is this is a known issue? If you have a fix,
> where
> > I
> > > can get it from. I am using the W2K3 SP2 with
> web
> > > updates for the virtual storport available.
> > >
> > > -Tarun
> > >
> > > — Doron Holan
> wrote:
> > >
> > > > If you are considering asking for a kernel
> > change,
> > > I
> > > > highly doubt you will get it. This is a
> > > fundamental
> > > > behavior that will not change. The iSCSI
> driver
> > > > uses TDI to talk to the NIC, so I do not think
> > it
> > > is
> > > > going the same route you are.
> > > >
> > > > d
> > > >
> > > > -----Original Message-----
> > > > From: Tarun Singh
> [mailto:xxxxx@yahoo.com]
> > > > Sent: Sunday, April 06, 2008 4:34 AM
> > > > To: Windows System Software Devs Interest List
> > > > Cc: Doron Holan
> > > > Subject: Re: Re:[ntdev] Getting the NIC
> binding
> > in
> > > > Bus Driver
> > > >
> > > > All this works, but I am just stuck when
> someone
> > > > disables the NIC, the CHILD PDO which was
> > created
> > > on
> > > > this NIC doesn’t get a chance to send the
> > packets
> > > on
> > > > the Network Stack because NIC unbind was
> almost
>
=== message truncated ===

What could be the problem then? Any clue or it
requires storport stack to debug?

-Tarun

— Doron Holan wrote:

> A bus driver is the PPO for the FDO it creates in
> EvtDriverDeviceAdd. A bus driver is not the PPO
> (typically) for any of the PDOs it creates, the FDOs
> which load on your bus’s PDOs are the PPOs for those
> stacks.
>
> d
>
> -----Original Message-----
> From: Tarun Singh [mailto:xxxxx@yahoo.com]
> Sent: Monday, April 07, 2008 2:48 PM
> To: Windows System Software Devs Interest List
> Cc: Doron Holan
> Subject: RE: Re:[ntdev] Getting the NIC binding in
> Bus Driver
>
> We are using Bus driver (Virtual Bus), then I think
> it
> owns the power policy for it’s bus. Is that a
> problem?
>
> -Tarun
> — Doron Holan wrote:
>
> > I am not suggesting that you mark the PDO as raw
> or
> > as the power policy owner? You should keep the
> code
> > as is. The reason I asked is that sometimes when
> > there are 2 power policy owners in the stack,
> these
> > types of problems (power irps that are not
> > completed) occur.
> >
> > d
> >
> > -----Original Message-----
> > From: xxxxx@lists.osr.com
> > [mailto:xxxxx@lists.osr.com] On
> Behalf
> > Of Tarun Singh
> > Sent: Monday, April 07, 2008 1:51 PM
> > To: Windows System Software Devs Interest List
> > Subject: RE: Re:[ntdev] Getting the NIC binding in
> > Bus Driver
> >
> > I am using the Bus_CreatePdo() module as is to
> > create
> > the child PDO as described by the sample. In this
> I
> > don’t see this option for the CHILD PDO as raw or
> as
> > the power policy owner, I this should be for FDO.
> >
> > I am also using the Bus_EvtDeviceAdd() to create
> FDO
> > as is, and I don’t see that options specified
> here,
> > what call I need for this in the KMDF version for
> > dynamic Bus driver.
> >
> > -Tarun
> >
> > — Doron Holan wrote:
> >
> > > Are you marking the PDO as raw or as the power
> > > policy owner?
> > >
> > > -----Original Message-----
> > > From: Tarun Singh [mailto:xxxxx@yahoo.com]
> > > Sent: Monday, April 07, 2008 1:21 PM
> > > To: Windows System Software Devs Interest List
> > > Cc: Doron Holan
> > > Subject: RE: Re:[ntdev] Getting the NIC binding
> in
> > > Bus Driver
> > >
> > > Yeah \Driver\ifcoevm is my driver for a PDO
> > created
> > > by
> > > the bus driver. And \Device\RaidPort is system
> > > created, I think sortport owns it.
> > >
> > > This time I did hibernation, I have one instance
> > of
> > > my
> > > driver loaded in the system, so only IRP is
> > pending,
> > > Here is the dump:
> > >
> > > 0: kd> !irp 0x8a114200 ff
> > > Irp is active with 2 stacks 2 is current (=
> > > 0x8a114294)
> > > No Mdl: No System Buffer: Thread 00000000: Irp
> > > stack
> > > trace.
> > > Flags = 00000000
> > > ThreadListEntry.Flink = 8a114210
> > > ThreadListEntry.Blink = 8a114210
> > > IoStatus.Status = 00000000
> > > IoStatus.Information = 00000000
> > > RequestorMode = 00000000
> > > Cancel = 00
> > > CancelIrql = 0
> > > ApcEnvironment = 00
> > > UserIosb = 00000000
> > > UserEvent = 00000000
> > > Overlay.AsynchronousParameters.UserApcRoutine =
> > > 00000000
> > > Overlay.AsynchronousParameters.UserApcContext =
> > > 00000000
> > > Overlay.AllocationSize = 00000000 - 00000000
> > > CancelRoutine = 00000000
> > > UserBuffer = 00000000
> > > &Tail.Overlay.DeviceQueueEntry = 8a114240
> > > Tail.Overlay.Thread = 00000000
> > > Tail.Overlay.AuxiliaryBuffer = 00000000
> > > Tail.Overlay.ListEntry.Flink = 00000000
> > > Tail.Overlay.ListEntry.Blink = 00000000
> > > Tail.Overlay.CurrentStackLocation = 8a114294
> > > Tail.Overlay.OriginalFileObject = 00000000
> > > Tail.Apc = 00000000
> > > Tail.CompletionKey = 00000000
> > > cmd flg cl Device File
> > > Completion-Context
> > > [16, 0] 0 0 8a08fe58 00000000
> > ba634752-00000000
> > >
> > > \Driver\IFCoEProt
> > > storport!RaidAdapterSetSystemPowerCompletion
> > > Args: 00000000 00000000
> > > 00000000 00000003
> > > >[16, 2] 0 e0 8a0d6620 00000000
> > 809b0e62-84838a10
> > > Success Error Cancel
> > > \Driver\ifcoevm
> > > nt!PopCompleteSystemPowerIrp
> > > Args: 00000000 00000000
> > > 00000005 00000003
> > >
> > > -Tarun
> > > — Doron Holan
> wrote:
> > >
> > > > Is \Driver\ifcoevm your driver? What is
> > > > \Device\RaidPort0? A PDO or FDO? What is the
> > > > output of !irp ff for each of the irps
> > > listed
> > > > (e.g. !irp 89ff0c90 ff)
> > > >
> > > > d
> > > > -----Original Message-----
> > > > From: Tarun Singh
> [mailto:xxxxx@yahoo.com]
> > > > Sent: Monday, April 07, 2008 12:20 PM
> > > > To: Windows System Software Devs Interest List
> > > > Cc: Doron Holan
> > > > Subject: Re:[ntdev] Getting the NIC binding in
> > Bus
> > > > Driver
> > > >
> > > > Hi:
> > > >
> > > > I used the KMDF version of the dynamic bus
> > version
> > > > to
> > > > create the child PDO when driver notices a new
> > NIC
> > > > Binding, I loaded the virtual storage miniport
> > > > driver
> > > > on this newly created child PDO, which works
> > fine,
> > > > but
> > > > I am seeing a problem of system hang during
> > system
> > > > shutdown and hibernation. The system keep
> > > displaying
> > > > the following line,
> > > >
> > > > During shutdown it keeps displaying:
> > > > Waiting on: \Driver\ifcoevm \Device\RaidPort0
> > irp
> > > > (89ff0c90) SetPower-Shutdown status 0
> > > >
> > > >
> > > > During hibernation it keeps displaying:
> > > > Waiting on: \Driver\ifcoevm \Device\RaidPort0
> > irp
> > > > (89cc6cd8) SetPower-Hibernate status 0
> > > >
> > > > Is this is a known issue? If you have a fix,
> > where
> > > I
> > > > can get it from. I am using the W2K3 SP2 with
> > web
> > > > updates for the virtual storport available.
> > > >
> > > > -Tarun
> > > >
> > > > — Doron Holan
> > wrote:
>
=== message truncated ===