格式化磁盘
来源:互联网 发布:论文数据分析方法 编辑:程序博客网 时间:2024/05/16 09:02
#include <winioctl.h>
#include <string.h>
#include <ctype.h>
#include <memory.h>
BOOL GetDiskGeometry(HANDLE hDisk,PDISK_GEOMETRY lpGeometry )
{
DWORD ReturnedByteCount;
return DeviceIoControl(
hDisk,
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL,
0,
lpGeometry,
sizeof(*lpGeometry),
&ReturnedByteCount,
NULL
);
}
DWORD GetSupportedGeometrys(
HANDLE hDisk
)
{
DWORD ReturnedByteCount;
BOOL b;
DWORD NumberSupported;
b = DeviceIoControl(
hDisk,
IOCTL_DISK_GET_MEDIA_TYPES,
NULL,
0,
SupportedGeometry,
sizeof(SupportedGeometry),
&ReturnedByteCount,
NULL
);
if ( b ) {
NumberSupported = ReturnedByteCount / sizeof(DISK_GEOMETRY);
}
else {
NumberSupported = 0;
}
SupportedGeometryCount = NumberSupported;
return NumberSupported;
}
BOOL LowLevelFormat(HANDLE hDisk,PDISK_GEOMETRY lpGeometry )
{
FORMAT_PARAMETERS FormatParameters;
PBAD_TRACK_NUMBER lpBadTrack;
UINT i;
BOOL b;
DWORD ReturnedByteCount;
FormatParameters.MediaType = lpGeometry->MediaType;
FormatParameters.StartHeadNumber = 0;
FormatParameters.EndHeadNumber = lpGeometry->TracksPerCylinder - 1;
lpBadTrack = (PBAD_TRACK_NUMBER) LocalAlloc(LMEM_ZEROINIT,lpGeometry->TracksPerCylinder*sizeof(*lpBadTrack));
for (i = 0; i < lpGeometry->Cylinders.LowPart; i++) {
FormatParameters.StartCylinderNumber = i;
FormatParameters.EndCylinderNumber = i;
b = DeviceIoControl(
hDisk,
IOCTL_DISK_FORMAT_TRACKS,
&FormatParameters,
sizeof(FormatParameters),
lpBadTrack,
lpGeometry->TracksPerCylinder*sizeof(*lpBadTrack),
&ReturnedByteCount,
NULL
);
if (!b ) {
LocalFree(lpBadTrack);
return b;
}
}
LocalFree(lpBadTrack);
return TRUE;
}
BOOL LockVolume( HANDLE hDisk )
{
DWORD ReturnedByteCount;
return DeviceIoControl(
hDisk,
FSCTL_LOCK_VOLUME,
NULL,
0,
NULL,
0,
&ReturnedByteCount,
NULL
);
}
BOOL UnlockVolume( HANDLE hDisk )
{
DWORD ReturnedByteCount;
return DeviceIoControl(
hDisk,
FSCTL_UNLOCK_VOLUME,
NULL,
0,
NULL,
0,
&ReturnedByteCount,
NULL
);
}
BOOL DismountVolume( HANDLE hDisk )
{
DWORD ReturnedByteCount;
return DeviceIoControl(
hDisk,
FSCTL_DISMOUNT_VOLUME,
NULL,
0,
NULL,
0,
&ReturnedByteCount,
NULL
);
}
- 格式化磁盘
- 磁盘格式化
- 磁盘格式化
- 自己实现磁盘格式化
- linux 格式化磁盘
- dos下格式化磁盘
- linux格式化磁盘出错
- 磁盘为什么要格式化
- 磁盘格式化程序
- 磁盘格式化的原因
- fstab 及格式化磁盘
- linux格式化磁盘命令
- 磁盘误格式化
- Windows--如果格式化磁盘
- Linux mkfs --格式化磁盘
- linux磁盘格式化
- linux格式化磁盘命令
- 磁盘格式化的原理
- 贴片电阻及其命名方法
- 注册表从入门到精通
- 单结晶体管原理
- 场效应管检测方法与经验
- 不同种类二极管如何选用
- 格式化磁盘
- 电容器检测方法与经验
- 行轉列
- 三极管的检测方法与经验
- 好多DB2文章
- How To Research
- 可控硅检测方法与经验
- 浅谈C# 4.0带来的新特性
- N个数中选出最大(小)的n个数