IOCTL_DISK_GET_DRIVE_GEOMETRY
c++ 구현:
#include
#include
#include
int main()
{
HANDLE hDev = CreateFile("\\\\.\\G:",
GENERIC_READ,
FILE_SHARE_READ,
0,
OPEN_EXISTING,
0,
0);
if (hDev != INVALID_HANDLE_VALUE)
{
DISK_GEOMETRY disk_geometry;
DeviceIoControl(hDev, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, &disk_geometry, sizeof(disk_geometry), NULL, NULL);
printf(" : %d
", disk_geometry.Cylinders); //
printf(" : %d
", disk_geometry.MediaType); //
printf(" : %d
", disk_geometry.TracksPerCylinder); //
printf(" : %d
", disk_geometry.SectorsPerTrack); //
printf(" : %d
", disk_geometry.BytesPerSector); //
CloseHandle(hDev);
}
}
Golang 구현:
type DISK_GEOMETRY struct {
Cylinders int64
MediaType int32
TracksPerCylinder int32
SectorsPerTrack int32
BytesPerSector int32
}
func getHdev(letter byte) int {
deviceName := "\\\\.\\" + string(letter) + ":"
kernel32 := syscall.NewLazyDLL("kernel32.dll")
CreateFile := kernel32.NewProc("CreateFileA")
hDev, _, _ := CreateFile.Call(BytePtr([]byte(deviceName)), uintptr(0x80000000), uintptr(1), 0, uintptr(3), 0, 0)
return int(hDev)
}
func getDiskGeometry(hDev int) {
const IOCTL_DISK_GET_DRIVE_GEOMETRY = 0x70000
var read = 0
disk_geometry := DISK_GEOMETRY{}
kernel32 := syscall.NewLazyDLL("kernel32.dll")
DeviceIoControl := kernel32.NewProc("DeviceIoControl")
DeviceIoControl.Call(uintptr(hDev), uintptr(IOCTL_DISK_GET_DRIVE_GEOMETRY), 0, 0, uintptr(unsafe.Pointer(&disk_geometry)), 24, uintptr(unsafe.Pointer(&read)), 0)
fmt.Println(" :", disk_geometry.Cylinders) //
fmt.Println(" :", disk_geometry.MediaType) //
fmt.Println(" :", disk_geometry.TracksPerCylinder) //
fmt.Println(" :", disk_geometry.SectorsPerTrack) //
fmt.Println(" :", disk_geometry.BytesPerSector) //
fmt.Println(" :", (disk_geometry.Cylinders*int64(disk_geometry.TracksPerCylinder)*int64(disk_geometry.SectorsPerTrack)*int64(disk_geometry.BytesPerSector))/1024/1024, "MB")
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.