C#和C++的交互如果自己写代码,一方面繁琐,另一方面容易出错,再者就是代码不太规范。
最近看了一下PInvoke.net的东西,可以直接使用官方写好的。
下面是使用Pinvoke.net打开设备的一个例子。
private void openDeviceButton_Click(object sender, RoutedEventArgs e)
{
var fileName = textBox.Text;
MessageBox.Show(fileName);
unsafe
{
fixed (char* p = fileName)
{
// do some work
DeviceHandle = Kernel32.CreateFile(p, ACCESS_MASK.GenericRight.GENERIC_ALL, 0, (SECURITY_ATTRIBUTES*)0, CreationDisposition.OPEN_EXISTING, CreateFileFlags.FILE_ATTRIBUTE_SYSTEM, SafeObjectHandle.Null);
}
}
if(DeviceHandle.IsInvalid)
{
var errCode = Marshal.GetLastWin32Error();
MessageBox.Show($"not valid value, errCode = {errCode}");
return;
}
MessageBox.Show("valid value");
}
标签:MessageBox,Show,PInvoke,errCode,fileName,使用,net
From: https://www.cnblogs.com/dewxin/p/17060958.html