CreateNtmsMediaA 函数 (ntmsapi.h)

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

CreateNtmsMedia 函数为新脱机媒体创建 PMID 和侧 (或侧) 。 媒体放置在为 lpPhysicalMedia 指定的媒体池中。

语法

DWORD CreateNtmsMediaA(
  [in] HANDLE                    hSession,
  [in] LPNTMS_OBJECTINFORMATIONA lpMedia,
  [in] LPNTMS_OBJECTINFORMATIONA lpList,
  [in] DWORD                     dwOptions
);

参数

[in] hSession

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

[in] lpMedia

指向 NTMS_OBJECTINFORMATION 结构的指针,该结构包含有关要创建的媒体的信息。 有关适用成员的说明,请参阅备注。

[in] lpList

指向 NTMS_OBJECTINFORMATION 结构的指针,该结构指定与介质关联的边数组。 有关适用成员的说明,请参阅备注。

[in] dwOptions

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

含义
0
默认值。 允许创建具有重复 OMID 的重复媒体。
NTMS_ERROR_ON_DUPLICATE
如果系统上已存在具有指定 OMID 的介质,则返回错误,并且不会创建介质。

返回值

此函数返回以下值之一。

含义
ERROR_ACCESS_DENIED
拒绝将NTMS_MODIFY_ACCESS到计算机或媒体的媒体池。 可能存在其他安全错误,但表示存在安全子系统错误。

Windowsxp: NTMS_CONTROL_ACCESS媒体池或NTMS_MODIFY_ACCESS脱机库被拒绝。 可能存在其他安全错误,但表示存在安全子系统错误。

ERROR_DATABASE_FAILURE
数据库不可访问或已损坏。
ERROR_DATABASE_FULL
数据库已满。
ERROR_DUPLICATE_OMID
提供了选项NTMS_ERROR_ON_DUPLICATE,并且此 OMID 中已存在一个介质。
ERROR_INVALID_HANDLE
会话句柄缺失或无效。
ERROR_INVALID_MEDIA
具有此条形码的媒体已存在一个条目。
ERROR_INVALID_MEDIA_POOL
指定的媒体池不存在,或者不是有效的导入池或应用程序池。
ERROR_INVALID_PARAMETER
缺少参数,或者对象信息大小或对象类型无效。
ERROR_MEDIA_INCOMPATIBLE
指定的边数与媒体池的媒体类型关联的边的数目不匹配。
ERROR_NOT_ENOUGH_MEMORY
处理期间内存分配失败。
ERROR_SUCCESS
函数已成功执行。

注解

lpMedia 参数必须指向NTMS_OBJECTINFORMATION结构,其 dwType 参数NTMS_PHYSICAL_MEDIA。 下面是 NTMS_OBJECTINFORMATION 结构的成员和说明的列表。

成员 说明
dwSize [in] CreateNtmsMedia 验证此大小是否等于包含 NTMS_PMIDINFORMATION 结构的 NTMS_OBJECTINFORMATION 结构的长度。 如果大小不正确,则返回ERROR_INVALID_PARAMETER。
dwType [in] CreateNtmsMedia 验证是否提供了NTMS_PHYSICAL_MEDIA值。 如果提供的类型不正确,则返回ERROR_INVALID_PARAMETER。
创建时间 [out]指示物理媒体对象进入 NTMS 数据库的时间。
修改时间 [out]指示物理媒体对象进入 NTMS 数据库的时间。
ObjectGuid [in/out]物理媒体对象的唯一标识符 (PMID) 。 如果提供了非 NULL 值,则该值将用作物理介质的 GUID,否则将生成 GUID。
已启用 [in]指示是否应启用物理介质。
dwOperationalState [out]必须NTMS_READY。
szName [in/out] CreateNtmsMedia 允许应用程序指定新物理介质的名称。 这样,应用程序就可以在将媒体从一台 RSM 计算机移动到另一台 RSM 计算机后继续使用介质的名称。 RSM 默认命名选择为:单面:条形码,标签信息值或序列号;。 对于多面媒体条形码,则为序列号。

请注意,分区的 RSM 用户界面中显示的名称是此名称 (分配给物理媒体对象) 的名称。

szDescription [in]可使用 CreateNtmsMedia 设置的可选参数。 提供空字符串 (“\0”) ,以避免为说明传入值。
 

下面是 NTMS_PMIDINFORMATION 结构的成员和说明的列表。

成员 说明
CurrentLibrary [in]必须是NULL_GUID或脱机库的 GUID。
MediaPool [in]必须是有效导入池或应用程序池的 GUID。

