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 版本 1.2 中引入了MMC_TEXTCALLBACK。
nImage
当项处于未选择状态时,映像列表中的虚拟映像索引。 请注意,虚拟映像索引在内部映射到实际索引。 还可以将此成员指定为回调项: MMC_CALLBACK 或 MMC_IMAGECALLBACK。 MMC_IMAGECALLBACK是类型正确的 (无需强制转换) 版本的 MMC_CALLBACK。
MMC 版本 1.2 中引入了MMC_IMAGECALLBACK。
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 的值指示它是无操作,因为默认情况下,父项 ID 为 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通知中的参数传递给管理单元。
请注意,管理单元应存储每个插入项的 HSCOPEITEM,并在稍后使用 IConsole2 和 IConsoleNameSpace2 接口的方法操作该项。
注解
将项作为静态节点的同级插入是无效的。 如果管理单元将 relativeID 成员设置为静态节点的 HSCOPEITEM ,设置 SDI_PREVIOUS 或 SDI_NEXT 标志,然后调用 IConsoleNameSpace2::InsertItem,MMC 将返回 E_INVALIDARG。
要求
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
标头 | mmc.h |
另请参阅
IComponentData::GetDisplayInfo