1. 程式人生 > >WinIO初始化失敗的幾個原因

WinIO初始化失敗的幾個原因

WinIO是一個能夠開啟一些作業系統IO特權操作的一個庫,簡單的來說它載入了一些驅動。通過載入的驅動可以直接的訪問埠。在工控上,我們可以利用這個庫直接操作IO卡的地址。應用WinIO只需要呼叫兩個函式InitializeWinIo(),和最後的ShutdownWinIo()即可。InitializeWinIo()將會返回一個bool值指示初始化結果。就是這個函式造成了許多困擾。

第一次困擾是在一次除錯中,經常初始化失敗,一旦成功以後就總是成功的。剛開始以為是InitializeWinIo()以後沒有ShutdownWinIoI()造成的,後來看了WinIO的C Example證明只寫InitializeWinIo()一樣能夠程序一旦結束,由InitializeWinIo初始化的資源自然就結束了。所以不存在上次執行影響這次執行的事情。後來突然發現,WinIO相關的dll,vxd,sys竟然是綠色的。綠色在WindowsXP系統裡面代表了檔案是被EFS加密的。我為了工程的保密,把所有的工程目錄都進行了EFS加密。EFS加密會影響磁碟效能,原因就在於其加解密過程。但是這裡很奇怪,可能是間歇性的EFS解密速度沒有跟上WinIO中載入驅動的速度,造成讀取的sys和vxd裝置驅動是混亂的,最終導致載入失敗。將EFS加密取消,問題解決。

第二次困找在我用C#寫了一個dllimport,然後進行呼叫,結果,總是返回false。很疑惑,WinIO相關的檔案都放到一起的,怎麼還是這樣的呢?VS2005單元測試裡也會失敗。究其原因還是路徑的問題造成。分析WinIO的原始碼,可以發現InitializeWinIo()會呼叫一個GetDriverPath這個函式:

bool GetDriverPath()
{
PSTR pszSlash;

if (!GetModuleFileName(GetModuleHandle(NULL), szWinIoDriverPath, sizeof(szWinIoDriverPath)))
return false;

pszSlash = strrchr(szWinIoDriverPath, '\\');

if (pszSlash)
pszSlash[1] = 0;
else
return false;

strcat(szWinIoDriverPath, "winio.sys");

return true;
}


這裡面已經很清楚的知道了什麼情況下會false了。注意winio.sys存放的位置問題就能使之初始化正常。

其實還可以更加詳細的打印出InitializeWinIo()中每步的執行過程,這樣更容易判斷是哪個地方出現了問題。

您可能也喜歡:

相關推薦

WinIO初始失敗原因

WinIO是一個能夠開啟一些作業系統IO特權操作的一個庫,簡單的來說它載入了一些驅動。通過載入的驅動可以直接的訪問埠。在工控上,我們可以利用這個庫直接操作IO卡的地址。應用WinIO只需要呼叫兩個函式InitializeWinIo(),和最後的ShutdownWinIo()即可。InitializeWinI

uploadify在chrome下初始失敗,在Firefox下卻可以原因探析

報錯 logs .com log 其他 原因 初始化 -1 參考 如果沒有報錯,在其他瀏覽器下沒問題,那就只有一種可能:瀏覽器flash加載失敗,解決辦法是,更改瀏覽器對站點flash的設置。參考下圖: uploadify在chrome下初始化失敗,在Firefox下卻

總結遇到的次MongoDB副本集初始失敗問題

alt 51cto http 報錯 param 0.0.0.0 ^c fir nodes 前言: 在之前搭建MongoDB集群中,遇到過幾次小問題引起的初始化副本集失敗,都是之前初學時踩的坑,做個小結。 1、IP錯誤引起MongoDB副本集初始化失敗 這個錯誤在另一篇文章已

tomcat啟動多應用logback初始失敗報Web app root system property already set to different value: 'webapp.root'

tomcat部署啟動啟動專案: 這兩個專案都使用了logback; 由於兩個應用裡面的web.xml都沒有配置webAppRootKey,如果沒有配置webAppRootKey就會使用預設的webapp.root 就會使用預設的webapp.root 1.沒有配置webA

Vue2.0--14.小白入門教程--例項vue物件,可初始操作種方法

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>VueJS Tutorials</title> <link href="styles.c

關於信息小故事,摘自麥楓網

了解 信心 放大 凝聚力 是什麽 小故事 工作 組織 外部 企業的信息化的實行是增強企業反響才幹、進步企業效率、改進企業管理方式的一項工作,選擇實施一項性能良好的信息化軟件是作為信息化的主管的一項重要工作,下面我們就幾個小故事來看一看:  一、指導看電腦  這是發作在幾年前

