как преобразовать это в C#

#c# #c

#c# #c

Вопрос:

Привет, у меня есть следующий код, который я хотел бы преобразовать в 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),
                                                    amp;returned,
                                                    FALSE);
  

Комментарии:

1. вместо того, чтобы пытаться напрямую перевести это, может быть, попробуйте воссоздать то, что он должен делать?

2. Спасибо за ответ. Но я бы предпочел преобразовать вместо воссоздания, поскольку я не очень хорошо знаком с общим потоком программы.

Ответ №1:

Вы должны использовать взаимодействие P / Invoke для доступа к DeviceIoControl. Вот ссылка, которая имеет похожие вызовы и должна быть хорошей отправной точкой: Defrag API C # wrappers

Ответ №2:

Это получение шины SCSI #, идентификатора # на этой шине и LUN по этому идентификатору. Вероятно, вам нужно будет выяснить, что с этим делается, чтобы понять, как его осмысленно перевести / заменить. Если память не изменяет, вы можете извлечь часть той же информации через WMI, но есть довольно большая вероятность, что это не принесет большой пользы — основное использование этой информации — передавать ее обратно при выполнении других вызовов DeviceIoControl.