README.TXT
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1.     SMS API Example: object enumeration. (enumobj.exe)
  2.     ==================================================
  3. This sample illustrates the use of the SMS object enumeration APIs.
  4. The objects involved here are currently Architectures and Platforms,
  5. and their descendent objects.
  6. The API draws a distinction between 'first-class' and 'secondary objects.
  7. A 'first-class' object is one that can be described by SMS without any
  8. prior knowledge. The first-class objects that are known to the system
  9. is returned by calling SmsEnumObjectTypes. Calling this will currently
  10. result in two object-types being returned: Architectures and Platforms.
  11. In order to determine what Architectures exist the user then calls
  12. SmsEnumObjects, passing "Architectures" as the types of object that we
  13. are interested in. What is returned from this call depends on the
  14. individual database. The set of architectures will certainly include:
  15.         Personal Computer
  16.         SMSEvents
  17.         SNMP Traps      (SMS 1.2 and above)
  18.         PackageLocation
  19.         UserGroups
  20.         etc.
  21. These are all secondary objects whose type is "Architecture".
  22. It is now possible to determine what objects each of these contain.
  23. For instance, every object of type 'Architecture' will contain one or
  24. more object of type 'Group', such as "MICROSOFT|IDENTIFICATION|1.0".
  25. Note that it is impossible to determine what groups exist without first
  26. knowing what architecture the user is interested in. Similarly, while a
  27. Group object contains Attribute objects, it is impossible to know what
  28. Attributes exist without knowing what group we are talking about.
  29. This is why the SmsEnumObjects API has the notion of a predecessor list.
  30. The data type used by the API to describe an object that it returns
  31. is known as OBJDESCRIPTOR. Looking at the definition for this data type
  32. (see smsapi.h) we see that there are the following fields:
  33.         
  34.     DWORD objType                Type of this object.
  35.     SMSBUFF szName               Object name (eg 'Personal Computer')
  36.     SMSBUFF szFriendlyName       Friendly name. Only used in groups
  37.                                  where szName would be, eg,
  38.                                  'MICROSOFT|IDENTIFICATION|1.0', the
  39.                                  friendly name would be 'Identification'.
  40.     BOOL bGotFriendlyName        TRUE if we have a friendly name.
  41.     DWORD dwRelopMin             For attributes, indicates range of
  42.     DWORD dwRelopMax             relational operators that can be used
  43.                                  for this attribute.
  44.     BOOL bGotRelops              TRUE if we have the relops fields set.
  45. The 'objType' parameter is one of the set of OT_ defines (also in smsapi.h).
  46. This tells the user what type of object is described by this OBJDESCRIPTOR.
  47. 'szName' provides the name for this object (eg 'Personal Computer', 'SMSID').
  48. 'szFriendlyName' if this is not null then it gives a user-friendly name for
  49. the object (see above). This is only used in the case of Group objects, but
  50. the 'bGotFriendlyName' datum will indicate whether this field is present
  51. or not.
  52. 'dwRelopMin' and 'dwRelopMax' are used by attributes. They inform the caller
  53. what the range of operators are for the attribute in question. 'bGotRelops'
  54. is TRUE if these fields are present.
  55. The values of these relational operators is from the file qrycodes.h.
  56. Note that this example operates in a recursive manner in order to enumerate
  57. all objects that are known to the API set.
  58. A different use would of the APIs would be something like: given a specific
  59. architecture and a specific group, what attributes exist. Code for this would
  60. be something like:
  61.         (where Architecture is Personal Computer, and Group is MICROSOFT|
  62.          VIDEO|1.0)
  63.     SMSBUFF aPreds[10];
  64.     strcpy( aPreds[0], "Architectures" );
  65.     strcpy( aPreds[1], "MICROSOFT|VIDEO|1.0 );
  66.     strcpy( aPreds[2], "MICROSOFT|VIDEO|1.0 );
  67.     SmsEnumObjects( hConnect,   // Handle to datasource connection.
  68.                     pszObj,     // Attribute.
  69.                     pPreds,     // see above.
  70.                     ctPreds,    // 3: Architectures, PC, MS|VIDEO|1.0
  71.                     Objects,    // filled in by API.
  72.                     &ctObjs );  // filled in by API.
  73. This would return, in 'Objects', all attributes for the video group.