對(duì)GetLogicalDriveStrings的理解:
函數(shù)原形:
DWORD GetLogicalDriveStrings(
DWORD nBufferLength, // size of buffer
LPTSTR lpBuffer // drive strings buffer
);
說(shuō)明:GetLogicalDriveStrings函數(shù)將一個(gè)緩沖區(qū)lpBuffer填入在計(jì)算機(jī)上存在的硬盤盤符.
參數(shù)說(shuō)明:
nBufferLength是緩沖區(qū)lpBuffer的大小,以字節(jié)為單位.它的大小不包含最后的空字符.如果它的值為零,緩沖區(qū)不可用.
lpBuffer指向一個(gè)接收各種以零結(jié)尾的字符串緩沖區(qū),一個(gè)空字符用來(lái)區(qū)分各個(gè)可用硬盤的,最后在末尾有再以空字符結(jié)尾,假如
你的電腦上有C,D兩個(gè)硬盤盤符,則它能得到一個(gè)字符串是:
'C',':','\',' ','D',':','\',' ',' '
即:C:\<null>D:\<null><null>
返回值:
如果函數(shù)成功結(jié)束,返回值是獲得的字符串長(zhǎng)度,以字節(jié)為單位,不包括最后的一個(gè)空字符,好像上面的字符串獲得的長(zhǎng)度就是8;硬盤
盤符的個(gè)數(shù)自乘以4就是了;記住:一個(gè)ANSI-ASCII碼的空字符是一個(gè)字節(jié),而一個(gè)Unicode碼的空字符是兩個(gè)字節(jié).如果這個(gè)緩沖區(qū)不
夠大,返回值會(huì)比nBufferLength大,這是緩沖區(qū)要求去獲得全部硬盤盤符的原因.
如果函數(shù)失敗,這個(gè)返回值是0;用GetLastError可以捕獲這個(gè)錯(cuò)誤信息!