Ниже приведен код Java.Почему `ReadFile()` возвращает ошибку 87?
HANDLE h = kernel32.CreateFile("\\\\.\\d:",
kernel32.GENERIC_READ
| kernel32.GENERIC_WRITE,
0, null, kernel32.OPEN_EXISTING,
0, null);
IntByReference nbread = new IntByReference();
ByteBuffer b = ByteBuffer.allocate(48);
boolean result = kernel32.ReadFile(h, b, b.capacity(), nbread, null);
System.out.println(kernel32.GetLastError());
это дает ошибку 87 (Invalid parameter)
Что может быть проблема?
какая линия линия 87? – frgnvola
Скорее всего, неверный параметр является первым. Если вы пытаетесь открыть корневую директорию диска 'D: ', используйте вместо этого' 'D: /" 'и проверьте код ошибки после вызова _that_. Вы также должны убедиться, что достаточно 48 байт, чтобы прочитать содержимое любого файла, который вы читаете. – technomage
Недействительно вызывать 'GetLastError()', если у вас на самом деле нет ошибки, и нет никаких доказательств, которые вы сделали. – EJP