Microsoft KB Archive/943295

= An update enables support for Storport virtual miniports in Windows Server 2003 =

Article ID: 943295

Article Last Modified on 12/5/2007

-

APPLIES TO


 * Microsoft Windows Server 2003, Standard Edition (32-bit x86)
 * Microsoft Windows Server 2003, Web Edition
 * Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
 * Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
 * Microsoft Windows Server 2003, Standard x64 Edition
 * Microsoft Windows Server 2003, Enterprise x64 Edition
 * Microsoft Windows Server 2003, Datacenter x64 Edition
 * Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
 * Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems

-



INTRODUCTION
The Storport driver now supports virtual miniports in Windows Server 2003 Service Pack 1 (SP1) and in later versions. An update is now available to enable this new feature.

Microsoft has defined the Storport Virtual Miniport (VMiniport) driver to extend the functionality of the Storport interfaces. Unlike physical miniports, virtual miniports can call Windows Driver Model (WDM) routines according to the WDM guidelines.

After you apply this update, miniports will no longer rely on the Storport driver to handle memory and to perform synchronization. Additionally, miniports will be able to handle I/O requests in new ways. These programming changes are targeted at technologies that include but that are not limited to the following:
 * iSCSI
 * Infiniband
 * Other non-standard storage interfaces that may appear in the future



Initialization of Storport Virtual Miniport drivers
The Storport Virtual Miniport driver has three stages of initialization. In the first stage, a miniport calls the StorPortInitialize routine by pointing to a VIRTUAL_HW_INITIALIZATION_DATA structure.

Storport Virtual Miniport routines
Storport Virtual Miniport drivers and Storport physical miniport drivers are equivalent in many ways. A physical miniport uses a physical host bus adapter (HBA). A virtual miniport differs from a physical miniport primarily in that the virtual miniport tells the Storport driver to assume that the miniport controls no hardware. In this case, the Storport driver does not obtain a direct memory access (DMA) object. Therefore, the Storport driver does not obtain an interrupt object, an interrupt lock, or non-cached storage.

Another obvious difference is that a virtual miniport can use all APIs that are documented in the Microsoft Windows Driver Kit (WDK). A physical miniport is expected to use only Storport APIs. However, a virtual miniport may also use other APIs. For example, a virtual miniport may also use the APIs that the system kernel provides, assuming the virtual miniport complies with the restrictions that apply to WDM drivers.

For more information about Storport support routines, visit the following Microsoft Developer Network Web site:

http://msdn2.microsoft.com/en-us/library/ms807277.aspx

For information about other kernel APIs, see the description of the relevant APIs in the WDK.

Storport Virtual Miniport driver structures
The VIRTUAL_HW_INITIALIZATION_DATA structure contains information that is specific to each virtual miniport driver. This structure is defined as follows: typedef struct _VIRTUAL_HW_INITIALIZATION_DATA { ULONG HwInitializationDataSize; INTERFACE_TYPE AdapterInterfaceType; PHW_INITIALIZE HwInitialize; PHW_STARTIO HwStartIo; PHW_INTERRUPT HwInterrupt; PVIRTUL_HW_FIND_ADAPTER HwFindAdapter; PHW_RESET_BUS HwResetBus; PHW_DMA_STARTED HwDmaStarted; PHW_ADAPTER_STATE HwAdapterState; ULONG DeviceExtensionSize; ULONG SpecificLuExtensionSize; ULONG SrbExtensionSize; ULONG NumberOfAccessRanges; PVOID Reserved; UCHAR MapBuffers; BOOLEAN NeedPhysicalAddresses; BOOLEAN TaggedQueuing; BOOLEAN AutoRequestSense; BOOLEAN MultipleRequestPerLu; BOOLEAN ReceiveEvent; USHORT VendorIdLength; PVOID VendorId; union { USHORT ReservedUshort; USHORT PortVersionFlags; }; USHORT DeviceIdLength; PVOID DeviceId; PHW_ADAPTER_CONTROL HwAdapterControl; PHW_BUILDIO HwBuildIo; PHW_FREE_ADAPTER_RESOURCES HwFreeAdapterResources; PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest; PHW_COMPLETE_SERVICE_IRP HwCompleteServiceIrp; PHW_INITIALIZE_TRACING HwInitializeTracing; PHW_CLEANUP_TRACING HwCleanupTracing; } VIRTUAL_HW_INITIALIZATION_DATA, *PVIRTUAL_HW_INITIALIZATION_DATA;

Virtual miniport I/O control codes
Virtual miniport clients use the IOCTL_MINIPORT_PROCESS_SERVICE_IRP I/O control code to communicate with a virtual miniport.

Update information
The following files are available for download from the Microsoft Download Center:

Windows Server 2003, x86-based versions
Download the Windows Server 2003, x86-based package now.

Windows Server 2003, Itanium-based versions
Download the Windows Server 2003, Itanium-based package now.

Windows Server 2003, x64-based versions
Download the Windows Server 2003, x64-based package now.

A supported feature that modifies the product's default behavior is now available from Microsoft. However, it is intended to modify only the behavior that this article describes. Apply it only to systems that specifically require it. This feature may receive additional testing. Therefore, if the system is not severely affected by the lack of this feature, we recommend that you wait for the next Windows Server 2003 service pack that contains this feature.

To obtain this feature immediately, contact Microsoft Customer Support Services. For a complete list of Microsoft Customer Support Services telephone numbers and information about support costs, visit the following Microsoft Web site:

http://support.microsoft.com/contactus/?ws=support

Prerequisites
To apply this update, you must have Windows Server 2003 SP1 or Windows Server 2003 Service Pack 2 (SP2) installed. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

889100 How to obtain the latest service pack for Windows Server 2003

Restart requirement
You must restart the computer after you apply this update.

Update replacement information
This update does not replace any other updates.

File information
The English version of this update has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.

Windows Server 2003, x64-based versions
