我正在尝试使用Win32 API编写自己的小型库来连接到串行端口。不幸的是,我找到的所有sample code都使用了kernel32.dll(我可以这么做)但是createFile命令使用前缀win32Com,我假设它是我需要使用的某个命名空间的一部分。不幸的是我无法弄清楚,并且作为一个菜鸟我不知道如何找出这是否是我需要包含的参考或其他。
有人能指出一些解释如何执行此操作的示例代码吗?或者告诉我哪里出错了?我将包括我的'使用'部分和DllImport以及我在下面创建文件的位置。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO.Ports;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
这里有更多代码,初始化表单等。
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern IntPtr CreateFile(String lpFileName,
UInt32 dwDesiredAccess, UInt32 dwShareMode,
IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition,
UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);
但是当我使用以下内容时,我收到错误:The name 'Win32Com' does not exist in the current context.
hPort = Win32Com.CreateFile(cs.port,
Win32Com.GENERIC_READ | Win32Com.GENERIC_WRITE, 0, IntPtr.Zero,
Win32Com.OPEN_EXISTING, Win32Com.FILE_FLAG_OVERLAPPED,
IntPtr.Zero);
我确信这是我犯的一个简单错误,但不幸的是,我现在没有技能,无法找到它的位置。
提前致谢!
答案 0 :(得分:1)
你的链接说:“Win32Com是一个辅助类,用作我将通过P / Invoke使用的API函数,结构和常量的静态定义的容器。”所以你需要创建它并在其中放置CreateFile
的以下声明。您还应该阅读P/Invoke以了解其工作原理。