簡體   English   中英

帶有設備的FileStream和異步I / O.

[英]FileStream and Asynchronous I/O with a device

我在寫入寫入SafeFileHandle的FileStream時遇到一些問題,該文件用於將數據寫入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和Length都返回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) 

提前致謝。

你在異常中檢查了給定的win錯誤代碼嗎? 關於跟蹤,應該包含錯誤代碼。

您可能超出的數據限制是否有限制?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM