# HP Array Configuration Utility - Reverse Engineering ## About Trying to figure out which requests the [HP ProLiant Array Configuration Utility for Windows 64-bit](https://support.hpe.com/connect/s/softwaredetails?language=en_US&softwareId=MTX_669f83062c7b492083c2aa7125) sends to my HP Smart Array P410 RAID Controller, so that I can script it to e.g. fetch disk alerts etc. Heavily work in progress 🔥 ## Details The ACU sends a couple of `IOCTL_SCSI_MINIPORT` IOCTLs with custom payloads on controller selection; this is received and handled by the `HpSAMD.sys` driver. So far cross-checking the payload format with the well-known Linux sources hasn't yielded any success; I assume when `IOCTL_SCSI_MINIPORT` is used, the payload isn't what 1:1 gets sent to the controller, unlike `IOCTL_SCSI_PASS_THROUGH` which isn't what the ACU uses. Next step might be trying to port over the Linux CCISS example requests to the Windows SCSI API by using `IOCTL_SCSI_PASS_THROUGH` to try if the controller then responds with the same packet structure as it would under Linux. ## 3rd party sources - [HP ProLiant Array Configuration Utility for Windows 64-bit](https://support.hpe.com/connect/s/softwaredetails?language=en_US&softwareId=MTX_669f83062c7b492083c2aa7125) - [CCISS](https://sourceforge.net/projects/cciss/) - [cciss_defs.h](https://github.com/torvalds/linux/blob/a92b7d26c743b9dc06d520f863d624e94978a1d9/include/uapi/linux/cciss_defs.h) - [cciss_ioctl.h](https://github.com/torvalds/linux/blob/a92b7d26c743b9dc06d520f863d624e94978a1d9/include/uapi/linux/cciss_ioctl.h) - [SCSI Pass-Through Interface Tool](https://github.com/microsoft/Windows-driver-samples/tree/f5fe952f1fc90cfcff535407d56f49953d22e8da/storage/tools/spti) - [HPSA - Hewlett Packard Smart Array driver](https://kernel.org/doc/html/v6.4-rc7/scsi/hpsa.html)