The code sample shown above was enhanced on 03/11/11 to handle upper and lower case filename extension (e.g.  .inf  or  .INF  or  .Inf).

Download the DevPath.zip from the following SkyDrive:

link removed

NOTE: Select the "Download" link as the top left to the save DevPath.zip to your local computer.

Your welcome.

If you want, I can provide you with a zip file of the Visual Studio 2010 project.

The problem with the requirement for the DLL has been fixed by changing the project properties to statically link the MFC runtime and also statically link AdvAPI32.lib. As a result, the new DevPath.exe does not require any additional DLLs to run.

AdvAPI32.lib is part of the Windows SDK v7.1 (Downloaded the Windows SDK and only installed the x86 libraries).  I added the one line to the code for #pragma comment(lib,"AdvAPI32.Lib").

The latest C source code for DevPath.c is posted above.

I tested the new DevPath.exe with all of the core DriverPacks and also all of the 3rd party driverpacks. It works and the registry key value is properly set without encountering a size limit.

Does anybody want the compiled DevPath.exe?  Total size is 46KB.

Unfortunately, I'm not a VB programmer.

The new C program is using two Registry functions to create and set the registry key value.

These registry functions require the linking of Advapi32.lib.  I need to download the Windows SDK, which contains Advapi32.lib and it should be solved. Will let you know.

I have written the following C program as a replacement for the older DevPath.exe, which was written using AutoIT and VB.. but the source code doesn't exist.

This new DevPath.exe functions the same way as the old AutoIt/VisualBasic version of DevPath. It scans the supplied path for *.inf files and automatically sets the registry key value HKLM\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\DevicePath to the discovered list of driverpack folders that contain *.inf files.

The new version has a much larger string buffer size for handling the navigation of a large number of driverpack folders with corresponding *.inf files.

The same command is used to run it:

DevPath.exe C:\D

I compiled the following source code using "Microsoft Visual C++ 2010 Express" (The Express edition is free).  I could post the project file used for building it.

I initially encountered a problem with DevPath.exe that required the existence of MSVCR100.DLL on the windows computer. On a clean install of Windows, this MSVCR100.DLL does not exist. This problem was fixed by changing the project properties to statically linking the MFC runtime and also statically link AdvAPI32.lib, which is part of the Windows SDK v7.1 (Downloaded and installed the x86 libraries).  I added the one line to the code for #pragma comment(lib,"AdvAPI32.Lib")

Code was enhanced on 03/11/11 to handle upper and lower case filename extension (e.g.  .inf  or  .INF  or  .Inf)

#include <Windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <tchar.h>
#include <strsafe.h>

#pragma comment(lib, "AdvAPI32.Lib")


//------------------------------------------------------------------------------------------------------------------
// Globals...
//------------------------------------------------------------------------------------------------------------------
WIN32_FIND_DATA *fd;

#define DEVPATH_REGISTRY_VALUE_BUFFER 100000
#define DEVPATH_REGISTRY_KEY   "SOFTWARE\\Microsoft\\Windows\\CurrentVersion"
#define DEVPATH_REGISTRY_VALUE "DevicePath"

//------------------------------------------------------------------------------------------------------------------
// Protos...
//------------------------------------------------------------------------------------------------------------------
int     navigatepath(const char *path, char *registryvalue, BOOL recursive);
int     fixpath(const char *inpath, char *outpath);

