SCOPEDATAITEM 結構 (mmc.h)
SCOPEDATAITEM結構會指定要插入至範圍窗格的專案。
語法
typedef struct _SCOPEDATAITEM {
DWORD mask;
LPOLESTR displayname;
int nImage;
int nOpenImage;
UINT nState;
int cChildren;
LPARAM lParam;
HSCOPEITEM relativeID;
HSCOPEITEM ID;
} SCOPEDATAITEM;
成員
mask
值,指定旗標陣列,指出結構的哪些成員包含有效的資料。 當這個結構用於 IConsoleNameSpace2::GetItem 方法時,它會指出要擷取的專案屬性。 這個成員可以是下列其中一個值。
SDI_STR (0x00002)
結構的 displayname 成員有效。 只有在您指定displayname成員的值時,才支援SDI_STR。 MMC 不會儲存 displayname 成員的值,而且無法藉由呼叫 IConsoleNamespace2::GetItem 方法來擷取。
SDI_IMAGE (0x00004)
結構的 nImage 成員有效或必須填入。
SDI_OPENIMAGE (0x00008)
結構的 nOpenImage 成員有效或必須填入。
SDI_STATE (0x00010)
結構的 nState 成員有效或必須填入。
SDI_PARAM (0x00020)
結構的 lParam 成員有效或必須填入。
SDI_CHILDREN (0x00040)
結構的 cChildren 成員有效或必須填入。
SDI_PARENT (0x00000000)
只有在將專案插入範圍窗格中時,才使用 。 結構的 relativeID 成員是父代的 HSCOPEITEM 。 專案會插入為 relativeID所參考之專案的最後一個子系。
SDI_PREVIOUS (0x10000000)
只有在將專案插入範圍窗格中時,才使用 。 結構的 relativeID 成員是上一個同層級的 HSCOPEITEM 。
SDI_NEXT (0x20000000)
只有在將專案插入範圍窗格中時,才使用 。 結構的 relativeID 成員是下一個同層級的 HSCOPEITEM 。
SDI_FIRST (0x08000000)
只有在將專案插入範圍窗格中時,才使用 。 結構的 relativeID 成員是父代的 HSCOPEITEM 。 專案會插入為 relativeID所參考之專案的第一個子系。
displayname
MMC_CALLBACK 值或以 Null 終止字串的指標,視結構的使用方式而定。
- 使用 IConsoleNameSpace2::InsertItem插入專案時,此成員必須設定為 MMC_CALLBACK。
- 當嵌入式管理單元插入的專案名稱使用 IConsoleNameSpace2::SetItem變更時,此成員必須設定為 MMC_CALLBACK。
- 當靜態節點的名稱 (主控台插入) 變更的專案時,這個成員可以設定為 MMC_CALLBACK,或是包含專案文字之 Null 終止字串的指標。
MMC_TEXTCALLBACK 是在 MMC 1.2 版中引進。
nImage
當專案處於非選取狀態時,映射清單中的虛擬映射索引。 請注意,虛擬映射索引會在內部對應至實際索引。 此成員也可以指定為回呼專案: MMC_CALLBACK 或 MMC_IMAGECALLBACK。 MMC_IMAGECALLBACK是類型正確的 (不需要) 版本的MMC_CALLBACK。
MMC_IMAGECALLBACK 是在 MMC 1.2 版中引進。
nOpenImage
當專案處於選取狀態時,映射清單中的虛擬映射索引。 請注意,虛擬映射索引會在內部對應至實際索引。 專案就像 Microsoft Windows 檔案總管中的資料夾。 圖示適用于開啟的資料夾。
nState
值,指定專案的狀態遮罩。 對於 IConsoleNameSpace2::GetItem,如果專案已經展開至少一次,則此成員會傳回 MMC_SCOPE_ITEM_STATE_EXPANDEDONCE ,如果專案尚未展開,則傳回 0 (零) 。
IConsoleNameSpace2::InsertItem和IConsoleNameSpace2::SetItem會忽略此成員。
cChildren
值,指定列舉專案的數目。
當嵌入式管理單元插入範圍專案時,它應該將 cChildren 欄位設定為 0 (零) ,並在符合下列兩個條件時設定 SDI_CHILDREN 旗標:
- 嵌入式管理單元沒有任何子專案要加入插入的專案底下。
- 嵌入式管理單元不會針對此專案動態啟用任何命名空間擴充功能嵌入式管理單元。
如果條件在稍後變更,嵌入式管理單元可以使用IConsoleNameSpace2::SetItem修改cChildren欄位。
如果判斷子係數目需要很長的時間,嵌入式管理單元應該在插入時使用最佳猜測,並在另一個執行緒上實際判斷,讓 MMC 使用者介面不會遭到鎖定。 IConsoleNameSpace2::SetItem 可用來在必要時更正設定。
當 MMC 偵測到 具有 cChildren 計數為 0 (零) 的範圍專案時,它會檢查使用者或 IRequiredExtensions 介面針對專案靜態啟用的命名空間延伸模組。 如果未啟用,則會從專案中移除加號 (+) 符號。
展開專案之後,加號的狀態取決於實際存在的子專案數目。
lParam
值,指定要與專案產生關聯的使用者提供 32 位值。 此專案也稱為 Cookie,是當做第一個參數傳遞至 IComponentData::QueryDataObject的值。
relativeID
主控台提供的唯一專案識別碼。 專案會插入相對於這個成員所指定專案的位置。 遮罩設定會決定相對位置。
若要判斷 relativeID 的解譯方式,請將下列其中一個常數指定為 遮罩 成員。
SDI_PARENT
relativeID 是父代的 HSCOPEITEM 。 專案會插入為父專案的最後一個子系。 SDI_PARENT的值表示它是無作業,因為根據預設,父專案識別碼是relativeID。
SDI_PREVIOUS
relativeID 是上一個同層級的 HSCOPEITEM 。
SDI_NEXT
relativeID 是下一個同層級的 HSCOPEITEM 。
SDI_FIRST
與 SDI_PARENT相同,但專案會插入為第一個子系。
ID
值,指定範圍專案的主控台提供的唯一識別碼。 這個值是用來識別呼叫某些 IConsole2 和 IConsoleNameSpace2 介面方法之範圍窗格中的專案。
在嵌入式管理單元使用IConsoleNameSpace2::InsertItem) 成功將專案插入範圍窗格 (之後,SCOPEDATAITEM結構的ID 成員會包含新插入專案的HSCOPEITEM控制碼。 此控制碼是範圍專案的唯一識別碼。
針對靜態節點,MMC 會將專案插入嵌入式管理單元的範圍窗格中。 然後 MMC 會將靜態節點的HSCOPEITEM傳遞至嵌入式管理單元,作為MMCN_EXPAND通知中的param參數。
請注意,嵌入式管理單元應該儲存每個插入專案的 HSCOPEITEM ,稍後再使用 IConsole2 和IConsoleNameSpace2 介面的 方法來操作專案。
備註
插入專案做為靜態節點的同層級無效。 如果嵌入式管理單元將 relativeID 成員設定為靜態節點的 HSCOPEITEM ,請設定 SDI_PREVIOUS 或 SDI_NEXT 旗標,然後呼叫 IConsoleNameSpace2::InsertItem,MMC 會 傳回E_INVALIDARG。
需求
最低支援的用戶端 | Windows Vista |
最低支援的伺服器 | Windows Server 2008 |
標頭 | mmc.h |
另請參閱
IComponentData::GetDisplayInfo