您好我有以下代码,我想转换为C#。你能否在这里分享一下如何将这些转换为C#?我对C ++并不熟悉。特别是在它调用WinBase API的函数DeviceIoControl
上。在C#中,我应该用什么函数来替换DeviceIOCOntrol?
shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
accessMode = GENERIC_READ | GENERIC_WRITE;
sprintf(ff, "\\\\.\\%s", device);
hFile = CreateFile(ff, accessMode, shareMode, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE) {
*response = -1;
sprintf((response + 1), "Failed to open device %s", device);
return;
}
status = DeviceIoControl(hFile,
IOCTL_SCSI_GET_ADDRESS,
NULL,
0,
inquiry_data,
sizeof(inquiry_data),
&returned,
FALSE);
答案 0 :(得分:2)
您必须使用P / Invoke互操作来访问DeviceIoControl。这是一个有类似调用的链接,应该是一个很好的起点:Defrag API C# wrappers
答案 1 :(得分:1)
这是检索该总线上的SCSI总线#,ID#和该ID上的LUN。您可能需要弄清楚正在做些什么来弄清楚如何有意义地翻译/替换它。如果内存服务,你可以通过WMI检索一些相同的信息,但有一个非常公平的机会,不会做很多好事 - 这个信息的主要用途是在进行其他DeviceIoControl调用时将其传回。 / p>