2010-06-27 82 views
0

我使用C接口通过打开文件句柄,ioctl和使用sg_io_hdr_t结构来控制自己设计的USB设备。我必须设计一个GUI,我应该用C#来完成。我对C#不太熟悉。可以ü建议的方式来做到这一点与C#使用C#发送SCSI命令

回答

0

您有几种选择

1-使用p/invoke(平台调用)的互操作性。使用这个你可以做两件事之一。可以使用p/invoke从.NET调用Win32 API,也可以编写一个C dll,导出一个简化的界面来控制设备,然后交互到此dll。

2-您可以使用managed C++,并创建一个可以从C#调用的库。

3-您可以将C代码封装为COM对象,并使用C#中的COM互操作。

既然你可能有一些工作的C代码,我认为最简单的是创建一个导出一个简单的调用接口,一个DLL,然后使用P/Invoke来调用从C#

+0

克里斯,你快谢谢回答。我的问题是我的应用程序不应该需要任何外部来源。我认为这是使用DLL的问题。 我开始使用p/invoke方法,并用CreateFile打开设备。但我不知道如何模拟sg_io_hdr_t结构。任何建议? – user168574 2010-06-27 15:06:43

+0

@ user168574,我从来没有专门与sg_io_hdr一起工作过,但我看到这个结构中唯一的挑战是void * dxferp和void * usr_ptr,但我希望你可以通过使用IntPtr来处理,然后分配足够大的缓冲区如果需要的话,可以为void *的结构和附加数据。这在评论中不容易解释,但几年前我做了一个类似于从另一个进程访问ListViewItem的东西,这可能会有所帮助。 http://taylorza.blogspot.com/2010/06/crossing-process-boundary-with-net.html,希望这有助于。 – 2010-06-27 15:28:59