⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.cpp

📁 获得磁盘详细信息
💻 CPP
字号:
/* The code of interest is in the subroutine GetDriveGeometry. The code in main shows how to interpret the results of the IOCTL call. */ 
#include <windows.h> 
#include <winioctl.h> 
#include "stdio.h"
BOOL GetDriveGeometry(DISK_GEOMETRY *pdg) 
{ 	
	HANDLE hDevice; // handle to the drive to be examined 
	BOOL bResult; // results flag 
	DWORD junk; // discard results 
	hDevice = CreateFile("\\\\.\\PhysicalDrive0", // drive to open 
		0, // no access to the drive 
		FILE_SHARE_READ | FILE_SHARE_WRITE, // share mode 
		NULL, // default security attributes 
		OPEN_EXISTING, // disposition 
		0, // file attributes 
		NULL); // do not copy file attributes 

	if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive 
	{ 
		return (FALSE); 
	} 

	bResult = DeviceIoControl(hDevice, // device to be queried 
		IOCTL_DISK_GET_DRIVE_GEOMETRY,//	IOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to perform 
		NULL,
		0, // no input buffer 
		pdg, 
		sizeof(*pdg), // output buffer 
		&junk, // # bytes returned 
		NULL); // synchronous I/O 

	CloseHandle(hDevice); 

	return (bResult);
} 

int main(int argc, char *argv[])
{ 
	DISK_GEOMETRY pdg; // disk drive geometry structure 
	BOOL bResult; // generic results flag 
	ULONGLONG DiskSize; // size of the drive, in bytes 
	
	bResult = GetDriveGeometry (&pdg); 

	if (bResult) 
	{ 
		printf("Cylinders = %I64d\n", pdg.Cylinders); 
		printf("Tracks per cylinder = %ld\n", (ULONG)pdg.TracksPerCylinder); 
		printf("Sectors per track = %ld\n", (ULONG) pdg.SectorsPerTrack); 
		printf("Bytes per sector = %ld\n", (ULONG) pdg.BytesPerSector); 
		DiskSize = pdg.Cylinders.QuadPart * (ULONG)pdg.TracksPerCylinder
			*(ULONG)pdg.SectorsPerTrack * (ULONG)pdg.BytesPerSector; 
		printf("Disk size = %I64d (Bytes) = %I64d (Mb)\n", DiskSize, DiskSize / (1024 * 1024)); 
	} 
	else 
	{ 
		printf("GetDriveGeometry failed. Error %ld.\n",GetLastError()); 
	} 

	return ((int)bResult);
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -