InjectNtmsMedia 函数 (ntmsapi.h)

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

InjectNtmsMedia 函数允许将媒体插入指定库的端口。 如果库正忙,RSM 会将 InjectNtmsMedia 排队并返回成功。

语法

DWORD InjectNtmsMedia(
  [in]  HANDLE      hSession,
  [in]  LPNTMS_GUID lpLibraryId,
  [out] LPNTMS_GUID lpInjectOperation,
  [in]  DWORD       dwAction
);

参数

[in] hSession

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

[in] lpLibraryId

库对象的唯一标识符。

[out] lpInjectOperation

插入库操作的 GUID。 如果 dwAction 为NTMS_INJECT_START,则此参数接收操作的 GUID。 如果 dwAction 是NTMS_INJECT_STOP,则必须将此参数设置为 GUID 才能停止操作。

[in] dwAction

此参数的取值可为下列值之一:

含义
NTMS_INJECT_START
使用端口启动插入操作。 将重复插入媒体,直到发生超时事件或使用NTMS_INJECT_STOP再次调用函数。
NTMS_INJECT_STOP
在超时事件失效之前终止插入过程。
NTMS_INJECT_RETRACT
指示库收回插入/弹出端口,并检查操作员放置在那里的媒体。
NTMS_INJECT_START_MANY
指示插入/弹出端口持续打开,并检查操作员放置在那里的介质。 如果找到介质,将重新打开插入/弹出端口以接收更多媒体。

返回值

此函数返回以下值之一。

含义
ERROR_ACCESS_DENIED
拒绝NTMS_CONTROL_ACCESS库。 其他安全错误也可能存在,但它们表示存在安全子系统错误。
ERROR_DATABASE_FAILURE
数据库不可访问或已损坏。
ERROR_DATABASE_FULL
数据库已满。
ERROR_DEVICE_NOT_AVAILABLE
库已禁用。
ERROR_INVALID_HANDLE
会话 ID 缺失或无效。
ERROR_INVALID_OPERATION
对无效的操作 ID 执行了停止操作。
ERROR_INVALID_PARAMETER
缺少库 ID 或操作 ID 指针。
ERROR_LIBRARY_OFFLINE
库 ID 是指无法弹出媒体的脱机库。
ERROR_NOT_ENOUGH_MEMORY
处理期间发生分配失败。
ERROR_SUCCESS
插入已排队。

注解

插入请求排队后,此函数立即返回到应用程序。

如果 InjectNtmsMedia 函数指定的库没有端口,请使用 AccessNtmsLibraryDoor 函数插入和弹出媒体。

此函数不能与脱机库一起使用。

插入开始将媒体插入库的过程。 由于库因 NTMS_IEPORT 对象的功能而异,因此每个设备的运行方式可能略有不同。 以下步骤描述了 RSM 通常如何处理注入:

将媒体插入库

  1. 允许/解锁/扩展NTMS_IEPORT。
  2. 轮询完整NTMS_IEPORT、收回NTMS_IEPORT、停止注入命令或超时值。 如果这些都未发生,请继续等待。 (不会扫描多盒插入/弹出端口的完整状态。)
  3. 发生上述事件之一时,NTMS_IEPORT被锁定,NTMS_IEPORT中的每个媒体都移动到一个槽,并且标识介质命令将针对每个介质排队。
如果 NTMS_IEPORT 对象中的媒体没有足够的槽位,则媒体将保留在 NTMS_IEPORT 对象中,并发布操作员请求以从库中删除介质。

如果没有可用槽, InjectNtmsMedia 函数会收到错误。

要求

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

另请参阅

弹出NtmsMedia

库控件函数