gpt4 book ai didi

c# - FileStream 和设备的异步 I/O

转载 作者:行者123 更新时间:2023-11-30 13:01:48 32 4
gpt4 key购买 nike

我在写入 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 错误代码?关于跟踪,应该包含一个错误代码。

您是否可能超出了数据长度的限制?

关于c# - FileStream 和设备的异步 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17686363/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com