EnumerateNtmsObject 函数 (ntmsapi.h)

[从 Windows 7 和 Windows Server 2008 R2 起,可移动存储管理器 不再可用。]

EnumerateNtmsObject 函数枚举 lpContainerId 参数中包含的 RSM 对象。

语法

DWORD EnumerateNtmsObject(
  [in]      HANDLE            hSession,
  [in]      const LPNTMS_GUID lpContainerId,
  [out]     LPNTMS_GUID       lpList,
  [in, out] LPDWORD           lpdwListSize,
  [in]      DWORD             dwType,
  [in]      DWORD             dwOptions
);

参数

[in] hSession

OpenNtmsSession 函数返回的会话的句柄。

[in] lpContainerId

要枚举其对象的 RSM 对象容器的唯一标识符。 此参数可以是库、媒体池、分区 ID、物理媒体或逻辑媒体的 GUID。 若要枚举 dwType 参数指定的类型的所有对象(无论容器如何),请将此参数设置为 NULL。 有关对象-容器关系的详细信息,请参阅 NtmsObjectsTypes

[out] lpList

库、驱动器、媒体或其他 RSM 对象 ID 数组的缓冲区。

[in, out] lpdwListSize

指向变量的指针,该变量指定函数可以通过 lpList 参数返回的最大 ID 数。 返回时, lpList 中的 ID 数在 lpdwListSize 中返回。

[in] dwType

lpContainerId 容器中要枚举的对象的类型。 如果 lpContainerIdNULL,则枚举 RSM 支持的所有此类型对象。 此参数可以是 NtmsObjectsTypes 枚举类型的以下值之一。

含义
NTMS_CHANGER
兑换 商。

lpContainerId 参数必须为 NULL 或库 GUID。

NTMS_CHANGER_TYPE
更换器类型。

lpContainerId 参数必须为 NULL

NTMS_COMPUTER
当前计算机对象。

lpContainerId 参数必须为 NULL

NTMS_DRIVE
驱动器。

lpContainerId 参数必须为 NULL 或库 GUID。

NTMS_DRIVE_TYPE
驱动器类型。

lpContainerId 参数必须为 NULL

NTMS_IEDOOR
门。

lpContainerId 参数必须为 NULL 或库 GUID。

NTMS_IEPORT
插入/弹出端口包含在 lpContainerId 参数指定的库中,或者 RSM 支持的所有插入/弹出端口(如果提供 NULL 容器 ID)。

lpContainerId 参数必须为 NULL 或库 GUID。

NTMS_LIBRARY
库对象。 其中包括物理库单元和脱机库。

lpContainerId 参数必须为 NULL

NTMS_LIBREQUEST
库活动请求 (或工作项) 排队到 lpContainerId 参数指定的库或 RSM 中排队的所有库工作项(如果提供 NULL 容器 ID)。

lpContainerId 参数必须为 NULL 或库 GUID。

NTMS_LOGICAL_MEDIA
逻辑媒体对象。 这是分配给应用程序(可能包含多个物理介质)的介质。

lpContainerId 参数必须是 NUL、媒体池 GUID 或分区 GUID。

NTMS_MEDIA_POOL
包含逻辑和/或物理媒体的媒体池对象以及用于管理它们的配置参数。 如果将 NULL 指定为容器 ID,则仅返回顶级名称。

lpContainerId 参数必须为 NULL 或媒体池 GUID。

NTMS_MEDIA_TYPE
包含 RSM 支持的媒体类型的属性的媒体类型对象。 使用 NULL 枚举将提供所有可能的媒体类型,而不仅仅是当前服务器上可用的媒体类型。

lpContainerId 参数必须为 NULL 或库 GUID。

NTMS_OPREQUEST
此 RSM 服务器上的操作员请求。

lpContainerId 参数必须为 NULL

NTMS_PARTITION
侧在一块物理介质上。 物理介质可以包含多个物理面 (例如,光盘包含两侧) 。

lpContainerId 参数必须为 NULL、逻辑媒体 GUID、物理媒体 GUID 或媒体池 GUID。

NTMS_PHYSICAL_MEDIA
磁带、光盘、CD-ROM 或磁盒) (物理介质的项。 一个物理介质可以包含多个物理面 (例如,光盘的一侧) 。

lpContainerId 参数必须为 NULL、媒体池 GUID 或库 GUID。

NTMS_STORAGESLOT
lpContainerId 参数指定的库中包含的媒体槽或 RSM 支持的所有存储槽(如果提供了 NULL 容器 ID)。

lpContainerId 参数必须为 NULL 或库 GUID。

[in] dwOptions

枚举选项。 这仅适用于NTMS_MEDIA_POOL dwType 时。

含义
NTMS_ENUM_ROOTPOOL
这枚举根池以及所有其他顶级媒体池;它始终作为列表中的第一个 GUID 返回。 仅需要枚举根池来获取或设置对象上的安全属性。 dwType 必须为 NTMS_MEDIA_POOL,lpContainerId 必须为 NULL
NTMS_ENUM_DEFAULT
枚举媒体池时不包括根池的枚举。
 

Windowsxp: 此参数是保留的,必须设置为零。

返回值

此函数返回以下值之一。

含义
ERROR_INVALID_PARAMETER
缺少 lpdwListSize 指针,或者 lpContainerId 不是 dwType 指定的对象类型的有效容器。
ERROR_INSUFFICIENT_BUFFER
对于找到的所有对象而言 ,lpdwListSize 指定的缓冲区大小太小。 函数截断列表并返回 lpdwListSize 中的实际大小。
ERROR_INVALID_HANDLE
会话句柄缺失或无效。
ERROR_NOT_ENOUGH_MEMORY
处理期间发生分配失败。
ERROR_OBJECT_NOT_FOUND
lpContainerId 指定的 GUID 不是数据库中任何容器对象的 GUID。
ERROR_SUCCESS
函数成功。 如果 lpContainerId 不包含 dwType 指定的类型的对象,则函数将返回ERROR_SUCCESS和 lpdwListSize 为零。

注解

安全功能还可用于获取和设置对 RSM 对象的特定访问权限。

如果 lpdwListSize 参数中指定的可用 ID 数大于当前缓冲区大小, lpdwListSize 将返回所需的 ID 数。 然后,应用程序应分配更大的缓冲区,然后重试。

由于 ID 可能由另一个进程添加,因此具有调整大小列表的后续函数可能会收到指示列表太小的错误。

如果 lpContainerId 参数设置为 NULL,RSM 将枚举顶级对象 (,例如库) 。

如果列出了多个对象,可以从多个容器枚举该对象。 NULL 容器是最高级别的容器,并枚举系统中的所有对象。 例如,可以枚举特定库中的媒体或系统中的所有媒体。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 ntmsapi.h
Library Ntmsapi.lib
DLL Ntmsapi.dll

另请参阅

CreateNtmsMediaPool

GetNtmsObjectInformation

GetNtmsObjectSecurity

对象管理功能

SetNtmsObjectInformation

SetNtmsObjectSecurity