如何将其转换为c#

how to convert this to C#

本文关键字:转换      更新时间:2023-10-16

嗨,我有下面的代码,我想转换为c#。你能在这里分享一些光吗?我如何将它们转换为c# ?我对c++不太熟悉。特别是在函数DeviceIoControl上它调用了WinBase API。在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);

必须使用p/Invoke互操作来访问DeviceIoControl。这里有一个链接,有类似的调用,应该是一个很好的起点:整理API c#包装器

正在检索SCSI总线#、该总线上的ID #和该ID上的LUN。你可能需要弄清楚正在做什么,以便弄清楚如何有意义地翻译/替换它。如果内存足够,您可以通过WMI检索一些相同的信息,但是很有可能不会有很多好处——这些信息的主要用途是在进行其他DeviceIoControl调用时将其传递回去。