2011-04-07 246 views

回答

1

看我貼在我的回答the question代碼。問題的作者已經改變了這個問題的文本,並且文本的最後一個版本清楚了,也沒有真正解決原始問題。

在本例中,其中的C源代碼,你可以下載here,我將展示如何讓許多種有關使用不同的Windows API的本地驅動器的信息。你所需要的重要的事情是,一些名稱的轉換像設備類型和DeviceNumber(由IOCTL_STORAGE_GET_DEVICE_NUMBER收到)像下面

DeviceType: 7, DeviceNumber: 5, PartitionNumber: 1 

都在運行系統中是唯一,可以用來識別相同的設備。你可以在IOCTL_STORAGE_GET_DEVICE_NUMBER控制代碼的文檔中找到語句參考:

在 STORAGE_DEVICE_NUMBER結構的值 保證保持不變,直到 設備被刪除或系統重新啓動 。不保證在設備重新啓動時持續保持 或系統重新啓動時保持 。

在這種方式,你可以比較\\.\SCSI0設備和\\.\PhysicalDrive0並找出通信。

+0

奧列格,非常感謝您的回覆。我會盡快嘗試。 – 2011-04-07 17:45:31

+0

由於'IOCTL_STORAGE_GET_DEVICE_NUMBER'失敗,並且GetLastError表示ERROR_INVALID_FUNCTION,因此''SCSI設備'STORAGE_DEVICE_NUMBER'數據似乎不是一項簡單的任務。 – 2011-04-08 08:41:09

+0

@Ilya Matvejchikov:可能你的意思是'\\。\ SCSI0'或'\\。\ SCSI1',而不只是'\\。\ SCSI'。我建議你首先使用[WinObj](http://technet.microsoft.com/en-us/sysinternals/bb896657)來檢查計算機上存在哪些設備。開始時在'GLOBAL ??'看看。 – Oleg 2011-04-08 08:50:30