C# roda em um nivel mais alto e voce nao tera acesso diretamente à porta SATA. Para isso voce vai ter que interrogar o WMI (Windows)
Aqui esta um codigo que te fornece algumas informaçoes:
using System;
using System.Linq;
using System.Management;
namespace DiskScanPOC
{
class Program
{
static void Main()
{
var managementScope = new ManagementScope();
//get disk drives
var query = new ObjectQuery("select * from Win32_DiskDrive");
var searcher = new ManagementObjectSearcher(managementScope, query);
var oReturnCollection = searcher.Get();
//List all properties available, in case the below isn't what you want.
var colList = oReturnCollection.Cast<ManagementObject>().First();
foreach (var property in colList.Properties)
{
Console.WriteLine("Property: {0} = {1}", property.Name, property.Value);
}
//loop through found drives and write out info
foreach (ManagementObject oReturn in oReturnCollection)
{
Console.WriteLine("Name : " + oReturn["Name"]);
Console.WriteLine("Target Id: " + oReturn["SCSITargetId"]);
Console.WriteLine("Port: " + oReturn["SCSIPort"]);
}
Console.Read();
}
}
}
A base deste codigo é a query feita no WMI:
select * from Win32_DiskDrive
aqui esta a lista de todos os campos que essa query é capaz de trazer:
https://msdn.microsoft.com/en-us/library/aa394132%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------