在Windows上用Python打开设备的句柄

2024-09-29 23:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用吉维奥系统在访问受保护内存之前需要打开“文件”的驱动程序。我在看WinAVR/AVRdude中的一个C示例,它使用以下语法:

 #define DRIVERNAME      "\\\\.\\giveio"
 HANDLE h = CreateFile(DRIVERNAME,
            GENERIC_READ,
            0,
            NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            NULL);

但这在Python中似乎不起作用-我只得到一个“指定路径无效”的错误,这两个错误都是如此

^{pr2}$

以及

f = os.open("//./giveio", os.O_RDONLY)

为什么这个不能做同样的事情?在

编辑希望能减少思想的混乱(谢谢威尔)。 我确实验证了设备驱动程序是通过AVRdude附带的批处理文件运行的。在

进一步编辑以澄清SamB的赏金。在


Tags: 文件内存编辑示例os系统错误驱动程序
3条回答

解决方案:在python中必须使用win32文件.CreateFile()而不是open()。我帮我找到了答案,谢谢大家!在

你的问题至少可以说是令人困惑的。在

1>;您粘贴的代码使用了一个技巧,即使用其“DOSNAME”与驱动程序通信

\\.\DRIVERNAME

2>;是否创建并加载了“giveio”驱动程序?在

驱动程序处理这些调用的原因是

http://msdn.microsoft.com/en-us/library/ms806162.aspx

我对Python一无所知,但我对驱动程序有一点了解。你根本就不想“在内核空间打开一个文件”,你只是想打开一个设备的句柄,这个句柄看起来有点像打开一个文件。在

CreateFile是一个用户模式函数,您在这里所做的一切都是用户模式,而不是内核模式。在

正如xenon所说,您的调用可能会失败,因为您还没有加载驱动程序,或者因为您用来执行CreateFile的任何Python调用都没有传入write参数。在

我从来没用过吉维奥系统我自己,但我个人认为,它是正确加载的使用“C”或C++(或一些预先编写的应用程序)之前,我试图使它通过Python工作。在

相关问题 更多 >

    热门问题