2012-09-30 139 views
0

我在使用DeviceIoControl和FSCTL_LOCK_VOLUME在直接磁盤讀/寫之前鎖定USB筆驅動器。該計劃有效 - 有時。 我遇到了鎖定調用本身的問題。當我在Visual Studio 2008中執行命令時,結果是正確的,並且鎖定成功(每次都是!),當運行代碼(調試或不調試)時,調用會偶然失敗,並顯示無效句柄。唯一明顯的區別是,當步進停頓一半時 - 我很滿意,但在運行/調試呼叫時立即失敗。使用DeviceIoControl和FSCTL_LOCK_VOLUME鎖定卷。調試器問題

請你能給我一個提示,告訴我這是跌倒的地方。

我認爲這是真正的技術人員!

+0

儘管CreateFile返回了一個有效的句柄,但該句柄可能沒有正確的規範來使​​FSCTL_LOCK_VOLUME操作起作用。例如'FILE_SHARE_READ'和'FILE_SHARE_WRITE'必須被指定。我使用DeviceIoControl的經驗是,錯誤消息是準確的,但基本上是詳細的。無效句柄意味着您的句柄對該操作無效。 – 2013-01-24 17:54:08

回答

0

聽起來像是一個計時錯誤。是否有其他線程可以訪問句柄?如果是這樣,在你調用DeviceIoControl之前,其中一個可能會關閉它。