IP錯誤引起MongoDB副本集初始失敗

got 報錯 for replset 17. uri ini map pass 問題描述: 在給客戶搭建環境的時候,在初始化一個MongoDB副本集的過程中,出現了初始化失敗,報"No host described in new configuration 1 f

Node.js部落格系統--2.專案建立、安裝初始和第一請求的實現

技術框架 專案初始化 開啟vscode,新建一個blog資料夾,在控制檯npm init,除了出現package name:(blog)的時候需要填寫一個blog,其他都只需要回車就可以 接著執行以下命令 分別使用 npm i --save ~;安裝下列包

hiveMetastore元資料庫初始失敗:java.io.IOException: Schema script failed, errorcode 2

Traceback (most recent call last): File "/var/lib/ambari-agent/cache/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py", line

解決rk3288啟動SurfaceFlinger 初始失敗問題

最近編譯rk3288原始碼遇到一個奇怪的問題,正常編譯使用的Android原始碼。如果做一些改動之後。再燒錄啟動失敗很是苦惱,主要報下面錯誤 kernel 失敗日誌 [ 4.088148] EXT4-fs (mmcblk0p12): recovery complete [

Android 匯入環信,初始失敗 java.lang.UnsatisfiedLinkError: Couldn't load hyphenate from loader dalvik.system

錯誤 06-13 15:06:51.813 8467-8467/com.wlkj.ciyun.sj E/AndroidRuntime: FATAL EXCEPTION: main

Android 有時環信初始失敗,建立applocation失敗

java.lang.RuntimeException: Unable to create application com.wlkj.ciyun.sj.config.MyApp: java.lang.NullPointerException at android.app

小程式常見的稽核不過的原因

1、微信小程式資訊不夠完善,比如小程式頭像,介紹,欄目類目等... 2、開發的小程式裡面的功能內容和小程式後臺的名稱 欄目不對應,或者完全無關聯; 3、個人申請的小程式比企業或者個體工商戶申請的小程式稽核更加嚴格,涉及到商業的東西都不能通過; 4、開發的小程式裡面的功能或者內容有出現

[PyTorch]PyTorch中模型的參數初始種方法(轉)

plane alt align frame nor view tps class normal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~本文目錄1. xavier初始化2. kaiming初始化3. 實際使用中看到的初始化3.1 ResN

SQL安裝服務起不來,報錯TDSSNICLIENT初始失敗,錯誤0X80092004

TDSSNIClient初始化失敗,錯誤0x80092004,狀態程式碼0x80。原因:無法初始化SSL支援。 TDSSNIClient初始化失敗,錯誤0x80092004,狀態程式碼0x1。原因:初始化因基礎結構錯誤而失敗。由於網路庫中的內部錯誤,無法啟動網路庫。   經過幾天的搜尋

Android 錯誤 百度導航初始失敗UnsatisfiedLinkError: dlopen failed: library libgnustl_shared.so

在部分機子 百度導航初始化失敗 cpu 架構 AArch64 processor rev 4 百度地圖.UnsatisfiedLinkError: dlopen failed: library libgnustl_shared.so 解決辦法 在app ->build.g

Navicat連不上遠端阿里雲伺服器MySQL資料庫的原因

背景: 今天在阿里雲CentOs裡部署MySQL,用ssh連上可以進入資料庫,但是本地Navicat就是連不上。如圖: 過程:到處看帖子,各種嘗試,過程如下: 1.有的帖子提醒要先開啟mysql服務:systemctl satrt mysqld.service

mysql安裝問題記錄MSVCR120.dll檔案丟失,無法正常啟動(0xc000007b),初始失敗

並先執行第一個檔案安裝.NET 2.0、.NET 3.5等 然後安裝第二個檔案進行安裝 最後初始化失敗 原因:my.ini檔案格式是utf-8  解決辦法,my.ini檔案儲存為ANSI格式檔案 

kafka 指定partition兩種方式&Consumer不消費訊息的原因

需求 1.隨機生成IP數字,將奇數、偶數資料分在不同的Partition 2.通過KafkaAPI實現一個消費組中多消費者,為了是驗證同組的不同消費者是否一一對應不同的Patition 3.打包部署在Linux中執行 解決辦法 方法1: 在pro

初始失敗初始軟體包後端失敗、yum-complete-transaction解決方法

問題簡介:最近進入到CentOs6.3的虛擬機器裡時,每隔幾分鐘就會跳出一個提示框如下:                                                                    本人新手,直接在終端中輸入:“yum-co