README.TXT
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:
Windows编程
开发平台:
Visual C++
- SMS API Example: object enumeration. (enumobj.exe)
- ==================================================
- This sample illustrates the use of the SMS object enumeration APIs.
- The objects involved here are currently Architectures and Platforms,
- and their descendent objects.
- The API draws a distinction between 'first-class' and 'secondary objects.
- A 'first-class' object is one that can be described by SMS without any
- prior knowledge. The first-class objects that are known to the system
- is returned by calling SmsEnumObjectTypes. Calling this will currently
- result in two object-types being returned: Architectures and Platforms.
- In order to determine what Architectures exist the user then calls
- SmsEnumObjects, passing "Architectures" as the types of object that we
- are interested in. What is returned from this call depends on the
- individual database. The set of architectures will certainly include:
- Personal Computer
- SMSEvents
- SNMP Traps (SMS 1.2 and above)
- PackageLocation
- UserGroups
- etc.
- These are all secondary objects whose type is "Architecture".
- It is now possible to determine what objects each of these contain.
- For instance, every object of type 'Architecture' will contain one or
- more object of type 'Group', such as "MICROSOFT|IDENTIFICATION|1.0".
- Note that it is impossible to determine what groups exist without first
- knowing what architecture the user is interested in. Similarly, while a
- Group object contains Attribute objects, it is impossible to know what
- Attributes exist without knowing what group we are talking about.
- This is why the SmsEnumObjects API has the notion of a predecessor list.
- The data type used by the API to describe an object that it returns
- is known as OBJDESCRIPTOR. Looking at the definition for this data type
- (see smsapi.h) we see that there are the following fields:
- DWORD objType Type of this object.
- SMSBUFF szName Object name (eg 'Personal Computer')
- SMSBUFF szFriendlyName Friendly name. Only used in groups
- where szName would be, eg,
- 'MICROSOFT|IDENTIFICATION|1.0', the
- friendly name would be 'Identification'.
- BOOL bGotFriendlyName TRUE if we have a friendly name.
- DWORD dwRelopMin For attributes, indicates range of
- DWORD dwRelopMax relational operators that can be used
- for this attribute.
- BOOL bGotRelops TRUE if we have the relops fields set.
- The 'objType' parameter is one of the set of OT_ defines (also in smsapi.h).
- This tells the user what type of object is described by this OBJDESCRIPTOR.
- 'szName' provides the name for this object (eg 'Personal Computer', 'SMSID').
- 'szFriendlyName' if this is not null then it gives a user-friendly name for
- the object (see above). This is only used in the case of Group objects, but
- the 'bGotFriendlyName' datum will indicate whether this field is present
- or not.
- 'dwRelopMin' and 'dwRelopMax' are used by attributes. They inform the caller
- what the range of operators are for the attribute in question. 'bGotRelops'
- is TRUE if these fields are present.
- The values of these relational operators is from the file qrycodes.h.
- Note that this example operates in a recursive manner in order to enumerate
- all objects that are known to the API set.
- A different use would of the APIs would be something like: given a specific
- architecture and a specific group, what attributes exist. Code for this would
- be something like:
- (where Architecture is Personal Computer, and Group is MICROSOFT|
- VIDEO|1.0)
- SMSBUFF aPreds[10];
- strcpy( aPreds[0], "Architectures" );
- strcpy( aPreds[1], "MICROSOFT|VIDEO|1.0 );
- strcpy( aPreds[2], "MICROSOFT|VIDEO|1.0 );
- SmsEnumObjects( hConnect, // Handle to datasource connection.
- pszObj, // Attribute.
- pPreds, // see above.
- ctPreds, // 3: Architectures, PC, MS|VIDEO|1.0
- Objects, // filled in by API.
- &ctObjs ); // filled in by API.
- This would return, in 'Objects', all attributes for the video group.