В моем коде C # DeviceIoControl возвращает false, дескриптор правильный
DeviceIoControl(deviceHandle, IOCTL_STORAGE_GET_DEVICE_NUMBER, IntPtr.Zero, 0, OutBuffPtr,//&psdn, OutBuffSize, ref dwBytesReturned, IntPtr.Zero);
Я пытался использовать Marshal.GetLastWin32Error (), который возвратил 1, в соответствии с MSDN это означает, что это неправильная функция. В коде я пытаюсь получить номер устройства, передавая Intptr в буфер размера STORAGE_DEVICE_NUMBER (который составляет 12 байт) из функции DeviceIoControl в kernel32.dll.
Я зашел в тупик.
Здесь не так много данных для продолжения, но Marshal.GetLastWin32Error () должно дать вам более конкретную информацию об ошибке.