FileStream и асинхронный ввод-вывод с устройства

У меня возникли проблемы с записью в FileStream и записью в SafeFileHandle, этот файл используется для записи данных на устройство HID. Я опубликую фрагменты кода, поскольку они встречаются в нескольких различных объектах.

Это код создания дескриптора:

HidHandle = FileIO.CreateFile(pDevicePathName, FileIO.GENERIC_READ | FileIO.GENERIC_WRITE, FileIO.FILE_SHARE_READ | FileIO.FILE_SHARE_WRITE, IntPtr.Zero, FileIO.OPEN_EXISTING, FileIO.FILE_FLAG_OVERLAPPED, 0);

Возвращенный дескриптор действителен.

Тогда поток:

FileStreamDevice = new FileStream(HidHandle, FileAccess.ReadWrite, 65, true);

Поток создан успешно, но и Position, и длина возвращают NotSupportedException (что на самом деле нормально).

Затем я отправляю сообщение:

byte[] pMsg = new byte[65];    

ManualResetEvent manualevent = new ManualResetEvent(false);

IAsyncResult asynResult = device.FileStreamDevice.BeginWrite(pMsg, 0, pMsg.Length, 
            new AsyncCallback(End_Write), new DeviceAsyncState(device.FileStreamDeviceData, manualevent));

Это немедленно возвращает следующее сообщение об исключении:

 'The parameter is incorrect'

Это вершина трассировки стека:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.BeginWriteCore(Byte[] bytes, Int32 offset, Int32 numBytes, AsyncCallback userCallback, Object stateObject) 

Заранее спасибо.

1 ответ

Вы проверяли данный код ошибки win в исключении? в отношении трассировки должен содержаться код ошибки.

Существуют ли ограничения даталена, которые вы, возможно, превышаете?

Другие вопросы по тегам