//------------------------------------------------------------------------------------------------------------------
// navigatepath()
//------------------------------------------------------------------------------------------------------------------
int navigatepath(const char *_path, char *registryvalue, BOOL recursive)
{
  HANDLE fh;
  int    filecnt=0;
  int    filenamelen;
  char	 path[MAX_PATH];
  char	 tmppath[MAX_PATH];

  fd = malloc(sizeof(WIN32_FIND_DATA));

  fixpath(_path,path);
  strcat_s(path,MAX_PATH,"*");

  fh = FindFirstFile((LPCSTR) path,fd);

  if (fh != INVALID_HANDLE_VALUE)
  {
    do
    {
      if (!(fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
      {
        filenamelen = strlen( fd->cFileName );

        if (filenamelen >= 4)
        {
          if (fd->cFileName[filenamelen - 4] == '.' && (fd->cFileName[filenamelen - 3] == 'I' || fd->cFileName[filenamelen - 3] == 'i') && (fd->cFileName[filenamelen - 2] == 'N' || fd->cFileName[filenamelen - 2] == 'n') && (fd->cFileName[filenamelen - 1] == 'F' || fd->cFileName[filenamelen - 1] == 'f'))
          {
            filecnt++;
            break;
          }
        }
        
      }
    }
    while(FindNextFile(fh,fd));
  }

  if (filecnt)
  {
    strcat_s(registryvalue,DEVPATH_REGISTRY_VALUE_BUFFER,";");
    strcat_s(registryvalue,DEVPATH_REGISTRY_VALUE_BUFFER,_path);
  }

  fh = FindFirstFile((LPCSTR) path,fd);

  if (fh != INVALID_HANDLE_VALUE)
  {
    do
    {
      if (fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
      {
        if((0 != strcmp(fd->cFileName,".")) && (0 != strcmp(fd->cFileName,"..")))
        {
          fixpath(_path,tmppath);
          strcat_s(tmppath,MAX_PATH,fd->cFileName);

          if(recursive)
            navigatepath(tmppath, registryvalue, recursive);
        }
      }
    }
    while(FindNextFile(fh,fd));
  }

  
  FindClose(fh);

  return 0;
}

//------------------------------------------------------------------------------------------------------------------
// fixpath() - Adds \ to the end of a path if not present.
//------------------------------------------------------------------------------------------------------------------
int fixpath(const char *inpath, char *outpath)
{
  int   n=0;

  strcpy_s(outpath,MAX_PATH,inpath);

  while(inpath[n]) n++;

  if(inpath[n-1] != '\\')
  {
    strcat_s(outpath,MAX_PATH,"\\");
    return 1;
  }

  return 0;
}

//------------------------------------------------------------------------------------------------------------------
// Entry point...
//------------------------------------------------------------------------------------------------------------------

int main(int argc, char *argv[])
{
  int   recursive=1;
  char  registryvalue[DEVPATH_REGISTRY_VALUE_BUFFER];
  DWORD dwCategoryNum = 1;
  HKEY  hk;
  DWORD dwDisp;

  registryvalue[0] = 0;
  strcpy_s(registryvalue, DEVPATH_REGISTRY_VALUE_BUFFER, "%SystemRoot%\\Inf");

  if (argc == 1)
  {
    printf("Devpath.exe [drive:][path]\n\n");
    printf("DevPath.exe will scan [drive:][path] and all subfolders for the existence\n");
    printf("of *.inf file(s). It will set the registry key to the list of subfolders\n");
    printf("that contain *.inf file(s).\n");
    printf("HKLM %s REG_EXPAND_SZ %s\n",DEVPATH_REGISTRY_KEY,DEVPATH_REGISTRY_VALUE);
  }
  
  if (argc == 2)
  {
    navigatepath(argv[1], registryvalue, recursive);
  
    //printf("%s\n",registryvalue);
    //printf("string lenght of registryvalue = %d\n",strlen(registryvalue) );

    if ( RegCreateKeyEx( HKEY_LOCAL_MACHINE, TEXT(DEVPATH_REGISTRY_KEY), 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hk, &dwDisp))
    {
      printf("Could not create the registry key\n");
      return 0;
    }

    if ( RegSetValueEx( hk, TEXT(DEVPATH_REGISTRY_VALUE), 0, REG_EXPAND_SZ, (LPBYTE) registryvalue, (DWORD) (lstrlen(registryvalue)+1)*sizeof(TCHAR)))
    {
      printf("Could not set the registry value for \"DevicePath\"\n");
    }
  }
  
  return 0;
}

Thanks for the response.

I won't use the monitors and bluetooth driverpacks.

However, I would like to help solve the limitation with DrivePath.exe so that we don't encounter a problem as the core driverpacks continue to grow.

Would you like the help?

I'm using method 2 for Windows XP install with the latest version of base.

I'm using the following driverpacks:
Chipset
CPU
Graphics A
Graphics B
Graphics C
LAN
Mass Storage
Sound A
Sound B
WLAN

I'm also using the following 3rd party driverpacks:
Bluetooth
Monitors

During the execution of presetup.cmd, all of the driverpacks are properly extracted/unzipped to %SystemDrive%. The DevPath.exe %SystemDrive%\D command runs, but it does not set the registry key.

In order to test, I manually extracted the driverpacks to C:\D and manually ran DevPath.exe... this also confirmed that the registry key does not get set.

In order to test further, I manually removed one of the "big" subfolders C:\D\L and manually ran DevPath.exe. After doing this, the registry key was correctly set. In order to test further, I put the C:\D\L back and removed one of the other driverpack subfolders C:\D\S. After doing this, the registry key was set properly.

Looks like the problem is being caused by a string size limit within DevPath.exe. It can not generate the string for a huge subfolder structure.

The problem is NOT with the registry key lenght. The registry key can handle a much longer string. I confirmed this by manually cutting and pasting a duplicate of the long string to the end of the string... several times.

Does anyone have an updated version of DevPath.exe that would get around this limit?

Can anyone share the source code for DevPath.exe in order to debug further?

I uploaded the archive file to skydrive. This archive only contains the intel folders, which you merge into your evolving driver pack B.

http://cid-80dd4dbd3ee9d90d.skydrive.li … |_intel.7z

Thanks

@Jake

Where and how would you like for me to upload the file?

Colliding hardware ids exist in the inf files for the Intel drivers.

A new device driver version 14.33.1 (6.14.10.4935) is available for the Intel Graphics Media Accelerator:
http://downloadcenter.intel.com/filter_ … bmit=Go%21

I downloaded the zip file from the web page and extracted to a new folder D\G\I8
The reason for creating a new folder called I8 is because this driver replaces only some of the hardware ids within D\G\I1 and I1 is still needed.

However, the inf files within I1, I2, I3 and I7 have colliding hardware ids. The collisions existed before introducing this newer driver. As a result, the following changes need to be made to the inf files by commenting out the conflicting hardware ids:

D\G\I1\igxp32.inf   (6.14.10.4906)

[Intel.Mfg]

%iLPGD0% = i945G0, PCI\VEN_8086&DEV_2772
%iLPGD1% = i945G1, PCI\VEN_8086&DEV_2776
%iCLGD0% = i945GM0, PCI\VEN_8086&DEV_27A2
%iCLGD1% = i945GM1, PCI\VEN_8086&DEV_27A6
%iCLGE0% = i945GM0, PCI\VEN_8086&DEV_27AE
; %iBWGX0% = iBWG0, PCI\VEN_8086&DEV_2982
; %iBWGX1% = iBWG1, PCI\VEN_8086&DEV_2983
; %iBWGQ0% = iBWG0, PCI\VEN_8086&DEV_2992
; %iBWGQ1% = iBWG1, PCI\VEN_8086&DEV_2993
; %iBWGC0% = iBWG0, PCI\VEN_8086&DEV_29A2
; %iBWGC1% = iBWG1, PCI\VEN_8086&DEV_29A3
; %iBWGZ0% = iBWG0, PCI\VEN_8086&DEV_2972
; %iBWGZ1% = iBWG1, PCI\VEN_8086&DEV_2973
; %iCRGD0% = iCRG0, PCI\VEN_8086&DEV_2A02
; %iCRGD1% = iCRG1, PCI\VEN_8086&DEV_2A03
; %iCRGE0% = iCRG0, PCI\VEN_8086&DEV_2A12
; %iCRGE1% = iCRG1, PCI\VEN_8086&DEV_2A13
; %iBLBG0% = iBLB0, PCI\VEN_8086&DEV_29C2
; %iBLBG1% = iBLB1, PCI\VEN_8086&DEV_29C3
; %iBLBQ0% = iBLB0, PCI\VEN_8086&DEV_29B2
; %iBLBQ1% = iBLB1, PCI\VEN_8086&DEV_29B3
; %iBLBQC0% = iBLB0, PCI\VEN_8086&DEV_29D2
; %iBLBQC1% = iBLB1, PCI\VEN_8086&DEV_29D3

D\G\I2\ialmnt5.inf

[Intel.Mfg]   6.14.10.4497
%iMGM%  = i852GM,  PCI\VEN_8086&DEV_3582
; %iGDGD0% = i915G0, PCI\VEN_8086&DEV_2582
; %iGDGD1% = i915G1, PCI\VEN_8086&DEV_2782
; %iALVD0% = i915GM0, PCI\VEN_8086&DEV_2592
; %iALVD1% = i915GM1, PCI\VEN_8086&DEV_2792
; %iLPGD0% = i945G0, PCI\VEN_8086&DEV_2772
; %iLPGD1% = i945G1, PCI\VEN_8086&DEV_2776
; %iCLGD0% = i945GM0, PCI\VEN_8086&DEV_27A2
; %iCLGD1% = i945GM1, PCI\VEN_8086&DEV_27A6

D\G\I3\igxp32.inf   6.14.10.4764

[Intel.Mfg]

%iGDGD0% = i915G0, PCI\VEN_8086&DEV_2582
%iGDGD1% = i915G1, PCI\VEN_8086&DEV_2782
%iALVD0% = i915GM0, PCI\VEN_8086&DEV_2592
%iALVD1% = i915GM1, PCI\VEN_8086&DEV_2792

D\G\I4   no changes

D\G\I5   no changes

D\G\I6   no changes

D\G\I7\ialmnt5.inf    6.14.10.4396

[Intel.Mfg]
; %iMGM%  = i852GM,  PCI\VEN_8086&DEV_3582
%iSDG%	 = i865G, PCI\VEN_8086&DEV_2572
; %iGDGD0% = i915G0, PCI\VEN_8086&DEV_2582
; %iGDGD1% = i915G1, PCI\VEN_8086&DEV_2782
; %iALVD0% = i915GM0, PCI\VEN_8086&DEV_2592
; %iALVD1% = i915GM1, PCI\VEN_8086&DEV_2792
; %iLPGD0% = i945G0, PCI\VEN_8086&DEV_2772
; %iLPGD1% = i945G1, PCI\VEN_8086&DEV_2776

In addition, the web page that lists the drivers included in Graphics B would need to be updated:

D\G\I1 82945G Express, Mobil Intel 945 Express
D\G\I2 82852/82855 GM/GME
D\G\I3 82915G/GV/910GL Express, Mobil Intel 915GM/GMS, 910GML Express
D\G\I7 82865G
D\G\I8 G35/G33/G31, Q35/Q33. Q965/Q963, 946GZ, Mobil 965

Friendly reminder.   Hope it made it into 7.12.

The current MassStorage contains the 11/17/2005,1.21.08.00 "Dell SAS 5x (Windows Server 2003 32-bit) driver in the D\2 Folder. This driver is for the LSI_SAS 1064 controllers.

The IBM System X Blade HS21XM also utilizes the LSI_SAS 1064 controller.

An updated version of the driver 10/18/2006,1.21.28.00 is available from the IBM site. This updated version also supports the device ids found in the Dell servers.
http://www-304.ibm.com/jct01004c/system … nd=5000020

Based on the new driver, the DriverPack_MassStorage_wnt5_x86-32.ini would also change to include the newer set of hwids:

ms_1_hwids="PCI\VEN_1000&DEV_0050,PCI\VEN_1000&DEV_0054,PCI\VEN_1000&DEV_0058,PCI\VEN_1000&DEV_005E,
PCI\VEN_1000&DEV_0056,PCI\VEN_1000&DEV_005A,PCI\VEN_1000&DEV_0062"

Since the updated version is available from IBM, maybe the folder should change from D\2 to I\7 (new folder).  Or maybe a new LSI folder, since it covers Dell and IBM systems.

An updated version of the JMicron JMB36X RAID Controller is available - v1.17.28 WHQL
ftp://driver.jmicron.com.tw/jmb36x/Win2k_xp_Vista/

Thanks

When the mass storage drivers pack is extracted, the following folders exist for nVidia mass storage drivers:
M\N\4\I
M\N\4\R
M\N\4INTEL\I
M\N\4INTEL\R
M\N\123
M\N\590SLI\I
M\N\590SLI\R
M\N\TM

The DriverPack_MassStorage_winnt5_x86-32.ini only references/uses the M\N\TM folder.

Thus, why do all of the other folders exist?

@Jaak

Your are right and there is no reason to rename the sys files.  I renamed them during my isolated testing and comparison with the other mraid35x.sys drivers.

Thanks

The following is a request to add the following driver to the mass storage controller pack:

Dell PowerEdge RAID Controller 4e/Di, 4e/Si, 4e/DC, 4/DC, 4/SC, 3/QC, 3/DC, 3/DCL, 3/SC, PERC 4/Di, PERC 4e/Di, and CERC ATA100/4CH, Device Driver for Windows Server 2003. Windows 2003 Version 6.46.2.32

Driver 6.46.2.32 is available at the following web page:
http://support.dell.com/support/downloa … eid=149170


1) Create D\M\L\6 folder

2) Download the driver package

3) Extract the file to a working folder

