diff --git a/README.md b/README.md index 078d1a7..3cd111b 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Heavily work in progress 🔥 ## Details -The ACU sends a couple of `IOCTL_SCSI_MINIPORT` IOCTLs with custom payloads on controller selection; +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 diff --git a/SmartArrayControllerTool/SmartArrayControllerTool.cpp b/SmartArrayControllerTool/SmartArrayControllerTool.cpp index 99612c3..1e75225 100644 --- a/SmartArrayControllerTool/SmartArrayControllerTool.cpp +++ b/SmartArrayControllerTool/SmartArrayControllerTool.cpp @@ -119,7 +119,7 @@ void MiniportExample(HANDLE handle) std::wostringstream ss; ss << std::hex << std::uppercase << std::setfill(L'0'); - std::for_each(buffer.cbegin(), buffer.cend(), [&](int c) { ss << std::setw(2) << c << L" "; }); + std::for_each(buffer.cbegin(), buffer.cend(), [&](int c) { ss << std::setw(2) << (unsigned char)c << L" "; }); const std::wstring hexString = ss.str();