Apple Network Setup Network Card User Manual


 
CHAPTER 2
Using Network Setup
Working with Sets 45
kOTCfgSetsStructPref,
&thisStruct, sizeof(thisStruct));
if ((err == noErr) && ((thisStruct.fFlags & kOTCfgSetsFlagActiveMask) !=
0)) {
found = true;
break;
}
if (err != noErr) {
break;
}
}
if ( ! found ) {
err = kCfgErrEntityNotFound;
}
}
if (err == noErr) {
*activeSet = (*entityRefs)[entityIndex];
}
if (entityRefs != nil) {
DisposeHandle( (Handle) entityRefs ); assert(MemError() ==
noErr);
}
return err;
}
The remaining two steps for finding the set entity of a particular class and type
are implemented by the MyFindFirstActiveEntity routine, shown in Listing
2-14. It calls MyFindActiveSet (Listing 2-13) to find the entity reference of the
active set entity. The MyFindFirstActiveEntity routine then reads the
kOTCfgSetsVectorPref preference out of the active set entity. This preference is a
count field followed by an unbounded array of CfgSetsElement structures, each
of which represents an entity in the set. Because of its variable size,
MyFindFirstActiveEntity reads the preference by calling
MyReadVariableSizePref (Listing 2-10). Once it has the array of information
about entities contained in the set, MyFindFirstActiveEntity iterates over that
array looking for the first element whose class and type matches the required
class and type specified by the caller. When it finds the correct entity in the set,
MyFindFirstActiveEntity breaks out of the loop and returns the found entity
reference to the caller.