MountNtmsMedia 函数 (ntmsapi.h)

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

MountNtmsMedia 函数同步装载一个或多个媒体片段。

语法

DWORD MountNtmsMedia(
  [in]      HANDLE                   hSession,
  [in]      LPNTMS_GUID              lpMediaId,
  [in, out] LPNTMS_GUID              lpDriveId,
  [in]      DWORD                    dwCount,
  [in]      DWORD                    dwOptions,
  [in]      int                      dwPriority,
  [in]      DWORD                    dwTimeout,
            LPNTMS_MOUNT_INFORMATION lpMountInformation
);

参数

[in] hSession

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

[in] lpMediaId

逻辑介质或侧的唯一标识符数组。

[in, out] lpDriveId

对应于 lpMediaId 参数中的媒体列表的驱动器标识符数组。 此数组指定要将媒体装载到的驱动器列表,或接收操作完成后媒体装载到的驱动器的列表。 请参阅下面的NTMS_MOUNT_SPECIFIC_DRIVE值。 如果在装载完成之前 MountNtmsMedia 函数超时,RSM 不会返回驱动器列表。

[in] dwCount

在 lpMediaId 和 lpDriveId 参数中传递的媒体标识符和驱动器标识符的数目。 请注意, lpMediaIdlpDriveId 必须指向长度相等的数组的第一个元素。

[in] dwOptions

选项。 此参数可使用以下一个或多个值。

含义
NTMS_MOUNT_SPECIFIC_DRIVE
将媒体装载到 lpDriveId 参数中提供的特定驱动器。
NTMS_MOUNT_READ
装载媒体进行读取访问。 使用此值装载只读媒体。
NTMS_MOUNT_WRITE
装载媒体以便进行写入访问。 使用此标志可阻止 RSM 装载 Completed 媒体。 此值可以与 NTMS_MOUNT_READ 结合使用,以便进行读/写访问。

如果选择此标志,RSM 无法装载 Completed 媒体。

NTMS_MOUNT_ERROR_NOT_AVAILABLE
如果媒体或驱动器不可用,此值将返回错误。
NTMS_MOUNT_ERROR_OFFLINE
请勿发出操作员请求来装载脱机媒体。 如果指定的媒体当前不在库中,则返回错误。

[in] dwPriority

RSM 用于允许访问驱动器的装载的优先级。 优先级范围为 -15 到 15,最高优先级为 15,默认值为 0。 此参数还可以采用以下常量之一。 除非需要特殊的装载优先级,否则应用程序应通过NTMS_PRIORITY_NORMAL。

含义
NTMS_PRIORITY_NORMAL
不是时间关键型的装载。
NTMS_PRIORITY_LOW
作为后台活动执行的装载。
NTMS_PRIORITY_HIGH
时间关键型装载。
NTMS_PRIORITY_LOWEST
最低优先级装载。
NTMS_PRIORITY_HIGHEST
最高优先级装载。

[in] dwTimeout

允许装载指定媒体的最长时间(以毫秒为单位)。 将此参数设置为 INFINITE 以等待装载完成。

lpMountInformation

此参数为保留参数,应为 NULL

返回值

此函数返回以下值之一。

含义
ERROR_ACCESS_DENIED
NTMS_USE_ACCESS包含媒体的媒体池或库被拒绝;也可能出现其他安全错误,但它们表示存在安全子系统错误。
ERROR_BUSY
媒体或驱动器正忙。
ERROR_CANCELLED
CloseNtmsSession 函数取消了请求。
ERROR_DATABASE_FAILURE
数据库不可访问或已损坏。
ERROR_DATABASE_FULL
数据库已满。
ERROR_DRIVE_MEDIA_MISMATCH
指定的媒体和驱动器不在同一库中。
ERROR_INVALID_DRIVE
至少一个指定的驱动器无效。
ERROR_INVALID_LIBRARY
包含驱动器或媒体的库无效。
ERROR_INVALID_MEDIA
指定的一个或多个介质无效,或者媒体列表中存在重复的媒体 ID。
ERROR_INVALID_STATE
装载期间出现意外的媒体或设备状态。
ERROR_MEDIA_OFFLINE
媒体处于脱机状态,无法装载。
ERROR_NOT_ENOUGH_MEMORY
处理期间发生内存分配失败。
ERROR_REQUEST_REFUSED
用户通过用户界面取消了请求。
ERROR_RESOURCE_DISABLED
将禁用执行装载所需的一个或多个资源。
ERROR_SUCCESS
媒体已装载,可供使用。
ERROR_TIMEOUT
尝试获取一个或多个所需资源时超时事件已过期。 装载请求已取消。
ERROR_WRITE_PROTECT
媒体状态设置为 Completed,并且指定了NTMS_MOUNT_WRITE值。

注解

MountNtmsMedia 函数将装载指定媒体的请求排队,然后等待 dwTimeout 参数中指定的毫秒数,以便装载完成或检测到错误。 如果 RSM 无法在 dwTimeout 过期之前完成装载操作,NTMS 将取消请求并返回错误。 如果指定的媒体位于脱机库中,则应用程序可能会长时间被阻止。 可以使用 GetNtmsObjectInformation 函数确定指定介质的当前位置。 还可以使用 NTMS_MOUNT_ERROR_OFFLINE 值在媒体脱机时生成即时错误而不是操作员请求。

如果指定的介质正在使用或驱动器不可用,则进程将阻止超时值,并返回ERROR_BUSY。 如果指定了NTMS_MOUNT_ERROR_NOT_AVAILABLE值,则当资源 (媒体或驱动器) 不可用时,函数将立即返回错误。

INFINITE 的超时值可用于使函数等待而不会超时。在 dwTimeout 参数中指定非零超时值时,RSM 将等待 lpMediaId 中指定的所有媒体装载。 如果指定的时间在装载所有媒体之前已过, 则 MountNtmsMedia 函数将返回错误并取消请求。 应用程序可以检查返回的状态,并根据需要重新提交请求。

使用单个调用指定要装载的多个媒体时,所有指定的媒体都必须位于单个库中。 如果任何指定的介质处于脱机状态,则不会装载任何介质,直到所有媒体都处于联机状态。

例如,装载完成后,驱动器状态 (未定义修复模式或可变模式) 。 应用程序必须设置驱动器。

CloseNtmsSession 函数可用于取消挂起的装载。 默认行为是:

  • 如果指定的媒体处于脱机状态,RSM 会发布操作员请求来装载媒体, 而 MountNtmsMedia 函数将等待 dwTimeout 参数中指定的时间段。
  • 如果指定的介质处于联机状态,RSM 会请求装载。
  • 如果驱动器或媒体不可用,RSM 将发送请求, 而 MountNtmsMedia 函数将等待 dwTimeout 参数中指定的时间段。

要求

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

另请参阅

媒体服务函数