日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

存储设备的设备惟一标示符(DUID)

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 存储设备的设备惟一标示符(DUID) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于文件系統構架變得更復雜,操作系統組件數目倍增,啟動程序訪問存儲目標通過激增的多樣的硬件和軟件路徑等原因,識別存儲設備的方法變得不充足。

例如,即插即用管理器為計算機中每一設備產生了一個實例標示符(instance identifier )。每一實例標示符相當于設備樹中一個單獨設備節點,并惟一標示該設備,如果設備保留在相同的位置。當計算機重啟時,實例標示符仍然存在,但是當你移除設備到一個不同的總線上或不同的計算機上時,實例ID并不保持相同。因此,實例ID,對于存儲區域網絡(SAN)和一些較新的系統組件而言,并不準確,如Windows Vista Diagnostic Service,其操作在分發式存儲環境中。當硬盤驅動器預言一個SMART失敗,其將產生一個診斷服務時間。在磁盤可能在的所有計算機上和磁盤可能綁定的所有總線上,該事件必須包含惟一標志失敗硬盤的標示符。然而,實例ID和任意其它的設備標示符字符串為達到這一目的并不精確。

一些應用程序和系統服務,如Microsoft Cluster ServiceMSCR)和分區管理器,在設備簇中,使用設備布局簽名device layout signature(STORAGE_DEVICE_LAYOUT_SIGNATURE)來惟一標示存儲設備。然而在一些環境下,設備布局簽名是不精確的,包含如下限制

l???????? 簽名可能改變或清除

l???????? 如果設備沒有旋轉或者訪問簽名保留區域遇到問題,簽名無法獲取

l???????? 簽名無法被獲取,如果磁盤被其它簇節點預留。MSCS

l???????? 驅動器布局簽名無法幫助區分邏輯單元號(LUN)和它的快照。因為一個邏輯單元號和它的快照有著相同的內容,他們的驅動器布局簽名將是相同的。

序列號有時可以作為一個可信賴的方法去唯一識別存儲設備,其不依賴于設備的位置。序列號通常作為設備的詢盤數據的一部分可以被獲取。啟動程序可以通過IOCTL_STORAGE_QUERY_PROPERTY 來查詢詢盤數據,端口驅動程序在一個STORAGE_DEVICE_DESCRIPTOR結構體中上報查詢結果。然而,這種方法無法識別那些不上報詢盤數據的設備,如磁帶驅動器,

?

設備唯一標識符(DUIDs)

由于唯一識別設備的方法經常因為技術的進步變為不再使用,Microsoft開發了一種被稱為設備唯一ID(DUID)的設備ID格式,DUID具有可擴充性,并能包含新的方法去識別設備。

?????? ?????? DUID由數據結構STORAGE_DEVICE_UNIQUE_IDENTIFIER定義,該數據結構的第一個版本包含下列標示組合:

STORAGE_DEVICE_ID_DESCRIPTOR

STORAGE_DEVICE_ID_DESCRIPTOR結構包含從設備的重要產品數據(VPD)中0x83頁中提取的標識符。典型的,只有SCSI和光纖通道設備支持該頁面。集成驅動器電子(IDE)和通用串行總線(USB)設備, IEEE1394設備和RAID控制器不提供0x83

STORAGE_DEVICE_DESCRIPTOR

STORAGE_DEVICE_DESCRIPTOR 結構包含其他的詢盤數據,包括SerialNumberOffset數據成員中相對于單元序列號的偏移。序列號格式化為變量長度的,以NULL終止的字符串。如果存儲設備是SCSI兼容的,端口驅動程序嘗試從VPD中可選擇的單元序列號頁面(0x80)中提取序列號。如果存儲設備是IDE設備,端口驅動程序從設備標識數據中產生一個序列號。

STORAGE_DEVICE_LAYOUT_SIGNATURE

STORAGE_DEVICE_LAYOUT_SIGNATURE結構包含設備布局簽名。