4a) Copy MRAID2K.sys to D\M\L\6 and rename it to MR2kdell.sys
4b) Copy MRAID35x.sys to D\M\L\6 and rename it to MRAIdell.sys
4c) Copy nodef.inf to D\M\L\6
4d) Copy Oemsetup.inf to D\M\L\6
4e) Copy percraid.cat to D\M\L\6

5a) Modify Oemsetup.inf
5b) change/replace all MRAID2K.sys to MR2kdell.sys
5c) change/replace all MRAID35x.sys to MRAIdell.sys

6) Modify DriverPack_MassStorage_wnt5_x86-32.ini

[L-6]
ms_count=1
ms_1_deviceName="LSI Logic Dell Perc RAID Driver (Win2003)"
ms_1_tag="mraidell"
ms_1_SysFile="mraidell.sys"
ms_1_hwids="PCI\VEN_8086&DEV_1960&SUBSYS_11121111,PCI\VEN_8086&DEV_1960&SUBSYS_11111111,PCI\VEN_8086&DEV_1960&SUBSYS_09A0101E,PCI\VEN_8086&DEV_1960&SUBSYS_11111028,PCI\VEN_8086&DEV_1960&SUBSYS_04671028,PCI\VEN_101E&DEV_1960&SUBSYS_04711028,PCI\VEN_101E&DEV_1960&SUBSYS_04931028,PCI\VEN_101E&DEV_1960&SUBSYS_04751028,PCI\VEN_1028&DEV_000E&SUBSYS_01231028,PCI\VEN_1028&DEV_000F&SUBSYS_013B1028,PCI\VEN_1028&DEV_000F&SUBSYS_014A1028,PCI\VEN_1028&DEV_000F&SUBSYS_014C1028,PCI\VEN_1028&DEV_000F&SUBSYS_014D1028,PCI\VEN_101E&DEV_1960&SUBSYS_05111028,PCI\VEN_1000&DEV_1960&SUBSYS_05181028,PCI\VEN_1000&DEV_1960&SUBSYS_05201028,PCI\VEN_1028&DEV_0013&SUBSYS_016C1028,PCI\VEN_1028&DEV_0013&SUBSYS_016D1028,PCI\VEN_1028&DEV_0013&SUBSYS_016E1028,PCI\VEN_1028&DEV_0013&SUBSYS_016F1028,PCI\VEN_1028&DEV_0013&SUBSYS_01701028,PCI\VEN_1000&DEV_0408&SUBSYS_00011028,PCI\VEN_1000&DEV_0408&SUBSYS_00021028"
ms_1_isBusExtender=false
ms_1_exc_skipIfOS="w2k,wxp"
ms_1_exc_replaceIfOS="w2k3"