CreateNtmsMedia 验证这是有效的导入池或应用程序池的 GUID。 它还验证提供的分区数对于与此媒体池关联的媒体类型是否正确。

位置 [out]必须是NULL_GUID。
LocationType [out]必须NTMS_STORAGESLOT。
HomeSlot [out]必须是NULL_GUID。
MediaType [out] CreateNtmsMedia 将媒体类型设置为与提供的媒体池关联的媒体类型。
szBarCode [in/out]条形码将去除任何结束空格。 CreateNtmsMedia 不会执行任何其他尝试来验证条形码的有效性。
BarCodeState [out]如果为 szBarCode 传入的值是空字符串,则 BarCodeState 设置为 NTMS_BARCODESTATE_UNREADABLE否则设置为 NTMS_BARCODESTATE_OK。
szSequenceNumber [out] CreateNtmsMedia 为新创建的媒体分配一个序列号,该序列号将在此成员中返回。
MediaState [out] CreateNtmsMedia 将 MediaState 设置为 NTMS_MEDIASTATE_IDLE。
dwNumberOfPartitions [in]定义表示此介质的边 的NTMS_OBJECTINFORMATION 结构的数目。 CreateNtmsMedia 检查以确保指定的边数与要向其分配的媒体池所隐含的边数匹配。 如果不匹配,则返回ERROR_MEDIA_INCOMPATIBLE。
dwMediaTypeCode [in]SCSI 媒体类型代码。

此成员不由 RSM 使用,但可由写入 RSM 的应用程序使用,以获取有关媒体的其他信息。 有关此成员应设置为的内容的说明,请参阅硬件制造商的 SCSI 规范,了解可能的设置。

RSM 在首次装载新导入的媒体时更新此成员。

dwDensityCode [in]SCSI 密度代码。

此成员不由 RSM 使用,但可由写入 RSM 的应用程序使用,以获取有关媒体的其他信息。 有关此成员应设置为的内容的说明,请参阅硬件制造商的 SCSI 规范,了解可能的设置。

RSM 在首次装载新导入的媒体时更新此成员

 

lpList 参数必须指向其 dwType NTMS_PARTITION以下信息的NTMS_OBJECTINFORMATION结构。

成员 说明
dwSize [in]CreateNtmsMedia 验证提供的大小是否与包含NTMS_PARTITIONINFORMATION结构的NTMS_OBJECTINFORMATION结构的预期长度匹配。 如果大小不正确,则返回ERROR_INVALID_PARAMETER。
dwType [in] CreateNtmsMedia 验证是否提供了NTMS_PARTITION值。 如果提供的类型不正确,则返回ERROR_INVALID_PARAMETER。
创建时间 [out]指示分区对象输入 RSM 数据库的时间。
修改时间 [out]指示分区对象输入 RSM 数据库的时间。
ObjectGuid [in/out]端的唯一标识符。 如果提供了非 NULL 值,则该值将用作端的 GUID;否则,将生成 GUID。
已启用 [in]确定是否应启用该端。
dwOperationalState [out]必须NTMS_READY。
szName [in]新端的名称。
szDescription [in]可使用 CreateNtmsMedia 设置的可选参数。 提供空字符串 (“\0”) ,以避免为说明传入值。
PhysicalMedia [out]新创建的端对象的 GUID。
LogicalMedia [in/out]可选输入参数以及输出参数。 如果提供了 GUID,CreateNtmsMedia 将尝试使用预分配的 GUID 创建新的逻辑媒体对象。 如果 GUID 不唯一, CreateNtmsMedia 将返回错误。
State [in]任何有效的侧状态。
一边 [out] CreateNtmsMedia 将侧号设置为其在 Partitions 数组中的偏移量。
dwOmidLabelIdLength [in]必须为正值。

CreateNtmsMedia 使用 dwOmidLabelIdLength 来确定 OmidLabelId 成员中的有效字节数。 如果值不正确,则记录的 OmidLabelId 不正确。

OmidLabelId [in]必须是可由已安装的 MLL 识别的有效媒体标签。
szOmidLabelType [in]不得为空字符串。
szOmidLabelInfo [in]可以是空字符串。
dwMountCount [in]接受任何值。
dwAllocateCount [in]接受任何值。
容量 [in]SCSI 容量代码。

此成员不由 RSM 使用,但可由写入 RSM 的应用程序使用,以获取有关媒体的其他信息。 有关此成员应设置为的内容的说明,请参阅硬件制造商的 SCSI 规范,了解可能的设置。

RSM 在首次装载新导入的媒体时更新此成员。

 

注意

ntmsapi.h 标头将 CreateNtmsMedia 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

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

另请参阅

媒体服务函数