SCSI miniport question

Can you call IoCallDriver() from a SCSI miniport driver?

Thanks,
Joe


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

It depends on what you mean by ‘can’. Strictly speaking the answer is “yes
you can”, but the consequences of doing so will most likely be a system
bugcheck, unless you know exactly what you are doing.

  1. If your source file includes “miniport.h” then IoCallDriver is undefined,
    so all of your NT specific operations have to be in a separate source file
    that includes “ntddk.h” (or “wdm.h”.)

  2. Within a ‘miniport context’ which is to say a miniport supplied routine
    called by scsiport, you are generally executing at DIRQL (although in some
    cases this may be DISPATCH_LEVEL, like if you do not have an interrupt
    object,) and that will perhaps result in rather unfortunate behavior on the
    part of the target of an IoCallDriver request.

-----Original Message-----
From: Joe Moriarty [mailto:xxxxx@east.sun.com]
Sent: Monday, September 10, 2001 10:52 AM
To: NT Developers Interest List
Subject: [ntdev] SCSI miniport question

Can you call IoCallDriver() from a SCSI miniport driver?

Thanks,
Joe


You are currently subscribed to ntdev as: xxxxx@stratus.com To
unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

> -----Original Message-----

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Roddy, Mark
Sent: Monday, September 10, 2001 11:03 AM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI miniport question

It depends on what you mean by ‘can’. Strictly speaking the answer is “yes
you can”, but the consequences of doing so will most likely be a system
bugcheck, unless you know exactly what you are doing.

  1. If your source file includes “miniport.h” then IoCallDriver is
    undefined,
    so all of your NT specific operations have to be in a separate source file
    that includes “ntddk.h” (or “wdm.h”.)

  2. Within a ‘miniport context’ which is to say a miniport supplied routine
    called by scsiport, you are generally executing at DIRQL (although in some
    cases this may be DISPATCH_LEVEL, like if you do not have an interrupt
    object,) and that will perhaps result in rather unfortunate
    behavior on the
    part of the target of an IoCallDriver request.

As long as the target driver handles DISPATCH_LEVEL requests I will be ok.
I am also assuming here that no interrupt object means that I will always be
called at DISPATCH_LEVEL. In addition, if my HBA is a virtual device, then
I have to spoof the claim device SRBs that come the PORT driver/storage
class drivers. Is that correct?

Joe

-----Original Message-----
From: Joe Moriarty [mailto:xxxxx@east.sun.com]
Sent: Monday, September 10, 2001 10:52 AM
To: NT Developers Interest List
Subject: [ntdev] SCSI miniport question

Can you call IoCallDriver() from a SCSI miniport driver?

Thanks,
Joe


You are currently subscribed to ntdev as: xxxxx@stratus.com To
unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@east.sun.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

No, I don’t see any reason why you need to do anything about
SRB_FUNCTION_CLAIM_DEVICE. This is sent by class drivers to port drivers and
handled entirely by the port driver without any interface with the miniport
driver. If your virtual HBA poofs up a scsi target that looks like a disk
device, the scsi disk class driver will claim it.

-----Original Message-----
As long as the target driver handles DISPATCH_LEVEL requests I will be ok. I
am also assuming here that no interrupt object means that I will always be
called at DISPATCH_LEVEL. In addition, if my HBA is a virtual device, then
I have to spoof the claim device SRBs that come the PORT driver/storage
class drivers. Is that correct?


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com