在这里,记录一个自己刚刚犯过的很二的错误
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;