Hi,
How is it possible tp made the system assume bus driver driver as storage
port driver? I’ve wrote bus driver, devices appear and disappear just great
but my IRP_MJ_SCSI and IRP_MJ_DEVICE_CONTROL dispatch entries never get
called! I’ve tried both SCSI miniport .inf file and standard IDE .inf files
so the driver can be installed as SCSI miniport and as standard IDE disk
controller. But this does not help… Maybe I’m doing anything wrong? How
can I tell the system my driver is storage driver not just some bus
enumerator?
Regards,
Anton
CoolDev.Com - Toolkits for Network & Storage Software Developers
“KoolSockets” & “KoolStorage” - TDI Client, Kernel Sockets, SCSI miniport,
iSCSI
http://www.CoolDev.Com, xxxxx@CoolDev.Com,
xxxxx@CoolDev.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
How are you handling QueryDeviceRelations (to your FDO) and QueryID (to the
PDO’s you create) IRPS?
-daniel nemiroff
-----Original Message-----
From: xxxxx@hotmail.com
[mailto:xxxxx@hotmail.com]
Sent: Thursday, June 28, 2001 6:00 PM
To: NT Developers Interest List
Subject: [ntdev] SCSI port driver installation…
Hi,
How is it possible tp made the system assume bus driver driver as storage
port driver? I’ve wrote bus driver, devices appear and disappear just great
but my IRP_MJ_SCSI and IRP_MJ_DEVICE_CONTROL dispatch entries never get
called! I’ve tried both SCSI miniport .inf file and standard IDE .inf files
so the driver can be installed as SCSI miniport and as standard IDE disk
controller. But this does not help… Maybe I’m doing anything wrong? How
can I tell the system my driver is storage driver not just some bus
enumerator?
Regards,
Anton
CoolDev.Com - Toolkits for Network & Storage Software Developers
“KoolSockets” & “KoolStorage” - TDI Client, Kernel Sockets, SCSI miniport,
iSCSI
http://www.CoolDev.Com, xxxxx@CoolDev.Com,
xxxxx@CoolDev.com
You are currently subscribed to ntdev as: xxxxx@intel.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
I handle IRP_MN_QUERY_DEVICE_RELATIONS exactly as Toaster sample does.
BusRelastions. About IRP_MN_QUERY_ID -> I do not have any devices
enumerated in the very begning. Actually I genratet unique strings for
everything except “CompatibleIDs”. For this is provide L"GenDisk".
How are you handling QueryDeviceRelations (to your FDO) and QueryID (to the
PDO’s you create) IRPS?
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
Add GenDisk to the end of the HardwareId array. Then you want to make sure
the PDO’s you exported get their start parameter called. Before this can
happen the Class driver that’s going to attach above you must be loaded and
call it’s AddDevice routine. The class driver source code comes in the DDK,
so step into it.
-d
-----Original Message-----
From: xxxxx@hotmail.com
[mailto:xxxxx@hotmail.com]
Sent: Friday, June 29, 2001 7:51 AM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI port driver installation…
I handle IRP_MN_QUERY_DEVICE_RELATIONS exactly as Toaster sample does.
BusRelastions. About IRP_MN_QUERY_ID -> I do not have any devices
enumerated in the very begning. Actually I genratet unique strings for
everything except “CompatibleIDs”. For this is provide L"GenDisk".
How are you handling QueryDeviceRelations (to your FDO) and QueryID (to
the
PDO’s you create) IRPS?
You are currently subscribed to ntdev as: xxxxx@intel.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
Dan,
Does this mean IRP_MJ_SCSI & IRP_MJ_DEVICE_CONTROL of the SCSI port driver
are not called until somebody will not claim it’s child PDO?
Anton
Add GenDisk to the end of the HardwareId array. Then you want to make sure
the PDO’s you exported get their start parameter called. Before this can
happen the Class driver that’s going to attach above you must be loaded and
call it’s AddDevice routine. The class driver source code comes in the DDK,
so step into it.
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
Well not exactly, but if the PDOs are not identified by the system as
needing one of the scsi class FDO drivers such as disk or tape, then who
exactly would be sending IRP_MJ_SCSI? This IRP shows up at scsiport
generally because one of the scsi class drivers has attached an FDO to a PnP
enumerated PDO and is now attempting to communicate with the target device.
-----Original Message-----
From: xxxxx@hotmail.com [mailto:xxxxx@hotmail.com]
Sent: Friday, June 29, 2001 11:35 AM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI port driver installation…
Dan,
Does this mean IRP_MJ_SCSI & IRP_MJ_DEVICE_CONTROL of the SCSI port driver
are not called until somebody will not claim it’s child PDO?
Anton
Add GenDisk to the end of the HardwareId array. Then you want to make
sure the PDO’s you exported get their start parameter called. Before
this can happen the Class driver that’s going to attach above you must
be loaded and call it’s AddDevice routine. The class driver source
code comes in the DDK, so step into it.
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
Hi Dan & Mark & others who read/write this thread,
OK… Now I provide correct HardwareIDs and ComatibleIDs for my PDOs and
system recognizes them as SCSI disks (Actually not exactly as I can see
only two FiDOs attached to my PDO one from diskperf and other from PartMgs.
No FiDO from disk class driver itself. But that’s normal as I fail
SRB_FUNCTION_CLAIM_DEVICE in IRP_MJ_SCSI dispatch entry right now. I’ll fix
this soon…) I have other question. I/O buffer ptr. As I set flag
DO_DIRECT_IO when I create PDO then in IRP_MJ_SCSI to get the ptr to the
buffer I need to MmGetSystemAddressForMdlSafe( pIrp->MdlAddress). Is this
correct? I do not touch data buffer field in
pIoStackLocation->Parameters.Scsi.Srb?
Thanks for help,
Anton Kolomyeytsev
Well not exactly, but if the PDOs are not identified by the system as
needing one of the scsi class FDO drivers such as disk or tape, then who
exactly would be sending IRP_MJ_SCSI? This IRP shows up at scsiport
generally because one of the scsi class drivers has attached an FDO to a PnP
enumerated PDO and is now attempting to communicate with the target device.
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
Setting DO_DIRECT_IO is what the Microsoft ScsiPort driver does, but it
really doesn’t matter because this flag only applies to Read and Write IRPs.
All IRPs you’re going to get that require data transfer are going to come
from IRP_MJ_SCSI and IOCTLs. Yes, usually an MDL is associated with the
IRP. You need to look into the class driver routine ClassBuildRequest and
ClassReadWrite to understand more.
As far as extracting the correct databuffer from the MDL . . . well, it gets
pretty complicated for a ScsiPort. Unless you really have to I’d follow
Mark and David’s suggestions in using the in-the-box port drivers.
-daniel
-----Original Message-----
From: xxxxx@hotmail.com
[mailto:xxxxx@hotmail.com]
Sent: Friday, June 29, 2001 5:00 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI port driver installation…
Hi Dan & Mark & others who read/write this thread,
OK… Now I provide correct HardwareIDs and ComatibleIDs for my PDOs and
system recognizes them as SCSI disks (Actually not exactly as I can see
only two FiDOs attached to my PDO one from diskperf and other from PartMgs.
No FiDO from disk class driver itself. But that’s normal as I fail
SRB_FUNCTION_CLAIM_DEVICE in IRP_MJ_SCSI dispatch entry right now. I’ll fix
this soon…) I have other question. I/O buffer ptr. As I set flag
DO_DIRECT_IO when I create PDO then in IRP_MJ_SCSI to get the ptr to the
buffer I need to MmGetSystemAddressForMdlSafe( pIrp->MdlAddress). Is this
correct? I do not touch data buffer field in
pIoStackLocation->Parameters.Scsi.Srb?
Thanks for help,
Anton Kolomyeytsev
Well not exactly, but if the PDOs are not identified by the system as
needing one of the scsi class FDO drivers such as disk or tape, then who
exactly would be sending IRP_MJ_SCSI? This IRP shows up at scsiport
generally because one of the scsi class drivers has attached an FDO to a
PnP
enumerated PDO and is now attempting to communicate with the target
device.
You are currently subscribed to ntdev as: xxxxx@intel.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
Hi,
Setting DO_DIRECT_IO is what the Microsoft ScsiPort driver does, but it
really doesn’t matter because this flag only applies to Read and Write IRPs.
That’s why I’m asking…
All IRPs you’re going to get that require data transfer are going to come
from IRP_MJ_SCSI and IOCTLs. Yes, usually an MDL is associated with the
IRP. You need to look into the class driver routine ClassBuildRequest and
ClassReadWrite to understand more.
ClassSplitRequest()? I do not need to work with request breaking. See below
why.
As far as extracting the correct databuffer from the MDL . . . well, it gets
pretty complicated for a ScsiPort.
Not so if you work with virtual hardware (as I do) and you can handle any
data transfer. I’m just supplying 0xFFFFFFF and ( 0xFFFFFFFF / PAGE_SIZE )
as largest data transfer and number of pages I can handle and I get the
correct data buffer ptr just by gettting system address from MdlAddress
field or IRP.
Unless you really have to I’d follow
Mark and David’s suggestions in using the in-the-box port drivers.
“In-the-box” port driver? What’s this?
Regards,
Anton Kolomyeytsev
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