Special Note: The modifications to the .ini file only enable the Windows 2003 version of the driver for a Windows 2003 os.

@jtdoom

Hi jtdoom,

Like a great bottle of wine, sometimes you have to wait for perfection.
Thanks for revisiting and updating the driver pack with the newer version of the IBM drivers.

The Intel Active Management Technology Serial Over LAN (SOL) device is contained on the Intel Desktop Boards DQ965CO, DQ965GF, and DQ965WC.

The Intel Active Management Technology Serial Over LAN (SOL) Driver is available at the following web page:
http://downloadcenter.intel.com/Detail_ … p;lang=eng

Version 5.2.0.1019   11/07/2006

This driver enables the remote display of managed client's user interface through management console and emulates serial communication over a standard network connection.

After downloading the device driver, the extracted file will contain a "SOLinf" folder. This folder contains the mesrl.cat, mesrl.inf, mesrle.cat and mesrle.inf files.

At a minimum, can the "Serial Over LAN" driver be added to the LAN Driver Pack?

As a bonus, can the silent install of the setup.exe be added to the DriverPack_LAN_wnt5_x86-32.ini?  The setup.exe can install in the Local Management Service (LMS).

1) It is unfortunate that the ini files are thrash.  I would really like to see them done correctly so that we can all learn from the mistakes. More importantly, we need to keep it working smile

2) I added [REQ] to the topic title.

I would like to join the team. In addition to Mass Storage drivers, I also have more drivers for graphics, sound and security chipsets. Also have enhancements for DpsFnshr.exe. How do I become a member?

Thanks for the thanks.

@jtdoom

Thanks for the detailed information on the .ini tags.
As a suggestion, can you place this information as comments in the top of the .ini file?

