天天看點

使用BOOL變量犯過的錯誤

在這裡,記錄一個自己剛剛犯過的很二的錯誤
HANDLE hDevice = NULL; 
hDevice = CreateFile(szPath,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);if (INVALID_HANDLE_VALUE == hDevice) 
return SAGE_API_ERR_OPEN_DEV_FAILED;
dwDiskNo = TRUE;
return SAGE_API_ERR_SUC;

 }在這段代碼前面我定義了bool變量   BOOL dwDiskNo
在這段代碼中,我用bool變量記錄一種狀态。但是,注意,我的bool變量隻有在CreateFile的句柄輸出為SAGE_API_ERR_SUC的時候,才會BOOL變量指派。那麼,在運作整個函數的時候,隻要CreateFile的輸出為RUGUOSAGE_API_ERR_SUC,那麼BOOL變量就會被指派為TRUE,而程式接着運作,即使CreateFile的輸出INVALID_HANDLE_VALUE ,因為這時候沒有對BOOL變量進行指派,是以BOOL變量會保留着前面一次的執行結果。、,進而造成程式運作時候的BUG。改變一下,根據CreateFile傳回值的不同,對BOOL變量進行不同的指派,程式就正常了。
HANDLE hDevice = NULL; 
hDevice = CreateFile(szPath,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);

if (INVALID_HANDLE_VALUE == hDevice)
{
dwDiskNo=FALSE;
return SAGE_API_ERR_OPEN_DEV_FAILED;
}
dwDiskNo = TRUE;
return SAGE_API_ERR_SUC;