快速业务通道

Linux下如何迁移VG及文件系统

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-07
/写等.参见表 2 所示的 Windows/Linux 映射.


表 2. 设备控制函数的映射

Windows Linux
CreateFile open
CloseHandle close
DeviceIoControl ioctl
ReadFile read
WriteFile write

现在,我们深入探讨三个最常用的函数:create、close 和 devioctl.

Windows 的设备打开和关闭

我们讨论 Windows 函数 CreateFile 和 CloseHandle.函数 CreateFile 用于打开设备.该函数返回句柄,用以访问清单 1 所示的对象.


清单 1. Windows 的 CreateFile 函数
                

HANDLE CreateFile (LPCTSTR lpFileName,          //File name of the device 

                                                  (Device Pathname)

   DWORD dwDesiredAccess,                       //Access mode to the object (read, write, 

                                                  or both)

   DWORD dwShareMode,                           //Sharing mode of the object (read, 

                                                  write, both or none)

   LPSECURITY_ATTRIBUTES lpSecurityAttributes,  //Security attribute determining whether 

                                                  the returned handle can be inherited by 

                                                  child processes

   DWORD dwCreationDisposition,                 //Action taken on files that exist and 

                                                  do not exist

   DWORD dwFlagsAndAttributes,                  //File attributes and flags

   HANDLE hTemplateFile);                       //A handle to a template file


参数 lpFileName 是前面讲过的设备路径名.通常,打开设备需要将 dwDesiredAccess 设置为 0 或 GENERIC_READ|GENERIC_WRITE,将 dwShareMode 设置为 FILE_SHARE_READ|FILE_SHARE_WRITE,将 dwCreationDisposition 设置为 OPEN_EXISTING,以及将 dwFlagsAndAttributes 和 hTemplateFile 设置为 0 或 NULL.返回句柄将用于后续设备控制操作. 拥有帝国一切,皆有可能。欢迎访问phome.net

关闭设备使用函数 CloseHandle.将参数 hObject 设置为设备打开时返回的句柄:BOOL WINAPI CloseHandle (HANDLE hObject);.

Linux 的设备打开和关闭

在 Linux 中,我们讨论的是函数 open 和 close. 如前所述,打开设备就像打开普通文件一样.清单 2 显示如何使用 open 获取设备句柄.


清单 2. Linux 的 open 函数
                

int open (const char *pathname,

       int flags, 

       mode_t mode);


调用成功将返回文件描述符,它是进程尚未打开的序号最小的文件描述符.如果调用失败,将返回 -1.文件描述符用作设备句柄.

参数标志包含 O_RDONLY、O_WRONLY 或 O_RDWR 的其中之一.其他标志可选.参数模式在新文件创立时说明文件访问权.

在 Linux 中,函数 close 关闭设备就像关闭文件一样:int close(int fd);.

Windows 的 DeviceIoControl

设备控制(Windows 的 DeviceIoControl 和 Linux 的 ioctl)是最常用的设备控制函数,可以完成设备访问、信息获取、命令发送和数据交换等任务.清单 3 举例说明了 DeviceIoControl:


清单 3. Windows 的 DeviceIoControl 函数
                

BOOL DeviceIoControl (HANDLE hDevice,

      DWORD dwIoControlCode,

      LPVOID lpInBuffer,

      DWORD nInBufferSize,

      LPVOID lpOutBuffer,

      DWORD nOutBufferSize,

      LPDWORD lpBytesReturned,

      LPOVERLAPPED lpOverlapped); 


凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号