ZRef<Device> Manager_Union::Open(uint64 iDeviceID)
	{
	ZGuardRMtxR locker(fMutex);
	for (vector<Entry_t>::iterator iterEntries = fEntries.begin();
		iterEntries != fEntries.end(); ++iterEntries)
		{
		Entry_t& curEntry = *iterEntries;
		for (vector<pair<uint64, uint64> >::iterator j = curEntry.fIDs.begin();
			j != curEntry.fIDs.end(); /*no inc*/)
			{
			if (j->first == iDeviceID)
				{
				ZRef<Manager> foundManager = iterEntries->fManager;
				uint64 foundDeviceID = j->second;
				locker.Release();
				return foundManager->Open(foundDeviceID);
				}
			}
		}
	return null;
	}