BOOL CNdasLogicalDevice::IsVolatile() { ximeta::CAutoLock autolock(this); DWORD nUnitDevices = GetUnitDeviceCount(); for (DWORD i = 0; i < nUnitDevices; ++i) { CRefObjPtr<CNdasUnitDevice> pUnitDevice = GetUnitDevice(i); // Unit Device can be null if (NULL == pUnitDevice.p) continue; CRefObjPtr<CNdasDevice> pDevice = pUnitDevice->GetParentDevice(); // If unit device is not null, parent device cannot be null _ASSERTE(NULL != pDevice.p); if (pDevice->IsVolatile()) { // If any single device is volatile, then it's volatile. return TRUE; } } // Otherwise, we don't consider it volatile. return FALSE; }