是否有可能從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