使用PInvoke.net

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");

        }
posted @   dewxin  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示