是否有可能从C#调用Win32 API或直接访问硬件或内存的通用DLL ?从C访问硬件或内存#
我读到关于互操作性,不安全è非托管的DLL ...
例如,如果我用C编写一个DLL,一些位掩码位 设备可能之后,从C#调用DLL?
以同样的方式,如果我在C中编写一个分配一块原始内存的DLL,提供读写功能,我可以从C# 调用那个DLL来读取或写入那块内存?
是否有可能从C#调用Win32 API或直接访问硬件或内存的通用DLL ?从C访问硬件或内存#
我读到关于互操作性,不安全è非托管的DLL ...
例如,如果我用C编写一个DLL,一些位掩码位 设备可能之后,从C#调用DLL?
以同样的方式,如果我在C中编写一个分配一块原始内存的DLL,提供读写功能,我可以从C# 调用那个DLL来读取或写入那块内存?
是否有可能从C#调用Win32 API或直接访问硬件或内存的通用DLL?
不。您可以从C#调用Win32 API,但没有提供直接访问内存或硬件的Win32 API。只有设备驱动程序才能够直接访问内存或硬件。
您的C#代码和实际上非托管的Win32代码在用户模式中执行。用户模式代码不能直接访问内存或硬件。为此,代码必须在内核模式中执行,并且需要设备驱动程序。
设备驱动程序无法在C#中实现。通常,设备驱动程序以C语言实现。您可以实现设备驱动程序以执行您需要执行的任何操作,并通过调用DeviceIoControl
从C#与它进行通信。
但是,如果我在C中开发设备驱动程序并创建一个DLL来管理它,我可以通过interop和Codor这样的不安全的代码在C#中使用该DLL吗? – xdevel2000
这就是很多.NET Framework的实现方式。最终它必须调用到本机操作系统。 – usr