嗨,朋友我正在一個應用程序,我應該檢查SD卡的文件系統,我也需要檢查插入的SD卡是否寫保護。我成功地讓文件系統的詳細信息如下:如何檢查插入的SD卡是否被寫保護或不在Qt中?
TCHAR volumeName[MAX_PATH + 1] = { 0 };
TCHAR fileSystemName[MAX_PATH + 1] = { 0 };
DWORD serialNumber = 0;
DWORD maxComponentLen = 0;
DWORD fileSystemFlags = 0;
LPCWSTR path = deviceData->m_strPath.utf16(); // deviceData gives me the path of the SD Card
// Get the file system details
if (GetVolumeInformation(
path,
volumeName,
ARRAYSIZE(volumeName),
&serialNumber,
&maxComponentLen,
&fileSystemFlags,
fileSystemName,
ARRAYSIZE(fileSystemName)))
{
newData.strFileSystem = QString::fromUtf16(fileSystemName);
}
m_SDInfoList.append(newData); // m_SDInfoList is QList
用這種方法我結識的文件系統是FAT32或NTFS。現在我想實現寫保護的細節。他們是一個Qt的API,可以給我插入的SD卡是否寫保護?請幫助:)
更新:
這是我做過什麼用QFileInfo:
QFileInfo fileInfo(deviceData->m_strPath);
if(!fileInfo.isWritable())
{
newData.strStatus = "WriteProtect Enabled";
}
else
{
newData.strStatus = "WriteProtect Disabled";
}
它最終總是給人即使我已經設置了寫保護允許我寫保護禁用。
你正在尋找一個Qt的'GetVolumeInformation' Win32函數嗎?否則,'fileSystemFlags'返回的標誌集中的FILE_READ_ONLY_VOLUME標誌應該提供這些信息 – 2013-04-22 12:46:07
@Andreas:就像我們所知道的,GetVolumeInformation是windows APi,因爲我找不到任何可以使用文件格式細節的Qt API。現在我想知道如何通過fileSystemFlags獲得寫保護狀態? – Gojira 2013-04-22 12:48:20
您只需檢查'fileSystemFlags&FILE_READ_ONLY_VOLUME'是否等於0 - 如果不是,則標誌被設置,表示只讀卷 – 2013-04-22 12:52:25