Section 1 - Scope and Purpose 3
Section 2 - Introduction 3
Section 3 - Storage Technology Version History 4
Section 4 - IOS General Architecture 5
Section 5 - SCSI (NT 4) Miniport Driver Topics 8
A brief summary of the SCSI Miniport initialization sequence 8
Windows NT IOCTL unavailable with Windows 95. 8
Older Windows NT miniport drivers 9
Unraveling the Scatter Gather Descriptor (SGD) Confusion 9
BufferAccessScsiPortControlled Flag Information. 10
How to uniquely identify a specific SCSI adapter in a DCB 11
Dynamic device removal/installation (hot-swapping) 12
ScsiPortSetBusDataByOffset 12
On obtaining both an I/O range and a memory window from within a SCSI miniport: 12
Mapping between physical and linear (logical) memory 13
CDROM and DVD CDROM Issues 13
Recommended MaximumTransferLength 16
Developing a Multifunction INF file 16
The Extended IOP Structure 16
Additional Differences in SCSI between Windows 95 and Windows NT 4 17
Miscellaneous Questions and Answers 18
Additional SCSI Reference Material 22
Section 6 - IOS Port Driver Topics 23
IOS Port Driver general theory of operation 23
IOP Serialization 24
What are the rules for making a R0 read/write call from an IOS port driver? 26
Section 7 - Debugging tools 30
Debug binaries 30
IOS dot commands 30
Additional debugging techniques 31
Glossary 33
Appendices 35
Appendix 1 – Additional resource materials 35
Appendix 2 - IOS internal data structure detail 37
IDA (IOS Data Area) 38
DVT (Driver Vector Table) 39
DDB (Driver Data Block) 40
DCB (Device Control Block) 41
IOP (Input/Output Packet) 44
SRB (SCSI_REQUEST_BLOCK) 45
Appendix 3 - IOS Registration Flowchart 46
Appendix 4 - IOS Layer Drivers 53
Appendix 5 - IOS Sample Code 55
Supplemental Listings 57
Listing 1 – PCD (Platform Configuration Data) Structures 57
Listing 2 – LDM (Logical Device Map) Structures 59
Listing 3 – DVT_feature_code Definitions 60
Listing 4 - Sample .IDUMP report 61
Supplemental Tables 69
Table 1 - SRB Functions 69
69
Table 2 – IOS Inquiry Type Table 70
Microsoft Corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. The furnishing of this document does not give you any license to the patents, trademarks, copyrights, or other intellectual property rights except as expressly provided in any written license agreement from Microsoft Corporation.
Microsoft does not make any representation or warranty regarding specifications in this document or any product or item developed based on these specifications. Microsoft disclaims all express and implied warranties, including but not limited to the implied warranties or merchantability, fitness for a particular purpose and freedom from infringement. Without limiting the generality of the foregoing, Microsoft does not make any warranty of any kind that any item developed based on these specifications, or any portion of a specification, will not infringe any copyright, patent, trade secret or other intellectual property right of any person or entity in any country. It is your responsibility to seek licenses for such intellectual property rights where appropriate. Microsoft shall not be liable for any damages arising out of or in connection with the use of these specifications, including liability for lost profit, business interruption, or any other damages whatsoever. Some states do not allow the exclusion or limitation of liability or consequential or incidental damages; the above limitation may not apply to you.
Microsoft, Windows, and Windows NT are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries. Other product and company names mentioned herein may be the trademarks of their respective owners.
© 2000 Microsoft Corporation. All rights reserved.
Section 1 - Scope and Purpose
This document applies to all versions of Windows 95 through Windows Me.