Thanks again!

Details about the new D\M\I folders

Folder D\M\I\1 contains
v7.10.18
IBM ServeRAID 4H Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 3H/3L Controller  (Windows 2000/XP 32-bit)
IBM ServeRAID II Controller (Windows 2000/XP 32-bit)

Folder D\M\I\2 contains
v7.10.18
IBM ServeRAID 4M Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 4L Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 4Mx Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 4Lx Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 5i Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 6M Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 6i Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 7k Controller (Windows 2000/XP 32-bit)

Folder D\M\I\3 contains
v7.12.11
IBM ServeRAID 4Mx Controller (Windows 2003 32-bit)
IBM ServeRAID 4Lx Controller (Windows 2003 32-bit)
IBM ServeRAID 5i Controller (Windows 2003 32-bit)
IBM ServeRAID 6M Controller (Windows 2003 32-bit)
IBM ServeRAID 6i Controller (Windows 2003 32-bit)
IBM ServeRAID 7k Controller (Windows 2003 32-bit)

Folder D\M\I\4 contains
v5.2.0.11829
IBM ServeRAID 8i Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 8k/8k-l Controller (Windows 2000/XP 32-bit)
IBM ServeRAID 8s Controller (Windows 2000/XP 32-bit)
Adaptec SAS/SATA-II RAID Controller (Windows 2000/XP 32-bit)
Adaptec SATA RAID AAR-2420SA Controller (Windows 2000/XP 32-bit)
Adaptec SATA RAID AAR-2620SA Controller (Windows 2000/XP 32-bit)
Adaptec SATA RAID AAR-2820SA Controller (Windows 2000/XP 32-bit)
ICP SATA RAID ICP9047MA Controller (Windows 2000/XP 32-bit)
ICP SATA RAID ICP9067MA Controller (Windows 2000/XP 32-bit)
ICP SATA RAID ICP9087MA Controller (Windows 2000/XP 32-bit)
Adaptec RAID 4000 (Windows 2000/XP 32-bit)
Adaptec SAS RAID 4800SAS Controller (Windows 2000/XP 32-bit)
Adaptec SAS RAID 4805SAS Controller (Windows 2000/XP 32-bit)
ICP SAS RAID ICP9085LI Controller (Windows 2000/XP 32-bit)
ICP SAS RAID ICP5085BR Controller (Windows 2000/XP 32-bit)
Adaptec RAID 3800 (Windows 2000/XP 32-bit)
ICP SAS RAID ICP5445AU Controller (Windows 2000/XP 32-bit)
Adaptec RAID 1800 (Windows 2000/XP 32-bit)
Adaptec RAID 3805 (Windows 2000/XP 32-bit)
ICP SAS RAID ICP5085AU Controller (Windows 2000/XP 32-bit)
Adaptec RAID 2400 (Windows 2000/XP 32-bit)
ICP SAS RAID ICP5045AL Controller (Windows 2000/XP 32-bit)
Adaptec RAID 3400 (Windows 2000/XP 32-bit)
ICP SAS RAID ICP5045AU Controller (Windows 2000/XP 32-bit)
Adaptec RAID 5800 (Windows 2000/XP 32-bit)
Adaptec RAID 5805 (Windows 2000/XP 32-bit)
Adaptec RAID 5808 (Windows 2000/XP 32-bit)
Adaptec RAID ARK-1000/8 Controller (Windows 2000/XP 32-bit)
AOC-USAS1-I8i RAID Controller (Windows 2000/XP 32-bit)
AOC-USAS1-I4i RAID Controller (Windows 2000/XP 32-bit)
Adaptec SAS/SATA-II RAID Miniport Driver (Windows 2000/XP 32-bit)

Folder D\M\I\5 contains
v5.2.0.11829
IBM ServeRAID 8i Controller (Windows 2003 32-bit)
IBM ServeRAID 8k/8k-l Controller (Windows 2003 32-bit)
IBM ServeRAID 8s Controller (Windows 2003 32-bit)
Adaptec SAS/SATA-II RAID Controller (Windows 2003 32-bit)
Adaptec SATA RAID AAR-2420SA Controller (Windows 2003 32-bit)
Adaptec SATA RAID AAR-2620SA Controller (Windows 2003 32-bit)
Adaptec SATA RAID AAR-2820SA Controller (Windows 2003 32-bit)
ICP SATA RAID ICP9047MA Controller (Windows 2003 32-bit)
ICP SATA RAID ICP9067MA Controller (Windows 2003 32-bit)
ICP SATA RAID ICP9087MA Controller (Windows 2003 32-bit)
Adaptec RAID 4000 (Windows 2003 32-bit)
Adaptec SAS RAID 4800SAS Controller (Windows 2003 32-bit)
Adaptec SAS RAID 4805SAS Controller (Windows 2003 32-bit)
ICP SAS RAID ICP9085LI Controller (Windows 2003 32-bit)
ICP SAS RAID ICP5085BR Controller (Windows 2003 32-bit)
Adaptec RAID 3800 (Windows 2003 32-bit)
ICP SAS RAID ICP5445AU Controller (Windows 2003 32-bit)
Adaptec RAID 1800 (Windows 2003 32-bit)
Adaptec RAID 3805 (Windows 2003 32-bit)
ICP SAS RAID ICP5085AU Controller (Windows 2003 32-bit)
Adaptec RAID 2400 (Windows 2003 32-bit)
ICP SAS RAID ICP5045AL Controller (Windows 2003 32-bit)
Adaptec RAID 3400 (Windows 2003 32-bit)
ICP SAS RAID ICP5045AU Controller (Windows 2003 32-bit)
Adaptec RAID 5800 (Windows 2003 32-bit)
Adaptec RAID 5805 (Windows 2003 32-bit)
Adaptec RAID 5808 (Windows 2003 32-bit)
Adaptec RAID ARK-1000/8 Controller (Windows 2003 32-bit)
AOC-USAS1-I8i RAID Controller (Windows 2003 32-bit)
AOC-USAS1-I4i RAID Controller (Windows 2003 32-bit)
Adaptec SAS/SATA-II RAID Miniport Driver (Windows 2003 32-bit)

Folder D\M\I\6 contains
v1.2.5929.0 06/28/2006
IBM ServeRAID 8e SAS/SATA Adapter (Windows 2000/XP/2003 32-bit)
Adaptec ASC-48300 SAS/SATA Host Adapter (Windows 2000/XP/2003 32-bit)
Adaptec COMSTOCK SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec ASC-48300 SAS/SATA Host Adapter (Windows 2000/XP/2003 32-bit)
Adaptec AIC-9410w SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec AIC-9410w SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec ASC-44300 SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec ASC-44300 SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec ASC-58300 SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec ASC-58300 SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec AIC-9405 SAS/SATA Controller (Windows 2000/XP/2003 32-bit)
Adaptec AIC-9405 SAS/SATA Controller (Windows 2000/XP/2003 32-bit)

DriverPack Mass Storage 7.04 currently contains two older versions of the device drivers for the IBM ServeRAID Controllers.
Old 1) IBM ServeRAID 7.00.14 ipsraidn based ServeRAID Adapters for Windows 2000 and Windows XP
Folder D\M\I\1
Section [I-1] in DriverPack_MassStorage_wnt5_x86-32.ini
NOTE: This driver is not intended for Windows 2003 and the corrections are listed below

Old 2) IBM ServeRAID 7.00.14 960 i960-based ServeRAID Adapters for Windows 2000 and Windows XP
Folder D\M\I\2
Section [I-2] in DriverPack_MassStorage_wnt5_x86-32.ini
NOTE: This driver is not intended for Windows 2003 and the corrections are listed below

The updated device drivers are available from the following web page.
http://www-304.ibm.com/jct01004c/system … nd=5000008

If you like, I can e-mail or FTP the newer version of the D\M\I folder

1) Remove the current D\M\I\1 folder and remove the current [I-1} section

2) Remove the current D\M\I\2 folder and remove the current [I-2] section

3) IBM ServeRAID v7.12.11 ipsraidn based ServeRAID Adapters for Windows 2000 and Windows XP
3.1) Download 39y4887.exe from
http://www-304.ibm.com/jct01004c/system … nd=5000008
3.2) Place a blank floppy in your A: drive and run 39y4887.exe. This will create a floppy with the device driver.
3.3) Create a new folder D\M\I\1
3.4) Copy the contents of A:\Windows\win2k_xp\scsi\ppcdrvr to D\M\I\1
3.5) Create a new [I-1] section:

4) IBM ServeRAID v7.12.11 i960-based ServeRAID Adapters for Windows 2000 and Windows XP
4.1) Download 39y4887.exe from
http://www-304.ibm.com/jct01004c/system … nd=5000008
4.2) Place a blank floppy in your A: drive and run 39y4887.exe. This will create a floppy with the device driver.
4.3) Create a new folder D\M\I\2
4.4) Copy the contents of A:\Windows\win2k_xp\scsi\ivdrvr to D\M\I\2
4.5) Create a new [I-2] section:

5) IBM ServeRAID v7.12.11 i960-based ServeRAID Adapters for Windows 2003
5.1)Download ibm_dd_ips_7.12.11_win2k3_i386.zip from
http://www-304.ibm.com/jct01004c/system … nd=5000008
5.2) Extract the contents of the downloaded zip file
5.3) Create a new folder D\M\I\3
5.4) Copy the unzipped files to D\M\I\3
5.5) Create a new [I-3] section

Question: From steps 4 and 5 above, the IBM ServeRAID v7.12.11 i960 driver in step uses the name "nfrd960.sys" for Windows 2000/XP. In step 5, the i960 driver also uses the name "nfrd960.sys" for Windows 2003.  Should we rename nfrd960.sys from step 5 to something else?  Or, is this ok because the .ini file states the skipIfOS values and [I-2] and [I-3] will not be used at the same time?

6) IBM ServeRAID v8.40 8i 8k 8k-l SAS-SATA Adapters for Windows 2000/XP
6.1) Download ibm_dd_aacraid_5.2.0.11829_windows_32-64.exe from
http://www-304.ibm.com/jct01004c/system … nd=5000008
6.2) Extract the contents of the downloaded .exe file
6.3) Create a new folder D\M\I\4
6.4) Copy the unzipped folder \image\disk1\2000-XP to D\M\I\4
6.5) Create a new [I-4] section

7) IBM ServeRAID v8.40 8i 8k 8k-l SAS-SATA Adapters for Windows 2003
7.1) Download ibm_dd_aacraid_5.2.0.11829_windows_32-64.exe from
http://www-304.ibm.com/jct01004c/system … nd=5000008
7.2) Extract the contents of the downloaded .exe file
7.3) Create a new folder D\M\I\5
7.4) Copy the unzipped folder \image\disk1\2003-i386 to D\M\I\5
7.5) Create a new [I-5] section

8) IBM ServeRAID v1.2.5929 8e Adapters for Windows 2000/XP/2003
8.1) Download ibm_dd_hradpxx_1.2.5929_windows_i386.zip from
http://www-304.ibm.com/jct01004c/system … nd=5000008
8.2) Extract the contents of the downloaded .zip file
8.3) Create a new folder D\M\I\6
8.4) Copy the unzipped folder \adp94xx to D\M\I\6
8.5) Create a new [I-6] section


[I-1]
ms_count 			= 1
ms_1_deviceName		= "IBM ipsraidn ServeRAID Adapters (Windows 2000/XP 32-bit)"
ms_1_tag			= "ipsraidn"
ms_1_sysFile		= "ipsraidn.sys"
ms_1_hwids			= "PCI\VEN_1014&DEV_002E&SUBSYS_022E1014&REV_10,PCI\VEN_1014&DEV_002E&SUBSYS_002E1014&REV_0D,PCI\VEN_1014&DEV_002E&SUBSYS_00000000&REV_04,PCI\VEN_1014&DEV_002E&SUBSYS_00000000&REV_03,PCI\VEN_1014&DEV_002E&SUBSYS_00000000&REV_02"
ms_1_isBusExtender	= false
ms_1_exc_disableIfOS= "w2k"
ms_1_exc_replaceIfOS= "w2k"
ms_1_exc_skipIfOS= "w2k3"


[I-2]
ms_count 			= 1
ms_1_deviceName		= "IBM i960-based IBM ServeRAID Adapters (Windows 2000/XP 32-bit)"
ms_1_tag			= "nfrd960"
ms_1_sysFile		= "nfrd960.sys"
ms_1_hwids			= "PCI\VEN_1014&DEV_01BD&SUBSYS_01BE1014,PCI\VEN_1014&DEV_01BD&SUBSYS_01BF1014,PCI\VEN_1014&DEV_01BD&SUBSYS_02081014,PCI\VEN_1014&DEV_01BD&SUBSYS_020E1014,PCI\VEN_1014&DEV_01BD&SUBSYS_02591014,PCI\VEN_9005&DEV_0250&SUBSYS_02791014,PCI\VEN_9005&DEV_0250&SUBSYS_028C1014,PCI\VEN_9005&DEV_0250&SUBSYS_028E1014"
ms_1_isBusExtender	= false
ms_1_exc_disableIfOS= "w2k"
ms_1_exc_skipIfOS= "w2k3"

[I-3]
ms_count 			= 1
ms_1_deviceName		= "IBM i960-based IBM ServeRAID Adapters (Windows 2003 32-bit)"
ms_1_tag			= "nfrd960"
ms_1_sysFile		= "nfrd960.sys"
ms_1_hwids			= "PCI\VEN_1014&DEV_01BD&SUBSYS_02081014,PCI\VEN_1014&DEV_01BD&SUBSYS_020E1014,PCI\VEN_1014&DEV_01BD&SUBSYS_02591014,PCI\VEN_9005&DEV_0250&SUBSYS_02791014,PCI\VEN_9005&DEV_0250&SUBSYS_028C1014,PCI\VEN_9005&DEV_0250&SUBSYS_028E1014"
ms_1_isBusExtender	= false
ms_1_exc_replaceIfOS= "w2k3"
ms_1_exc_skipIfOS= "w2k,wxp"

[I-4]
ms_count 			= 1
ms_1_deviceName		= "IBM ServeRAID 8i 8k 8k-l Adapters (Windows 2000/XP 32-bit)"
ms_1_tag			= "aacsas"
ms_1_sysFile		= "aacsas.sys"
ms_1_hwids			= "PCI\VEN_9005&DEV_0285&SUBSYS_02f21014,PCI\VEN_9005&DEV_0286&SUBSYS_95801014,PCI\VEN_9005&DEV_0285&SUBSYS_034D1014,PCI\VEN_9005&DEV_0286&SUBSYS_029D9005,PCI\VEN_9005&DEV_0286&SUBSYS_029C9005,PCI\VEN_9005&DEV_0286&SUBSYS_029B9005,PCI\VEN_9005&DEV_0286&SUBSYS_02A09005,PCI\VEN_9005&DEV_0286&SUBSYS_02A69005,PCI\VEN_9005&DEV_0286&SUBSYS_02A19005,PCI\VEN_9005&DEV_0285&SUBSYS_02989005,PCI\VEN_9005&DEV_0285&SUBSYS_02999005,PCI\VEN_9005&DEV_0285&SUBSYS_029A9005,PCI\VEN_9005&DEV_0285&SUBSYS_02A49005,PCI\VEN_9005&DEV_0285&SUBSYS_02A59005,PCI\VEN_9005&DEV_0286&SUBSYS_02A29005,PCI\VEN_9005&DEV_0286&SUBSYS_02A39005,PCI\VEN_9005&DEV_0286&SUBSYS_02AC9005,PCI\VEN_9005&DEV_0286&SUBSYS_02A79005,PCI\VEN_9005&DEV_0286&SUBSYS_02A99005,PCI\VEN_9005&DEV_0286&SUBSYS_02B39005,PCI\VEN_9005&DEV_0286&SUBSYS_02B49005,PCI\VEN_9005&DEV_0286&SUBSYS_02A89005,PCI\VEN_9005&DEV_0286&SUBSYS_02AA9005,PCI\VEN_9005&DEV_0285&SUBSYS_02B59005,PCI\VEN_9005&DEV_0285&SUBSYS_02B69005,PCI\VEN_9005&DEV_0285&SUBSYS_02B79005,PCI\VEN_9005&DEV_0285&SUBSYS_02B09005,PCI\VEN_9005&DEV_0285&SUBSYS_02B515D9,PCI\VEN_9005&DEV_0285&SUBSYS_02B615D9"
ms_1_isBusExtender	= false
ms_1_exc_disableIfOS= "w2k"
ms_1_exc_skipIfOS	= "w2k3"

