You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
5.2 KiB
134 lines
5.2 KiB
|
|
<HTML>
|
|
<HEAD>
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-
|
|
1252">
|
|
<META NAME="Generator" CONTENT="Microsoft Word 97">
|
|
<TITLE>PCIIDE
|
|
</TITLE>
|
|
</HEAD>
|
|
<BODY LINK="#0000ff">
|
|
|
|
<FONT FACE="Verdana" SIZE=5><H2>PCIIDE
|
|
</H2>
|
|
</FONT><FONT FACE="Verdana" SIZE=2>
|
|
<P><span style="color:#FF0000;font-size:10pt;font-family:Arial">[This is preliminary
|
|
documentation and subject to change.]</span></P>
|
|
|
|
<H3>SUMMARY</H3></FONT><FONT FACE="Verdana" SIZE=2><P>
|
|
|
|
|
|
|
|
|
|
This sample provides a generic example of a PCI IDE minidriver. The sample isolates vendor-specific code from the higher-level PCI IDE bus driver, much as SCSI minidrivers isolate code from the SCSI port driver.
|
|
|
|
See the Release Notes section for more information. <p>
|
|
This sample works on both x86 and Alpha platforms, and is 64-bit compliant. It builds with Microsoft® Visual C® 6.0. It does not implement Plug and Play or Power Management.
|
|
<p>
|
|
<H3>BUILDING THE SAMPLE</H3></FONT><FONT FACE="Verdana"
|
|
SIZE=2><P>
|
|
While in the \\Src\Storage\Miniide\Pciide directory, type <B>build</B>. A successful build will produce Pciide.sys.<p>
|
|
<B>Note</B>: The sample needs a callback routine that will allow the driver to select a transfer mode for data transfer. Once implemented, the callee will be able to choose to have I/O requests passed as
|
|
busmaster (DMA transfer) or PIO (Programmed I/O).<p>
|
|
|
|
<H3>RELEASE NOTES</H3></FONT><FONT FACE="Verdana" SIZE=2><P>
|
|
|
|
|
|
Note that the driver model for IDE devices has changed in Microsoft® Windows® 2000.
|
|
In Microsoft® Windows NT® 4.0, Atapi.sys, a SCSI miniport driver, links to Scsiport.sys.
|
|
In Windows NT 4.0, then, it is Scsiport and Atapi together that make up the SCSI port driver.
|
|
<P>
|
|
In Windows 2000, there is still a driver called Atapi.sys, but it is a complete SCSI port driver.
|
|
It does not link to any other driver.
|
|
<P>
|
|
The new driver model isolates the
|
|
non-standard PCI IDE controller hardware interface into this PCI IDE minidriver.
|
|
|
|
<H3>RESOURCES</H3></FONT><FONT FACE="Verdana" SIZE=2><P>
|
|
|
|
See the Kernel Mode Drivers information in the Windows 2000 DDK documentation, specifically the sections
|
|
on storage drivers in the Design Guide and in Reference. You will also find descriptions of the PciIdeX API's
|
|
in this documentation. Note that the minidriver cannot access the registry, nor
|
|
can it call other kernel mode APIs.
|
|
|
|
|
|
<p>
|
|
The PCI IDE mini driver returns its properties by using the following structure:<p>
|
|
|
|
IDE_CONTROLLER_PROPERTIES {<br>
|
|
<br>
|
|
|
|
ULONG Size; <br>
|
|
|
|
ULONG ExtensionSize; <br>
|
|
|
|
ULONG SupportedTransferMode[MAX_IDE_CHANNEL][MAX_IDE_DEVICE]; <br>
|
|
|
|
PCIIDE_CHANNEL_ENABLED PciIdeChannelEnabled; <br>
|
|
|
|
PCIIDE_SYNC_ACCESS_REQUIRED PciIdeSyncAccessRequired; <br>
|
|
|
|
PCIIDE_TRANSFER_MODE_SELECT_FUNC PciIdeTransferModeSelect; <br>
|
|
|
|
BOOLEAN IgnoreActiveBitForAtaDevice;<br>
|
|
BOOLEAN AlwaysClearBusMasterInterrupt;<br>
|
|
PCIIDE_USEDMA_FUNC PciIdeUseDma;<br>
|
|
ULONG AlignmentRequirement;<br>
|
|
|
|
<p>
|
|
} <p>
|
|
|
|
|
|
|
|
<b>Members</b><p>
|
|
<b>Size</b>
|
|
<blockquote>sizeof (IDE_CONTROLLER_PROPERTIES).</blockquote>
|
|
<b>ExtensionSize</b>
|
|
<blockquote>Indicates the amount of memory PCI IDE mini driver
|
|
needs for its private data.</blockquote>
|
|
<b>SupportedTransferMode</b>
|
|
<blockquote> Indicates all the data transfer modes the PCI IDE
|
|
controller supports.</blockquote>
|
|
<b>PciIdeChannelEnabled</b>
|
|
<blockquote>Callback to query whether an IDE channel is enabled. Note that these callbacks are
|
|
prototyped in Ide.h.</blockquote>
|
|
<b>PciIdeSyncAccessRequired</b>
|
|
<blockquote>Callback to query whether both IDE channels require
|
|
synchronized (one channel at a time) access.</blockquote>
|
|
<b>PciIdeTransferModeSelect</b>
|
|
<blockquote>Callback to select proper transfer modes for the
|
|
given devices.</blockquote>
|
|
<b>IgnoreActiveBitForAtaDevice</b>
|
|
<blockquote>Toggle to ignore busmaster
|
|
status active bit at the end of an ATA data transfer. Normally, it should be FALSE.</blockquote>
|
|
<b>AlwaysClearBusMasterInterrupt</b>
|
|
<blockquote>Toggle to always clear the busmaster interrupt on every interrupt generated by the device. Normally, it should be FALSE.</blockquote>
|
|
<b>PciIdeUseDma</b>
|
|
<blockquote>Callback to determine whether DMA should be used or not
|
|
called for every I/O.</blockquote>
|
|
<b>AlignmentRequirement</b>
|
|
|
|
<blockquote>Indicates if the miniport requires a different alignment.</blockquote>
|
|
|
|
<p>
|
|
<H3>CODE TOUR</H3>
|
|
<H4>File Manifest</H4>
|
|
</FONT><U><PRE>File		Description
|
|
</U>
|
|
Init.c	 Main code base
|
|
Pciide.h	Private header file
|
|
Msg.mc	 MC file
|
|
Pciide.rc Resource file
|
|
Makefile	Makefile
|
|
Sources	 Sources
|
|
<p>
|
|
</FONT><P ALIGN="CENTER"><A HREF="#top"><FONT FACE="Verdana" SIZE=2>Top of page</FONT></A><FONT FACE="Verdana" SIZE=2> </P></FONT>
|
|
<TABLE CELLSPACING=0 BORDER=0 WIDTH=624>
|
|
<TR><TD VALIGN="MIDDLE" BGCOLOR="#00ffff" HEIGHT=2>
|
|
<P></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<FONT FACE="MS Sans Serif" SIZE=1><P>© 1999 Microsoft Corporation</FONT><FONT FACE="Verdana" SIZE=2> </P></FONT></BODY>
|
|
</HTML>
|
|
|