如何将其转换为C#

时间:2011-04-30 06:02:39

标签: c# c++

您好我有以下代码,我想转换为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);

2 个答案:

答案 0 :(得分:2)

您必须使用P / Invoke互操作来访问DeviceIoControl。这是一个有类似调用的链接,应该是一个很好的起点:Defrag API C# wrappers

答案 1 :(得分:1)

这是检索该总线上的SCSI总线#,ID#和该ID上的LUN。您可能需要弄清楚正在做些什么来弄清楚如何有意义地翻译/替换它。如果内存服务,你可以通过WMI检索一些相同的信息,但有一个非常公平的机会,不会做很多好事 - 这个信息的主要用途是在进行其他DeviceIoControl调用时将其传回。 / p>