728x90
디스크 상태를 변경하고 싶다면 아래와 같이 함수를 작성하면 됩니다
#define IOCTL_DISK_SET_DISK_ATTRIBUTES CTL_CODE(IOCTL_DISK_BASE, 0x003d, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define DISK_ATTRIBUTE_OFFLINE 0x0000000000000001
typedef struct _SET_DISK_ATTRIBUTES {
ULONG Version;
BOOLEAN Persist;
BOOLEAN RelinquishOwnership;
BOOLEAN Reserved1[2];
ULONGLONG Attributes;
ULONGLONG AttributesMask;
GUID Owner;
} SET_DISK_ATTRIBUTES, *PSET_DISK_ATTRIBUTES;
BOOL DiskState(BOOL bOffLine)
{
CString strDrive;
strDrive.Format(_T("\\\\.\\PhysicalDrive0")); //0번 디스크
HANDLE hDisk = CreateFile(strDrive,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if(hDisk != INVALID_HANDLE_VALUE)
{
DWORD dwRet;
SET_DISK_ATTRIBUTES disk_attr;
ZeroMemory(&disk_attr, sizeof(disk_attr));
disk_attr.Version = sizeof(SET_DISK_ATTRIBUTES);
disk_attr.Attributes = (bOffLine ? DISK_ATTRIBUTE_OFFLINE : 0);
disk_attr.AttributesMask = DISK_ATTRIBUTE_OFFLINE;
DeviceIoControl(hDisk, IOCTL_DISK_SET_DISK_ATTRIBUTES, &disk_attr, disk_attr.Version, NULL, 0, &dwRet, NULL);
CloseHandle(hDisk);
return TRUE;
}
return FALSE;
}
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
728x90
반응형
'Application > MFC' 카테고리의 다른 글
[MFC] 프로세스 우선 순위 변경 (0) | 2023.04.18 |
---|---|
[MFC] ReverseMemcpy 메모리값 반전 (0) | 2023.04.17 |
[MFC] 볼륨으로 디스크 번호 가져오기 (Get Volume Disk Number) (0) | 2023.03.21 |
[MFC] WriteFile & ReadFile & OVERLAPPED 사용 방법 (0) | 2023.03.17 |
[MFC] Static 글자 색 및 배경 색 변경 (0) | 2023.03.14 |