[I-5]
ms_count 			= 1
ms_1_deviceName		= "IBM ServeRAID 8i 8k 8k-l SAS-SATA Adapters (Windows 2003 32-bit)"
ms_1_tag			= "arcsas"
ms_1_sysFile		= "arcsas.sys"
ms_1_hwids			= "PCI\VEN_9005&DEV_0285&SUBSYS_02f21014,PCI\VEN_9005&DEV_0286&SUBSYS_95801014,PCI\VEN_9005&DEV_0285&SUBSYS_034D1014,PCI\VEN_9005&DEV_0286&SUBSYS_029D9005,PCI\VEN_9005&DEV_0286&SUBSYS_029C9005,PCI\VEN_9005&DEV_0286&SUBSYS_029B9005,PCI\VEN_9005&DEV_0286&SUBSYS_02A09005,PCI\VEN_9005&DEV_0286&SUBSYS_02A69005,PCI\VEN_9005&DEV_0286&SUBSYS_02A19005,PCI\VEN_9005&DEV_0285&SUBSYS_02989005,PCI\VEN_9005&DEV_0285&SUBSYS_02999005,PCI\VEN_9005&DEV_0285&SUBSYS_029A9005,PCI\VEN_9005&DEV_0285&SUBSYS_02A49005,PCI\VEN_9005&DEV_0285&SUBSYS_02A59005,PCI\VEN_9005&DEV_0286&SUBSYS_02A29005,PCI\VEN_9005&DEV_0286&SUBSYS_02A39005,PCI\VEN_9005&DEV_0286&SUBSYS_02AC9005,PCI\VEN_9005&DEV_0286&SUBSYS_02A79005,PCI\VEN_9005&DEV_0286&SUBSYS_02A99005,PCI\VEN_9005&DEV_0286&SUBSYS_02B39005,PCI\VEN_9005&DEV_0286&SUBSYS_02B49005,PCI\VEN_9005&DEV_0286&SUBSYS_02A89005,PCI\VEN_9005&DEV_0286&SUBSYS_02AA9005,PCI\VEN_9005&DEV_0285&SUBSYS_02B59005,PCI\VEN_9005&DEV_0285&SUBSYS_02B69005,PCI\VEN_9005&DEV_0285&SUBSYS_02B79005,PCI\VEN_9005&DEV_0285&SUBSYS_02B09005,PCI\VEN_9005&DEV_0285&SUBSYS_02B515D9,PCI\VEN_9005&DEV_0285&SUBSYS_02B615D9"
ms_1_isBusExtender	= false
ms_1_exc_skipIfOS	= "w2k,wxp"

[I-6]
ms_count 			= 1
ms_1_deviceName		= "IBM ServeRAID 8e SAS Adapters Adaptec 94xx (Windows 2000/XP/2003 32-bit)"
ms_1_tag			= "adp94xx"
ms_1_sysFile		= "adp94xx.sys"
ms_1_hwids			= "PCI\VEN_9005&DEV_0410,PCI\VEN_9005&DEV_0411,PCI\VEN_9005&DEV_0412,PCI\VEN_9005&DEV_041E,PCI\VEN_9005&DEV_041F,PCI\VEN_9005&DEV_0430,PCI\VEN_9005&DEV_0432,PCI\VEN_9005&DEV_0415,PCI\VEN_9005&DEV_0416,PCI\VEN_9005&DEV_043E,PCI\VEN_9005&DEV_043F"
ms_1_isBusExtender	= false
ms_1_exc_disableIfOS= "w2k"

The current mass storage driver pack already includes the LSI Logic PCI SCSI/FC MPI Driver, which is also known as the LSI Adapter, FC 4000 series, Dual or Quad port (with 929).

However, in order to support the IBM Intellistation Z Pro (type 6221), additional hardware ids are needed in DriverPack_MassStorage_wnt5_x86-32.ini file.

The DriverPack_MassStorage_wnt5_x86-32.ini [L-4] section currently has the following line:
ms_1_hwids            = "PCI\VEN_1000&DEV_0626,PCI\VEN_1000&DEV_0628,PCI\VEN_1000&DEV_0032"

The updated line should state:
ms_1_hwids = "PCI\VEN_1000&DEV_0622,PCI\VEN_1000&DEV_0624,
PCI\VEN_1000&DEV_0626,PCI\VEN_1000&DEV_0628,PCI\VEN_1000&DEV_0030,PCI\VEN_1000&DEV_0032"

The current L\4\symmpi.inf is correct and it lists the additional hwids.

@Bâshrat the Sneaky and @edenkers: The proposed solution to the problem was to unpack the latest Chipset driverpack (6.09.1), remove the files mentioned, unpack the older chips driver pack (6.05), move/copy the files needed to replace the ones deleted, then re-zip the driver pack.

Unfortunately, when I tested this solution it also failed.