The Intel X79 SATA RAID driver (iaStorA.inf) current version for Windows 7 x86 is not compatible across all platforms.
Problem description: After injecting the RAID driver (iaStorA.inf) with DISM into a 32bit Windows 7 image, after deploying the image first boot up returns a STOP error 0xC000035A.
DH55TC = 100% replication using IDE and AHCI mode
DH61BE = 100% replication using IDE and AHCI mode
DX79SI = intermittant
DQ67SW = 0% replication using AHCI
DH67CF = 0% replication using AHCI
DX79SI intermittant results, note that no changes were done to hardware (BIOS) or to the test images (Drivers or Updates) to get these results.
- IDE and AHCI with 32bit worked 100% of the time.
- RAID using JBOD failed (This new MSC does not support JBOD apparently)
- RAID using mismatched drives in RAID0 on 6GB and 3GB ports failed.
- RAID using mismatched drives in RAID1 on 6GB and 3GB ports worked.
- RAID using matching drives in RAID0 on 6GB ports failed using Windows Setup DVD and F6 driver.
- RAID using matching drives in RAID1 on 6GB ports failed using Windows Setup DVD and F6 driver.
- The above RAID tests (except JBOD) that failed started working a few days later with no changes.
Drivers used from Intel's website:
Note I did mention the older model Intel boards above. For the H55 and H61, STOP error for iaStorA.sys would appear if the image was deployed to it. It is a curios error since those boards (like the H67 and Q67) do not use the hardware (PCI\VEN_8086&DEV_2826&CC_0104) that iaStorA.inf supports. They would use ibexahci.inf or ibexide.inf (and ibexid2.inf) instead. So the first idea is to use DISM to take iaStorA.inf out of the image. Unfortunately, this resulted in those boards (which the image previously worked on before adding iaStorA) would then boot to a STOP 0x7B after deployment!
So it was much safer to keep the iaStorA.inf in the image. Now as to why the error occurs on certain boards, it is because the driver is written incorrectly! Apparently, this isn't the first time this type of thing has happened. In fact, an older Intel driver (iaStor.inf) from 2009 had this same problem! Take a look at this from the iaStorA.inf 32bit:
[Manufacturer] %INTEL% = INTEL, NTx86.5.2, NTamd64
You can see here that this driver is not (truly) compatible with Windows 7 x86! DISM doesn't seem to care about the wrong architecture being present, which I hope gets fixed someday in the future. The reason the STOP error occurs is because the 32bit driver appears to have been created using a 64bit INF as a base. The error is due to Windows being instructed to install the driver as 64bit on a 32bit OS, even though the actual .sys files are 32bit files.
Since removing the INF with DISM after the fact does more damage than you would expect, the only current workaround I've found is to rename the INF instead. Instructions for that:
1. Mount image with DISM
2. Go into mount\Windows\inf
3. find the oem*.inf filename
4. Rename to oem*.bak (where * is the number in the filename of course! )
It may be possible to add the appropriate OS code into the Manufacturer section of the INF to fix this problem. I have not tried it, since there are instructions for installing it into an x64 OS in the INF as well.