I've gotten iSCSI to work in WinPE 2.1, so hopefully the same process should work on VistaPE, but I'm not an expert on building plugins. Maybe this will help someone anyway.
I'm posting the contents of four files:
1. The file that puts the iSCSI files and registry entries into the WinPE image during the build process. Unfortunately, I don't remember where all the file sources are from. I think I took them from a Vista installation (perhaps after installing the initiator).
CODE
xcopy /S /Y "C:\iscsi\windows\*" c:\Temp\winpe_x86\mount\Windows\*
reg load HKLM\PE_SYSTEM c:\Temp\winpe_x86\mount\Windows\System32\config\SYSTEM
regedit /s "C:\iscsi\iscsi.reg"
reg unload HKLM\PE_SYSTEM
2. The file that lists the dirs/files needed for the xcopy operation.
CODE
[DIRS]
C:\iscsi\windows\iSCSI
C:\iscsi\windows\system32
C:\iscsi\windows\system32\drivers
[FILES]
C:\iscsi\windows\iSCSI\iscsi.cat
C:\iscsi\windows\iSCSI\iscsi.inf
C:\iscsi\windows\iSCSI\iscsidsc.mof
C:\iscsi\windows\iSCSI\iscsievt.mof
C:\iscsi\windows\iSCSI\iscsihba.mof
C:\iscsi\windows\iSCSI\iscsilog.dll
C:\iscsi\windows\iSCSI\iscsiprf.mof
C:\iscsi\windows\iSCSI\iscsiprt.sys
C:\iscsi\windows\iSCSI\iscsirem.mof
C:\iscsi\windows\iSCSI\mpdev.inf
C:\iscsi\windows\iSCSI\mpdev.sys
C:\iscsi\windows\iSCSI\mpio.cat
C:\iscsi\windows\iSCSI\mpio.inf
C:\iscsi\windows\iSCSI\mpio.sys
C:\iscsi\windows\iSCSI\mpspfltr.sys
C:\iscsi\windows\iSCSI\msiscdsm.inf
C:\iscsi\windows\iSCSI\msiscdsm.sys
C:\iscsi\windows\iSCSI\msiscsi.sys
C:\iscsi\windows\system32\iscsicli.exe
C:\iscsi\windows\system32\iscsicpl.cpl
C:\iscsi\windows\system32\iscsidip.dll
C:\iscsi\windows\system32\iscsidsc.dll
C:\iscsi\windows\system32\iscsiexe.exe
C:\iscsi\windows\system32\iscsilog.dll
C:\iscsi\windows\system32\iscsipp.dll
C:\iscsi\windows\system32\iscsium.dll
C:\iscsi\windows\system32\iscsiwmi.dll
C:\iscsi\windows\system32\iscsixip.dll
C:\iscsi\windows\system32\MFC42D.DLL
C:\iscsi\windows\system32\MSVCRTD.DLL
C:\iscsi\windows\system32\oledlg.dll
C:\iscsi\windows\system32\drivers\iscsiprt.sys
C:\iscsi\windows\system32\drivers\msiscsi.sys
3. The file containing the registry entries to import (named iscsi.reg in my example).
CODE
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Enum\Root\LEGACY_MSISCSI]
"NextInstance"=dword:00000001
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Enum\Root\LEGACY_MSISCSI\0000]
"Service"="MSiSCSI"
"Legacy"=dword:00000001
"ConfigFlags"=dword:00000000
"Class"="LegacyDriver"
"ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
"DeviceDesc"="Microsoft iSCSI Initiator Service"
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Enum\Root\LEGACY_MSISCSI\0000\Control]
"ActiveService"="MSiSCSI"
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Enum\Root\SCSIADAPTER\0000]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Class"="SCSIAdapter"
"HardwareID"=hex(7):52,00,6f,00,6f,00,74,00,5c,00,69,00,53,00,43,00,53,00,49,\
00,50,00,72,00,74,00,00,00,00,00
"Driver"="{4D36E97B-E325-11CE-BFC1-08002BE10318}\\0001"
"Mfg"="Microsoft "
"Service"="iScsiPrt"
"DeviceDesc"="Microsoft iSCSI Initiator"
"ConfigFlags"=dword:00000000
"Capabilities"=dword:00000000
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Enum\Root\SCSIADAPTER\0000\LogConf]
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Enum\Root\SCSIADAPTER\0000\Control]
"ActiveService"="iScsiPrt"
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Services\iscsiprt]
"DisplayName"="iScsiPort Driver"
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,6d,00,73,00,69,00,73,00,63,00,73,\
00,69,00,2e,00,73,00,79,00,73,00,00,00
"Start"=dword:00000000
"Type"=dword:00000001
"Group"="iSCSI"
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Services\iscsiprt\Enum]
"0"="Root\\SCSIADAPTER\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Services\iscsiprt\Parameters]
"BusType"=dword:00000009
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}\0000]
"EnumPropPages32"="iscsipp.dll,iSCSIPropPageProvider"
"InfPath"="iscsi.inf"
"InfSection"="iScsiPort_Install_Control"
"ProviderName"="Microsoft"
"DriverDateData"=hex:00,00,0e,ad,e1,6e,c5,01
"DriverDate"="6-12-2005"
"DriverVersion"="5.2.3790.1653"
"MatchingDeviceId"="root\\iscsiprt"
"DriverDesc"="Microsoft iSCSI Initiator"
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Services\MSiSCSI]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,\
00,73,00,63,00,73,00,69,00,65,00,78,00,65,00,2e,00,65,00,78,00,65,00,00,00
"DisplayName"="Microsoft iSCSI Initiator Service"
"Group"="iSCSI"
"ObjectName"="LocalSystem"
"Description"="Manages Internet SCSI (iSCSI) sessions from this computer to remote iSCSI target devices.
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Services\MSiSCSI\Enum]
"0"="Root\\LEGACY_MSISCSI\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Services\NetBT]
"Start"=dword:00000000
[HKEY_LOCAL_MACHINE\PE_SYSTEM\ControlSet001\Services\Afd]
"Start"=dword:00000000
4. The file showing usage in the WinPE environment (uppercase words should be replaced with the appropriate values--setting an IP may not be necessary if using DHCP).
CODE
net start msiscsi
netsh interface ip set address name="Local Area Connection" static MACHINE_IP MACHINE_MASK MACHINE_DEFGATEWAY 1
iscsicli nodename MACHINE_IQN
iscsicli addtargetportal SAN_IP 3260 * * * * * * * * * * * *
iscsicli logintarget SAN_IQN t * * Root\SCSIADAPTER\0000_0 SAN_IP 3260 * * * * * * * * * * 0
The first file is actually just a snippet of a batch file that I use when building the WinPE image. I hope this helps. I can try to figure out where I got the source files from if needed. It was from some post or something, actually all of this process is, but honestly I don't remember for sure where I read it.