tôi loại muốn sử dụng DeviceIOControl vì nó mang lại cho tôi khả năng để đẩy bất kỳ loại ổ đĩa di động (như USB và đèn flash-đĩa như cũng như khay CD). Đà codez đúng đẩy một đĩa sử dụng DeviceIOControl được (chỉ cần thêm lỗi xử lý thích hợp):
bool ejectDisk(TCHAR driveLetter)
{
TCHAR tmp[10];
_stprintf(tmp, _T("\\\\.\\%c:"), driveLetter);
HANDLE handle = CreateFile(tmp, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
DWORD bytes = 0;
DeviceIoControl(handle, FSCTL_LOCK_VOLUME, 0, 0, 0, 0, &bytes, 0);
DeviceIoControl(handle, FSCTL_DISMOUNT_VOLUME, 0, 0, 0, 0, &bytes, 0);
DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, 0, 0, 0, 0, &bytes, 0);
CloseHandle(handle);
return true;
}
Nguồn
2008-09-16 21:24:35
Tính năng này hoạt động như thế nào trên một hệ thống có nhiều ổ đĩa? Tôi không thấy bất cứ điều gì để chỉ định một ổ đĩa. – OwenP
-1 Bỏ phiếu xuống, mci là một công nghệ cổ đại (Win3.x) và chỉ hoạt động tốt cho một ổ đĩa đơn. Ngoài ra windows media player phải được cài đặt? nhưng không chắc chắn. Các phiên bản 'N' của châu Âu không đi kèm với Media Player, vì vậy hãy cẩn thận. – unixman83
@unixman phương án được đề xuất là gì? Đó có phải là DeviceIoControl không? – jalf