?

更多的數據將在以后的版本中添加到DUID中。

DUID沒有固定的大小,因此使用DUID的軟件(被稱為DUID消費者)必須從數據結構STORAGE_DEVICE_UNIQUE_IDENTIFIER中成員Size獲取DUID的大小。DUID的版本也可以從相同的數據結構中Version變量獲取。

一些設備并不會提供足夠的信息給操作系統以保證設備的DUID對于所有的使用和所有的DUID消費者都十分的唯一。如果系統能從設備的VPD中檢索到唯一ID,系統將創建一個DUID,對于所有的DUID來說將十分的唯一。然而,如果系統必須單獨地從設備布局簽名中創建一個DUIDDUID對于一些DUID消費者來說以充足唯一,但是并不是對于所有而言。

系統試圖創建具有如下特征的DUID

l???????? 系統重啟時DUID保持不變

l???????? DUID保持不變。即使當設備從一臺電腦移動到另一臺電腦,或一個適配器到另一適配器,一個通道到另一通道。

l???????? DUID是被設備而不是媒介。這一區別對于具有可移動媒介的設備而言十分重要。

DUID具有如下限制:

l???????? DUID通常包含不能被顯示的二進制內容;

l???????? DUID并不是總是NULL終止的。DUID消費者必須檢查STORAGE_DEVICE_LAYOUT_SIGNATURE數據結構中成員Size來確定DUID的長度;

l???????? 枚舉者不能為熱拔插目的去試圖使用DUID去識別設備對象。多路系統可以有多個設備共享相同的DUID。但是對于熱拔插目的,設備ID必須是唯一的。

如何比較DUID

DUID消費者使用頭文件Storduids.h中定義的CompareStorageDuids例程來比較兩個DUIDCompareStorageDuids 返回一個DUID_MATCH_STATUS值,顯示這兩個DUID是否匹配。如果操作成功,CompareStorageDuids返回下面中一個值:

DuidExactMatch

這兩個DUID中所有的位都匹配。

DuidSubIdMatch

DUID是有許多子-ID組成。至少其中一個子-ID匹配,這兩個DUID可能代表著相同的設備。當設備固件更新時,它可能獲取新的設備標識符,將改變設備DUID的組成。如果DUID消費者對于具有新的DUID設備采用舊的DUID進行比較,CompareStorageDuids可能返回DuidSubIdMatch代替DuidExactMatch這只是一個基于子-ID的一個合法的匹配。基于DUID消費者的需求,DUID消費者必須選擇是否接受DuidSubIdMatch返回值作為匹配或不匹配。

DuidNoMatch

序列號不匹配。產品重要數據中頁83h中唯一子ID均不匹配。

除了前面的值,CompareStorageDuids可能返回一些錯誤代碼.

1.?????? 檢查完全匹配。如果DUID中所有數據都匹配,DUID完全匹配,CompareStorageDuids返回DuidExactMatch。如果不是,繼續下一步檢查。

2.?????? 檢查VPD標識符。如果任一唯一子-ID匹配,那么DUID匹配,CompareStorageDuids返回DuidSubIdMatch匹配。如果沒有子-ID匹配或者設備不提供唯一產品重要數據(VPD)標識符,繼續如下的檢查。

3.?????? 檢查單元序列號。如果廠商ID,產品ID,序列號相同,那么DUID匹配,CompareStorageDuids返回CompareStorageDuids。如果這些都不匹配或設備不提供唯一產品重要數據(VPD)標識符,繼續如下的檢查。

檢查驅動器布局簽名。如果兩個DUID的設備布局簽名匹配,那么DUID匹配,CompareStorageDuids 返回 DuidSubIdMatch如果設備簽名不匹配或者系統不能讀到設備驅動器布局簽名。DUID不匹配,同時CompareStorageDuids返回DuidNoMatch

總結

以上是生活随笔為你收集整理的存储设备的设备惟一标示符(DUID)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。