Leaked source code of windows server 2003
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.
|
|
<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>
|