在Windows NT上调用DeviceIoControl

【勇芳软件工作室】汉化HomePreviousNext

在Windows NT上,应用程序可以使用DeviceIoControl功能对软盘驱动器,硬盘驱动器,磁带驱动器或CD-ROM驱动器执行直接输入和输出操作,或检索有关软盘驱动器,硬盘驱动器,磁带驱动器或CD-ROM驱动器的信息。以下示例演示如何检索有关系统中第一个物理驱动器的信息。它使用CreateFile功能获取第一个物理驱动器的设备句柄,然后使用IOCTL_DISK_GET_DRIVE_GEOMETRY控制代码的DeviceIoControl函数填充DISK_GEOMETRY结构,其中包含有关该驱动器的信息。

BOOL GetDriveGeometry(DISK_GEOMETRY *pdg)

{

HANDLE hDevice;

BOOL fResult;

DWORD cb;

hDevice = CreateFile("\\\\.\\PhysicalDrive0",

0, FILE_SHARE_READ | FILE_SHARE_WRITE,

NULL, OPEN_EXISTING, 0, NULL);

if (hDevice == NULL)

return FALSE;

fResult = DeviceIoControl(hDevice,

IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0,

pdg, sizeof(*pdg), &cb, (LPOVERLAPPED) NULL);

如果(!fResult)

return FALSE;

CloseHandle(hDevice);

}

此示例仅在Windows NT上运行时才会成功,原因有两个:

*标准设备输入/输出控制代码仅在Windows NT上可用

*在Windows 95上,应用程序必须在CreateFile函数__中指定虚拟设备驱动程序,而不是特定设备。