小作
2018-03-01
来源 :网络
阅读 1210
评论 0
摘要:本系列Vmware虚拟机教程将会大家讲解系统的讲解Vmware知识点,看完这系列文章会让你对Vmware有更加清晰的理解和运用。
本系列Vmware虚拟机教程将会大家讲解系统的讲解Vmware知识点,看完这系列文章会让你对Vmware有更加清晰的理解和运用。
VixDiskLib_Open 打开 VMDK File
函数原型:
/** * Opens a local or remote virtual disk. * @param connection [in] A valid connection. * @param path [in] VMDK file name given as absolute path * e.g. "[storage1] MailServer/SystemDisk.vmdk" * @param flags [in, optional] Bitwise or'ed combination of * VIXDISKLIB_FLAG_OPEN_UNBUFFERED * VIXDISKLIB_FLAG_OPEN_SINGLE_LINK * VIXDISKLIB_FLAG_OPEN_READ_ONLY. * @param diskHandle [out] Handle to opened disk, NULL if disk was not opened. * @return VIX_OK if success, suitable VIX error code otherwise. */ VixError VixDiskLib_Open(const VixDiskLibConnection connection, const char *path, uint32 flags, VixDiskLibHandle *diskHandle);
函数调用:
vixError = VixDiskLib_Open(appGlobals.connection, appGlobals.diskPath, appGlobals.openFlags, &srcHandle);
是初始化并建立了与服务器的连接之后,调用 VixDiskLib_Open 即可打开本机(寄宿磁盘)或远程(托管磁盘)的 VMDK File。
需要注意的是,如果使用了 SAN 或 HotAdd 高级传输模式来建立与服务器之间的连接的话,则虚拟机需要存在至少一个 Snapshot 才能够执行 Open VMDK File 的操作。
@param connection:实际上是在调用 VixDiskLib_Connect 时 Return 的 VixDiskLibConnection 类型对象
@param path:指定需要 Open 的 VMDK File 的路径,使用 vSphere 的通过路径格式 [datastore] virtualmachine/vmdk_file.vmdk
@param flags:可以指定下列 flags:
oVIXDISKLIB_FLAG_OPEN_UNBUFFERED 禁用主机磁盘缓存。
oVIXDISKLIB_FLAG_OPEN_SINGLE_LINK 打开当前磁盘链接,而不是开发整个磁盘链(仅托管磁盘)。
oVIXDISKLIB_FLAG_OPEN_READ_ONLY只读模式打开虚拟磁盘。
@param diskHandle:若 Open SUCCESS,则返回一个虚拟磁盘对象句柄,该句柄会在后续的 读/写/克隆/获取磁盘信息/管理磁盘元数据/伸缩磁盘 Size/磁盘碎片整理 函数调用中作为实参传入。
VixDiskLib_Read 读取 VMDK File 数据
函数原型:
/** * Reads a sector range. * @param diskHandle [in] Handle to an open virtual disk. * @param startSector [in] Absolute offset. * @param numSectors [in] Number of sectors to read. * @param readBuffer [out] Buffer to read into. * @return VIX_OK if success, suitable VIX error code otherwise. */ VixError VixDiskLib_Read(VixDiskLibHandle diskHandle, VixDiskLibSectorType startSector, VixDiskLibSectorType numSectors, uint8 *readBuffer);
函数调用:
vixError = VixDiskLib_Read(diskHandle, startSector, numSectors, &mybuffer);
@param diskHandle:为调用 VixDiskLib_Open Return 的虚拟磁盘对象句柄。
@param startSector, @param numSectors:通过指定开始扇区 startSector 和扇区数量 numSectors,VixDiskLib_Read 从打开的 VMDK File 中读取一片连续的扇区数据。扇区的大小可以不同,但是在 VixDiskLib.h 头文件中已经将这个 Size 定义为 512 个字节,因为 VMDK File 的扇区大小就是 512 字节。
#define VIXDISKLIB_SECTOR_SIZE 512
@param readBuffer:是实际读取到的 VMDK File 的数据。
需要注意的是,因为每次读取的扇区 Size 通常为 512 字节,所以读取数据的完整性实际上是需要由应用程序来控制的,并不是调用一次 VixDiskLib_Read 函数就能够得到完整的 VMDK File 数据。
VixDiskLib_Write 写入数据到 VMDK File
函数原型:
/** * Writes a sector range. * @param diskHandle [in] Handle to an open virtual disk. * @param startSector [in] Absolute offset. * @param numSectors [in] Number of sectors to write. * @param writeBuffer [in] Buffer to write. * @return VIX_OK if success, suitable VIX error code otherwise. */ VixError VixDiskLib_Write(VixDiskLibHandle diskHandle, VixDiskLibSectorType startSector, VixDiskLibSectorType numSectors, const uint8 *writeBuffer);
函数调用:
VixDiskLib_Write(diskHandle, startsector, (sizeof mybuffer) / 512, mybuffer);
@param writeBuffer:该实参的长度必须是 VIXDISKLIB_SECTOR_SIZE 的整数倍字节。
VixDiskLib_GetInfo 获取 VMDK File 信息
函数原型:
/** * Retrieves information about a disk. * @param diskHandle [in] Handle to an open virtual disk. * @param info [out] Disk information filled up. * @return VIX_OK if success, suitable VIX error code otherwise. */ VixError VixDiskLib_GetInfo(VixDiskLibHandle diskHandle, VixDiskLibInfo **info);
函数调用:
VixError vixError = VixDiskLib_GetInfo(diskHandle, &info);
@param info:返回 VMDK File 的信息。
VixDiskLib_GetInfo 获取指定 Opened VMDK File 的下列相关信息,分配并填充 VixDiskLibDiskInfo 数据结构,其中的一部分信息会与 VMDK File Metadata 的信息相同:
bios
capacity
adapterType
links
blocks
VixDiskLib_FreeInfo 释放 VMDK File 信息
函数原型:
/** * Frees memory allocated in VixDiskLib_GetInfo. * @param info [in] Disk information to be freed. */void VixDiskLib_FreeInfo(VixDiskLibInfo *info);
函数调用:
vixError = VixDiskLib_FreeInfo(diskInfo);
@param info: 为调用 VixDiskLib_GetInfo 返回的 VixDiskLibInfo 类型对象
因为 VixDiskLib_GetInfo 会在内存中分配并填充 VixDiskLibDiskInfo 数据结构,所以需要在 VixDiskLib_GetInfo 调用失败之后立即调用 VixDiskLib_FreeInfo 以释放内存空间,避免内存泄漏。
VixDiskLib_Close 关闭 VMDK File
函数原型:
/** * Closes the disk. * @param diskHandle [in] Handle to an open virtual disk. * @return VIX_OK if success, suitable VIX error code otherwise. */
VixError
VixDiskLib_Close(VixDiskLibHandle diskHandle);
函数调用:
VixDiskLib_Close(diskHandle);
在完成对 VMDK File 的操作之后,一定要谨记关闭 VMDK File。
希望这篇文章可以帮助到你。总之,同学们,你想要的职坐标IT频道都能找到!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号