home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / book / dnal1mst.inf (.txt) < prev    next >
OS/2 Help File  |  1999-05-12  |  198KB  |  7,328 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. About This Book ΓòÉΓòÉΓòÉ
  3.  
  4. This book is designed as a programmer's guide for the IBM SystemView Agent 
  5. Version 1 program (hereafter referred to as SystemView Agent). SystemView Agent 
  6. provides access to system components that have been defined according to the 
  7. Desktop Management Interface (DMI) standard by acting as an SNMP agent. These 
  8. components can be hardware or software in the system that have been defined in 
  9. the Management Information Format (MIF). Although the DMI itself is 
  10. protocol-independent, SystemView Agent can detect any DMI-enabled components in 
  11. the system and translate the MIF information into SNMP management information 
  12. bases (MIBs). 
  13.  
  14. This book contains information for versions of the SystemView Agent program 
  15. that run in the following environments: 
  16.  
  17.      OS/2 
  18.      AIX 
  19.      Windows NT and Windows 95 
  20.  
  21.  Information that is specific to a particular operating system is identified in 
  22.  the text. If no operating system references are included, the information is 
  23.  pertinent to all operating systems that the SystemView Agent program supports. 
  24.  
  25.  
  26. ΓòÉΓòÉΓòÉ 1.1. Who Should Use This Book ΓòÉΓòÉΓòÉ
  27.  
  28. You should read this book if you are an agent programmer who will use 
  29. SystemView Agent. You should use this book if you are doing one or more of the 
  30. following: 
  31.  
  32.      Developing a management application that uses the DMI 
  33.  
  34.      Enabling a product for DMI technology 
  35.  
  36.  Before reading this book, you should have a general understanding of network 
  37.  management, the operating system on which you are working, and the C 
  38.  programming language. 
  39.  
  40.  In addition, you should be familiar with the Desktop Management Interface 
  41.  Specification, Version 1.1, which is created and distributed by the Desktop 
  42.  Management Task Force. 
  43.  
  44.  
  45. ΓòÉΓòÉΓòÉ 1.2. How to Use This Book ΓòÉΓòÉΓòÉ
  46.  
  47. Read Introducing the SystemView Agent and the DMI for an introduction to the 
  48. SystemView Agent program and a brief overview of the Desktop Management Task 
  49. Force (DMTF) specification of the DMI. This chapter also outlines the steps 
  50. involved in developing management applications and developing managed 
  51. components that use the DMI. 
  52.  
  53. Read Understanding the MIF for information about the structure and conventions 
  54. of the Management Information Format (MIF) used to describe components to the 
  55. DMI. 
  56.  
  57. Read Using the DMI Management Interface for information about using the 
  58. Management Interface (MI) of the DMI. This chapter describes registration with 
  59. the service layer and status code processing. 
  60.  
  61. Read Using the DMI Component Interface for information about using the 
  62. Component Interface (CI) of the DMI. This chapter describes installing MIF 
  63. files, registering component instrumentation with the service layer, and 
  64. generating indications. 
  65.  
  66. Read DMI Command Blocks for information on the command blocks used to build DMI 
  67. commands. This chapter describes common command blocks, MI command blocks, and 
  68. CI command blocks. 
  69.  
  70. Read Enabling a Product for the DMI for information about defining the 
  71. manageable elements of a product to be managed through the DMI. This chapter 
  72. discusses how to plan and code the Management Information Format (MIF) file for 
  73. the new component and how to create program code to manage the component. How 
  74. to send events to the service layer is also discussed. 
  75.  
  76. Read DMI Procedure Library (DMIAPI) for information about the DMI procedure 
  77. library supplied with the SystemView Agent. This chapter describes the function 
  78. calls and data types used to communicate with the DMI. 
  79.  
  80. Read Implementing DMI on OS/2 for information about developing applications and 
  81. component instrumentation in an OS/2 environment. 
  82.  
  83. Read Implementing DMI on AIX for information about developing applications and 
  84. component instrumentation in an AIX environment. 
  85.  
  86. Read Implementing DMI on Windows NT/Windows 95 for information about developing 
  87. applications and component instrumentation in a Windows NT or Windows 95 
  88. environment. 
  89.  
  90. This book also contains a glossary, a bibliography, and an index. 
  91.  
  92.  
  93. ΓòÉΓòÉΓòÉ 1.2.1. Highlighting and Operation Naming Conventions ΓòÉΓòÉΓòÉ
  94.  
  95. The following highlighting conventions are used in this book with the noted 
  96. exceptions: 
  97.  
  98.  Bold           Identifies menu choices, pushbuttons, commands, and shell 
  99.                 script paths (except in reference information), default values, 
  100.                 user selections, daemon paths (on first occurrence), and flags 
  101.                 (in parameter lists). 
  102.  
  103.  Italics        Identifies parameters whose actual names or values are to be 
  104.                 supplied by the user, and terms that are defined in the 
  105.                 following text. 
  106.  
  107.  Monospace      Identifies subjects of examples, messages in text, examples of 
  108.                 portions of program code, examples of text you might see 
  109.                 displayed, information you should actually type, and examples 
  110.                 used as teaching aids. 
  111.  
  112.  
  113. ΓòÉΓòÉΓòÉ 1.2.2. Terms and Abbreviations ΓòÉΓòÉΓòÉ
  114.  
  115. This book uses the following terms: 
  116.  
  117.  CI                  Component Interface 
  118.  
  119.  DMI                 Desktop Management Interface 
  120.  
  121.  DMTF                Desktop Management Task Force 
  122.  
  123.  MI                  Management Interface 
  124.  
  125.  MIF                 Management Information Format 
  126.  
  127.  RFC                 An abbreviation for Internet Request for Comments 
  128.                      documents 
  129.  
  130.  SNMP                Simple Network Management Protocol 
  131.  
  132.  
  133. ΓòÉΓòÉΓòÉ 1.3. Where to Find More Information ΓòÉΓòÉΓòÉ
  134.  
  135. The SystemView Agent worldwide web page can be accessed through the following 
  136. uniform resource locator (URL): http:// www.software.ibm.com/ 
  137. sysman/technology/caprod.html. See the web page for current updates and news 
  138. about the product. 
  139.  
  140. The following publications are included with the SystemView Agent program: 
  141.  
  142.      SystemView Agent for OS/2 User's Guide, SVAG-USR2 (OS/2 installations 
  143.       only) 
  144.      SystemView Agent for AIX User's Guide, SVAG-USRX (AIX installations only) 
  145.      SystemView Agent for Win32 User's Guide, SVAG-USRW (Windows NT/Windows 95 
  146.       installations only) 
  147.      SystemView Agent DMI Programmer's Guide, SVAG-DMIP 
  148.      SystemView Agent DPI Programmer's Guide, SVAG-DPIP (OS/2 installations 
  149.       only) 
  150.  
  151.  The documents included with SystemView Agent are available in softcopy format 
  152.  in the OS/2 and AIX environments. You can use one of the following browsers: 
  153.  
  154.      For OS/2 installations, use the VIEW facility. 
  155.      For AIX installations, use the DynaText browser. 
  156.  
  157.  SystemView Agent supports the most current DMI specification. At this time, 
  158.  this is DMI Version 1.1. The Desktop Management Interface Specification, 
  159.  Version 1.1 is available from the Desktop Management Task Force. 
  160.  
  161.  Publications relevant to the SystemView Agent SNMP function are: 
  162.  
  163.      RFC1592, which is the SNMP DPI 2.0 RFC. 
  164.      RFC1157, which describes SNMP Version 1 
  165.      RFC1901 through RFC1910, which describe SNMP Version 2 
  166.  
  167.  Other sources of information that can be helpful when using SystemView Agent 
  168.  are listed in Bibliography. 
  169.  
  170.  You can request IBM publications from your IBM representative or the IBM 
  171.  branch office serving your region. You can also contact the place where you 
  172.  purchased the SystemView Agent program. 
  173.  
  174.  
  175. ΓòÉΓòÉΓòÉ 2. Introducing the SystemView Agent and the DMI ΓòÉΓòÉΓòÉ
  176.  
  177. With the Simple Network Management Protocol (SNMP), the SystemView Agent 
  178. program provides remote management applications with access to DMI-enabled 
  179. products in a system. Local management applications that can communicate with 
  180. the DMI can also query and set MIF information for DMI-enabled components. 
  181.  
  182. This book describes the steps necessary to design and implement management 
  183. applications and manageable products with DMI technology. The information 
  184. presented here is accompanied with examples of program code to help show how 
  185. the DMI elements can be implemented. All of the examples used in this book in 
  186. their complete form are in the the following directories: 
  187.  
  188.      For OS/2 installations, the DMI\EXAMPLES subdirectory within the 
  189.       directory where you installed the SystemView Agent program. 
  190.  
  191.      For AIX installations, the /usr/lpp/sva/samples subdirectory. 
  192.  
  193.      For Windows NT/Windows 95 installations, the DMI\EXAMPLES subdirectory 
  194.       within the directory where you installed the SystemView Agent program. 
  195.  
  196.  
  197. ΓòÉΓòÉΓòÉ 2.1. SystemView Agent and the Desktop Management Interface ΓòÉΓòÉΓòÉ
  198.  
  199. The Desktop Management Task Force (DMTF) is a vendor alliance. This alliance 
  200. was convened to streamline the management of diverse operating systems commonly 
  201. found in an enterprise.  The DMTF includes industry-wide workgroups, which 
  202. identify the pieces of information that are necessary to manage specific 
  203. categories of devices. 
  204.  
  205. As part of this effort, the DMTF has published a standard that is called the 
  206. Desktop Management Interface Specification. 
  207.  
  208. The SystemView Agent program provides access to system components that have 
  209. been defined according to the DMI standard by acting as an SNMP agent. Although 
  210. the DMI itself is protocol-independent, SystemView Agent can detect any 
  211. DMI-enabled components in the system and translate the MIF information into 
  212. SNMP objects that conform to the management information base (MIB) format. This 
  213. MIF-to-MIB mapping is performed automatically by a DMI subagent provided with 
  214. SystemView Agent. 
  215.  
  216.  
  217. ΓòÉΓòÉΓòÉ 2.1.1. What is the Desktop Management Interface? ΓòÉΓòÉΓòÉ
  218.  
  219. The Desktop Management Interface (DMI) comprises a set of interfaces and a 
  220. service layer that mediate between management applications and components 
  221. residing in a system. The DMI is a free-standing interface that is not tied to 
  222. any particular operating system or management protocol. 
  223.  
  224. In the context of the DMI, a component is a physical or logical element of a 
  225. system, such as a piece of hardware or software. The SystemView Agent program 
  226. can access information for components that you have defined for your system or 
  227. for components that are predefined by other products. The program code that 
  228. manages the component directly is referred to as the component instrumentation. 
  229.  
  230. Information about a component is defined in a language that is called the 
  231. Management Information Format (MIF). The MIF file for a component describes all 
  232. aspects of that component that can be managed by an application. The MIF files 
  233. for the components in a system are kept in a MIF database, where they can be 
  234. accessed through the DMI. 
  235.  
  236. Elements of the DMI describes the elements that make up the DMI. 
  237.  
  238. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  239. Γöé Table 1. Elements of the DMI                         Γöé
  240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  241. Γöé DMI ELEMENT       Γöé DESCRIPTION                     Γöé
  242. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  243. Γöé Component Interface   Γöé The CI provides access to component information   Γöé
  244. Γöé (CI)           Γöé and enables the component instrumentation to    Γöé
  245. Γöé             Γöé install or remove its associated MIF.        Γöé
  246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  247. Γöé Management Interface   Γöé The MI enables management applications to access  Γöé
  248. Γöé (MI)           Γöé component information and register for event    Γöé
  249. Γöé             Γöé notifications.                   Γöé
  250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  251. Γöé Service layer      Γöé The service layer coordinates requests from man-  Γöé
  252. Γöé             Γöé agement applications to component instrumentation  Γöé
  253. Γöé             Γöé and performs other high-level synchronization    Γöé
  254. Γöé             Γöé between the MI and the CI.             Γöé
  255. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  256.  
  257. When a new component is introduced to the system, the component installs the 
  258. component MIF in the MIF database and notifies the service layer that the 
  259. component is available. The component then notifies any registered management 
  260. applications of its presence by sending an unsolicited notification, or event, 
  261. to the service layer. The service layer forwards the event to the appropriate 
  262. management applications in the form of an indication. 
  263.  
  264. If a component does have any instrumentation associated with it, the MIF file 
  265. for the component is composed of static information. 
  266.  
  267. If a component is using instrumentation to provide access to its information, 
  268. the instrumentation can be one of the following types of programs: 
  269.  
  270.  Overlay        Loaded only when the service layer receives a request for 
  271.                 information. After the request is satisfied, the overlay 
  272.                 program is unloaded. 
  273.  
  274.  Direct-interface Runs continuously as a separate process. When the service 
  275.                 layer receives a request, it passes control temporarily to the 
  276.                 direct-interface program, which retrieves the information and 
  277.                 passes it back to the service layer. 
  278.  
  279.  If a management application wants to display or change information for a 
  280.  component, the application registers with the service layer. After 
  281.  registration, the management application can access component information with 
  282.  Get, Set, and List commands. Get and Set commands are used to read and write 
  283.  MIF attributes that pertain to the manageable elements of a component. 
  284.  
  285.  The service layer receives requests from the management application through 
  286.  the MI and forwards them to the component instrumentation through the CI. When 
  287.  responses come back to the service layer from the component, the service layer 
  288.  passes them back to the management application through the MI. By using the 
  289.  DMI to transfer information: 
  290.  
  291.      The management application does not need to understand the mechanism by 
  292.       which instrumentation gathers component information 
  293.  
  294.      The instrumentation does not need to understand the component protocol 
  295.       used by the management application. 
  296.  
  297.  
  298. ΓòÉΓòÉΓòÉ 2.1.2. How Does SystemView Agent Use the DMI? ΓòÉΓòÉΓòÉ
  299.  
  300. The SystemView Agent program extends the use of the DMI by providing a MIF 
  301. conversion utility and a DMI subagent that performs mapping of DMI information 
  302. into SNMP MIB information. Each MIF file in the system can be translated to an 
  303. SNMP MIB with the conversion utility and then loaded in a remote SNMP 
  304. management application. The management application can send requests to the DMI 
  305. subagent, which in turn converts the SNMP request into a DMI request. The 
  306. conversion is performed again, in reverse, when the DMI response is returned. 
  307. This enables the SNMP management application to participate in active 
  308. management of DMI-enabled components. 
  309.  
  310. The DMI subagent's ability to perform this MIF-to-MIB mapping enables an SNMP 
  311. management application to manage any component that implements the DMI. 
  312.  
  313.  
  314. ΓòÉΓòÉΓòÉ 3. Understanding the MIF ΓòÉΓòÉΓòÉ
  315.  
  316. Before you define the individual attributes that will populate your groups, you 
  317. must understand the Management Information Format (MIF). The MIF file is an 
  318. ASCII file that you create with a text editor to define the elements of your 
  319. component to the DMI. The DMI service layer maintains all installed MIFs in a 
  320. MIF database. 
  321.  
  322. This section describes the MIF in detail and includes information on the 
  323. following topics: 
  324.  
  325.      Conventions 
  326.      Common statements 
  327.      Definitions 
  328.  
  329.  
  330. ΓòÉΓòÉΓòÉ 3.1. MIF Conventions ΓòÉΓòÉΓòÉ
  331.  
  332. The MIF has the following conventions to be followed: 
  333.  
  334.      Lexical conventions 
  335.      Comments 
  336.      Keywords 
  337.      Data types 
  338.      Constants 
  339.      Definition block delimiters 
  340.      Language statement 
  341.  
  342.  
  343. ΓòÉΓòÉΓòÉ 3.1.1. Lexical Conventions ΓòÉΓòÉΓòÉ
  344.  
  345. The character sets that can be used with the MIF conform to one of the 
  346. following standards: 
  347.  
  348.      The International Standards Organization document ISO 8859-1 (Latin 
  349.       Alphabet No. 1) 
  350.  
  351.      The Unicode 1.1 specification 
  352.  
  353.  If a MIF is created according to the Unicode specification, the first two 
  354.  octets of the MIF file must be X'0xFE' and X'0xFF'. If the service layer does 
  355.  not detect these values in the MIF file, the service layer treats the file as 
  356.  an ISO 8859-1 MIF. 
  357.  
  358.  There are four classes of tokens: keywords, integer constants, literal 
  359.  strings, and separators. Blanks, tabs, newlines, carriage returns and comments 
  360.  (known collectively as white space) are ignored except as they serve to 
  361.  separate tokens, such as adjacent keywords and constants. 
  362.  
  363.  When interpreting tokens, the MIF is not case sensitive, unless the token is a 
  364.  literal string enclosed within double quote (") characters. Case is retained 
  365.  for the contents of a literal string. Literal strings separated by white space 
  366.  are concatenated and stored as one literal string. 
  367.  
  368.  
  369. ΓòÉΓòÉΓòÉ 3.1.2. Comments ΓòÉΓòÉΓòÉ
  370.  
  371. Comments can be placed anywhere in the MIF file to annotate the file's 
  372. contents. Two forward slashes (\\) are used to indicate the beginning of a 
  373. comment, and the comment continues through the end of the line. Comments are 
  374. ignored when the MIF file is interpreted. 
  375.  
  376.  
  377. ΓòÉΓòÉΓòÉ 3.1.3. Keywords ΓòÉΓòÉΓòÉ
  378.  
  379. MIF Keywords displays the keywords that can be used in the MIF. 
  380.  
  381. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  382. Γöé Table 2. MIF Keywords                             Γöé
  383. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  384. Γöé access          Γöé attribute         Γöé class          Γöé
  385. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  386. Γöé common          Γöé component         Γöé counter         Γöé
  387. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  388. Γöé counter64        Γöé date           Γöé description       Γöé
  389. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  390. Γöé direct-interface     Γöé displaystring       Γöé dos           Γöé
  391. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  392. Γöé end           Γöé enum           Γöé gauge          Γöé
  393. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  394. Γöé group          Γöé id            Γöé int           Γöé
  395. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  396. Γöé integer         Γöé integer64         Γöé int64          Γöé
  397. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  398. Γöé key           Γöé language         Γöé macos          Γöé
  399. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  400. Γöé name           Γöé octetstring        Γöé os2           Γöé
  401. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  402. Γöé path           Γöé read-only         Γöé read-write        Γöé
  403. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  404. Γöé start          Γöé storage          Γöé string          Γöé
  405. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  406. Γöé table          Γöé type           Γöé unix           Γöé
  407. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  408. Γöé unsupported       Γöé value           Γöé win16          Γöé
  409. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  410. Γöé win32          Γöé write-only        Γöé specific         Γöé
  411. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  412.  
  413.  
  414. ΓòÉΓòÉΓòÉ 3.1.4. Data Types ΓòÉΓòÉΓòÉ
  415.  
  416. The following data types are supported by the MIF: 
  417.  
  418.  integer (or int)    A 32-bit signed integer with no known semantics 
  419.  
  420.  integer64 (or int64) A 64-bit signed integer with no known semantics 
  421.  
  422.  gauge               A 32-bit unsigned integer that can increase or decrease. 
  423.                      When a gauge reaches its maximum value (2[32]-1), it 
  424.                      continues to report the maximum value until the value 
  425.                      decreases below the maximum. The speedometer of an 
  426.                      automobile is an example of a gauge. 
  427.  
  428.  counter             A 32-bit unsigned integer that never decreases. A counter 
  429.                      increases to its maximum value (2[32]-1 or 2[64]-1) and 
  430.                      reverts to zero when it reaches its maximum value. The 
  431.                      odometer of an automobile is an example of a counter. 
  432.  
  433.  counter64           A 64-bit unsigned integer that never decreases. A counter 
  434.                      increases to its maximum value (2[32]-1 or 2[64]-1) and 
  435.                      reverts to zero when it reaches its maximum value. 
  436.  
  437.  string(n) or displaystring(n) A displayable string of n octets. For ISO 8859-1 
  438.                      implementations, 1 octet per character; for Unicode 
  439.                      implementations, 2 octets per character. 
  440.  
  441.                      The value n represents the maximum number of octets in the 
  442.                      string, although the actual number of octets in use might 
  443.                      be shorter than this maximum value. The length of the 
  444.                      string is stored in the first four octets, which are not 
  445.                      included in the value n. You do not need to zero-terminate 
  446.                      the string as you do in the C and C++ programming 
  447.                      languages. The length of the string represents the number 
  448.                      of octets in the string, not the number of characters. 
  449.  
  450.                      The maximum value of n that the service layer can display 
  451.                      is 508. 
  452.  
  453.  octetstring(n)      A string of n octets that might or might not be 
  454.                      displayable. 
  455.  
  456.                      The value n represents the maximum number of octets in the 
  457.                      string, although the actual number of octets in use might 
  458.                      be shorter than this maximum value. The length of the 
  459.                      string is stored in the first four octets, which are not 
  460.                      included in the value n. You do not need to zero-terminate 
  461.                      the string as you do in the C and C++ programming 
  462.                      languages. The length of the string represents the number 
  463.                      of octets in the string, not the number of characters. 
  464.  
  465.  date                A 28-octet displayable string. 
  466.  
  467.                      Dates are defined according to the following format: 
  468.  
  469.                                           yyyymmddHHMMSS.uuuuuu+ooo
  470.  
  471.                      Where: 
  472.  
  473.                      yyyy           The year 
  474.  
  475.                      mm             The number of the month 
  476.  
  477.                      dd             The number of the day of the month 
  478.  
  479.                      HHMMSS         The hours, minutes, and seconds, 
  480.                                     respectively 
  481.  
  482.                      uuuuuu         The number of microseconds 
  483.  
  484.                      ooo            The offset from universal time, coordinated 
  485.                                     (UTC) in minutes. If east of UTC, the 
  486.                                     number is preceded by a plus (+) sign, if 
  487.                                     west of UTC, the number is preceded by a 
  488.                                     minus (-) sign, 
  489.  
  490.                      While the date value occupies only 25 octets, the date is 
  491.                      stored as a 28-octet field to account for memory 
  492.                      alignment. The last three octets are zeroes (/0). 
  493.  
  494.                      For example, Wednesday, May 25, 1994, at 1:30:15 PM EDT 
  495.                      would be represented as: 
  496.  
  497.                                           19940525133015.000000-300
  498.  
  499.                      If necessary, values must be padded with leading zeroes to 
  500.                      conform to the specified format, as in 05 being used to 
  501.                      represent the month of May. If a value is not supplied for 
  502.                      a field, each character in the field must be replaced with 
  503.                      an asterisk (*). 
  504.  
  505.  
  506. ΓòÉΓòÉΓòÉ 3.1.5. Constants ΓòÉΓòÉΓòÉ
  507.  
  508. Integer values can be specified according to the following format: 
  509.  
  510.  Syntax              Base 
  511.  
  512.  nnn                 Decimal 
  513.  
  514.  0nnn                Octal 
  515.  
  516.  0xnnn or 0Xnnn      Hexadecimal 
  517.  
  518.  Where n represents a digit in the appropriate base. 
  519.  
  520.  Literal strings are characters enclosed by double quote characters, such as 
  521.  "This is an example of a string". Literal strings that are separated by white 
  522.  space are concatenated and treated as one string for the purpose of 
  523.  interpreting the MIF file. 
  524.  
  525.  The literal escape character is the backslash (\) and is used to enter the 
  526.  following characters: 
  527.  
  528.  Sequence  Character 
  529.  
  530.  \a        Alert (ring terminal bell) 
  531.  
  532.  \b        Backspace 
  533.  
  534.  \f        Form feed 
  535.  
  536.  \n        New line 
  537.  
  538.  \r        Carriage return 
  539.  
  540.  \t        Horizontal tab 
  541.  
  542.  \v        Vertical tab 
  543.  
  544.  \\        Backslash 
  545.  
  546.  \"        Double quote 
  547.  
  548.  \xnn      Hexadecimal bit pattern. If the MIF file is in ISO 8859-1 format, 
  549.            the bit pattern can be one to two digits (\0 to \ff); if the file is 
  550.            in Unicode format, the bit pattern can be one to four digits (\0 to 
  551.            \ffff). 
  552.  
  553.  \ooo      Octal bit pattern. If the MIF file is in ISO 8859-1 format, the bit 
  554.            pattern can be one to three digits (\0 to \377); if the file is in 
  555.            Unicode format, the bit pattern can be one to six digits (\0 to 
  556.            \177777). bit pattern, octal 
  557.  
  558.  
  559. ΓòÉΓòÉΓòÉ 3.1.6. Block Scope ΓòÉΓòÉΓòÉ
  560.  
  561. The definition blocks specified by the MIF are delimited by the start and end 
  562. keywords. When using start and end, you must specify another keyword to 
  563. indicate the type of definition you are creating. Definition Block Keywords in 
  564. the MIF displays the keywords for the different block definitions in the MIF 
  565. and indicates where each is used. 
  566.  
  567. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  568. Γöé Table 3. Definition Block Keywords in the MIF                 Γöé
  569. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  570. Γöé KEYWORD    Γöé USED WITHIN  Γöé DESCRIPTION                  Γöé
  571. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  572. Γöé component   Γöé MIF file    Γöé Defines a component.  All other definition  Γöé
  573. Γöé        Γöé        Γöé blocks exist within the scope of this block. Γöé
  574. Γöé        Γöé        Γöé There can be only one component definition  Γöé
  575. Γöé        Γöé        Γöé in each MIF file.               Γöé
  576. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  577. Γöé path      Γöé component   Γöé Associates a symbolic string with path names Γöé
  578. Γöé        Γöé        Γöé in a specific operating system.  Path defi-  Γöé
  579. Γöé        Γöé        Γöé nitions are usually placed at the top of the Γöé
  580. Γöé        Γöé        Γöé MIF file before any group definitions are   Γöé
  581. Γöé        Γöé        Γöé specified.  Path definitions are optional in Γöé
  582. Γöé        Γöé        Γöé the MIF file.                 Γöé
  583. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  584. Γöé group     Γöé component   Γöé Defines a collection of attributes and is   Γöé
  585. Γöé        Γöé        Γöé sometimes used as a template row for a    Γöé
  586. Γöé        Γöé        Γöé table.  At least one group definition is   Γöé
  587. Γöé        Γöé        Γöé required in each MIF file.  Refer to     Γöé
  588. Γöé        Γöé        Γöé ComponentID Group for more information.    Γöé
  589. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  590. Γöé attribute   Γöé group     Γöé Defines a unit of managed data.  All attri-  Γöé
  591. Γöé        Γöé        Γöé bute definitions are specified within the   Γöé
  592. Γöé        Γöé        Γöé scope of a group definition.  A group defi-  Γöé
  593. Γöé        Γöé        Γöé nition must have at least one attribute    Γöé
  594. Γöé        Γöé        Γöé definition in it.               Γöé
  595. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  596. Γöé table     Γöé component   Γöé Defines one or more instances of a group   Γöé
  597. Γöé        Γöé        Γöé using a previously defined group.  Table   Γöé
  598. Γöé        Γöé        Γöé definitions are optional in the MIF file.   Γöé
  599. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  600. Γöé enum      Γöé component or  Γöé Defines a list of integer-to-string map-   Γöé
  601. Γöé        Γöé attribute   Γöé pings.  Enumeration definitions with an    Γöé
  602. Γöé        Γöé        Γöé associated name statement can be defined at  Γöé
  603. Γöé        Γöé        Γöé the component level, and enumeration defi-  Γöé
  604. Γöé        Γöé        Γöé nitions without a name statement can be    Γöé
  605. Γöé        Γöé        Γöé defined within the scope of an attribute   Γöé
  606. Γöé        Γöé        Γöé definition.  Although many enumeration defi- Γöé
  607. Γöé        Γöé        Γöé nitions can exist at the component level,   Γöé
  608. Γöé        Γöé        Γöé only one can be defined for an attribute.   Γöé
  609. Γöé        Γöé        Γöé Enumeration definitions are optional in the  Γöé
  610. Γöé        Γöé        Γöé MIF file.                   Γöé
  611. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  612.  
  613. Simplified Structure of a MIF File shows a simplified example of the definition 
  614. structure of a MIF file. Indentation is used to enhance the readability of the 
  615. file, although it has no effect on the way the MIF file is interpreted by the 
  616. DMI. 
  617.  
  618.  
  619. Simplified Structure of a MIF File
  620.  
  621. start component
  622.       start path
  623.       end path
  624.       start enum
  625.       end enum
  626.       start group
  627.             start attribute
  628.                   start enum
  629.                   end enum
  630.             end attribute
  631.       end group
  632.       start table
  633.       end table
  634. end component
  635.  
  636.  
  637. ΓòÉΓòÉΓòÉ 3.1.7. Language Statement ΓòÉΓòÉΓòÉ
  638.  
  639. The language statement is used to describe the human language used in the MIF 
  640. file. This statement is optional and appears before the start component 
  641. statement. 
  642.  
  643. The syntax for the statement is: 
  644.  
  645. language = "language string"
  646.  
  647. language string is a text string that identifies the language, dialect (as 
  648. territory), and character encoding. 
  649.  
  650. The format of language string is: 
  651.  
  652. language-code|territory-code|encoding
  653.  
  654. language-code is a two-letter code defined in ISO 639, territory-code is a 
  655. two-letter code defined in ISO 3166, and encoding is either iso8859-1 or 
  656. unicode. 
  657.  
  658. For example, the language string "fr|CA|iso8859-1" indicates French Canadian, 
  659. with ISO 8859-1 (8-bit) encoding. 
  660.  
  661. If any fields are not supplied, they are omitted, but the two vertical bars 
  662. must appear in the string. The default language string is "en|US|iso8859-1". 
  663.  
  664. The encoding field is ignored in the MIF file because the first two bytes of 
  665. the file determine the encoding. However, the field is used when communicating 
  666. through the Management Interface (MI). 
  667.  
  668. The language statement can appear only once in the MIF file. 
  669.  
  670. If you translate a MIF file into a local language, translate only literal 
  671. strings such as names, descriptions, enumeration literals, and any comments in 
  672. the MIF. Do not translate class strings, language names, or keywords. 
  673.  
  674. Note:  The service layer supplied with the SystemView Agent does not support 
  675. Unicode and generates an error if it encounters a Unicode MIF. 
  676.  
  677.  
  678. ΓòÉΓòÉΓòÉ 3.2. Common Statements ΓòÉΓòÉΓòÉ
  679.  
  680. The following statements can be used in most MIF definitions: 
  681.  
  682.      Name statement 
  683.      Description statement 
  684.      ID statement 
  685.  
  686.  There are several statements that are specific to the group and attribute 
  687.  definitions. These statements are described as part of their associated 
  688.  definitions. 
  689.  
  690.  
  691. ΓòÉΓòÉΓòÉ 3.2.1. Name Statement ΓòÉΓòÉΓòÉ
  692.  
  693. The name statement is used within a definition to assign a short identifying 
  694. string to the definition. This statement is required for all definitions in the 
  695. MIF file, and only one name statement is allowed for each definition. The MIF 
  696. does not require that name statements be unique, with the exception of those 
  697. used in enumeration and path definitions. The name statements in these two 
  698. cases must be unique among those specified in other enumeration and path 
  699. definitions in the component definition. 
  700.  
  701. The syntax for the name statement is: 
  702.  
  703. name = "name string"
  704.  
  705. name string is defined by the component developer. The length of the string 
  706. must be less than 256 characters. 
  707.  
  708. The content of the name statement is usually used for display to a user through 
  709. a management application, such as the DMI browser. Users can also change the 
  710. value of this string by editing the MIF file directly. 
  711.  
  712.  
  713. ΓòÉΓòÉΓòÉ 3.2.2. Description Statement ΓòÉΓòÉΓòÉ
  714.  
  715. The description statement is used within a definition to provide information 
  716. about the element being defined. The description statement can be used within a 
  717. component, group, or attribute definition, but you cannot specify more than one 
  718. description statement for a single definition. 
  719.  
  720. The syntax for the description statement is: 
  721.  
  722. description = "description string"
  723.  
  724. description string is defined by the component developer. 
  725.  
  726. The content of the description statement is usually used for display to a user 
  727. through a management application, such as the DMI browser. Users can also 
  728. change the value of this string by editing the MIF file directly. 
  729.  
  730.  
  731. ΓòÉΓòÉΓòÉ 3.2.3. ID Statement ΓòÉΓòÉΓòÉ
  732.  
  733. The ID statement is used within a definition to assign a unique numeric 
  734. identifier (ID) to the definition. The DMI refers to the ID when naming items 
  735. at the API level and when mapping to network management protocols. The ID 
  736. statement is required for the attribute and table definitions and optional for 
  737. the group definition. The MIF allows only one ID statement for each definition. 
  738.  
  739. Note:  The component, path, and enumeration definitions do not use the ID 
  740. statement. The component ID is assigned to the component by the service layer 
  741. when the component is installed. 
  742.  
  743. The syntax for the ID statement is: 
  744.  
  745. id = n
  746.  
  747. n is defined by the component developer. The value of n must be a non-zero 
  748. 32-bit unsigned integer. The ID must be unique only within the scope of the 
  749. definition in which it is specified. For example, all the attributes within a 
  750. particular group must have different ID values, but IDs are not required to be 
  751. unique across groups. 
  752.  
  753. Because components and management applications use IDs for communication, users 
  754. are not allowed to change the values of an ID. 
  755.  
  756.  
  757. ΓòÉΓòÉΓòÉ 3.3. Definitions ΓòÉΓòÉΓòÉ
  758.  
  759. The MIF uses the following definitions to specify the manageable aspects of a 
  760. component: 
  761.  
  762.      Component definition 
  763.      Path definition 
  764.      Enumeration definition 
  765.      Group definition 
  766.      Attribute definition 
  767.      Table definition 
  768.  
  769.  
  770. ΓòÉΓòÉΓòÉ 3.3.1. Component Definition ΓòÉΓòÉΓòÉ
  771.  
  772. The component definition is the highest-level definition specified in the MIF 
  773. file. All other elements of the MIF file are defined within the scope of the 
  774. component definition, and there can be only one component definition in a MIF 
  775. file. 
  776.  
  777. The syntax for the component definition is: 
  778.  
  779. start component
  780.       name = "component name"
  781.       [description = "description string"]
  782.       (contents of component definition here)
  783. end component
  784.  
  785.  
  786. ΓòÉΓòÉΓòÉ 3.3.2. Path Definition ΓòÉΓòÉΓòÉ
  787.  
  788. The path definition is used to specify the location of the files used for 
  789. active management of the component. The MIF file for a component can contain 
  790. more than one path definition, as long as the name statement for each path 
  791. definition is unique within the component definition. 
  792.  
  793. The operating system identifiers used in the path definition include dos, 
  794. macos, os2, unix, win16, win32, win9x, and winnt. These identifiers are not 
  795. case sensitive. 
  796.  
  797. If you specify a keyword of win32, you are indicating that the component 
  798. instrumentation referenced in this definition runs on either Windows NT or 
  799. Windows 95 (or greater). Use of winnt or win9x indicates that the 
  800. instrumentation runs only on the platform specified by the keyword. 
  801.  
  802. The syntax for the path definition is: 
  803.  
  804. start path
  805.       name  = "name identifying instrumentation code"
  806.       win32 = "C:\\directory\\filename.dll"
  807.       os2   = "direct interface"
  808.       dos   = "C:\\directory\\filename.com"
  809.       unix  = "/directory/filename"
  810. end path
  811.  
  812. The keyword direct interface in the example indicates that the component 
  813. instrumentation code is a continuously running process that is registered with 
  814. the service layer. 
  815.  
  816. The value of the name statement can be used as part of the attribute definition 
  817. to invoke the instrumentation code indicated in the path definition. Read Value 
  818. Statement for more information about how the code is invoked. 
  819.  
  820.  
  821. ΓòÉΓòÉΓòÉ 3.3.3. Enumeration Definition ΓòÉΓòÉΓòÉ
  822.  
  823. The enumeration definition enables you to associate character strings with 
  824. signed 32-bit integers. The enumerated lists are then used by the component's 
  825. instrumentation code to pass the integer values through the DMI, enabling the 
  826. management application to display the corresponding text string. 
  827.  
  828. The syntax of the enumeration definition is: 
  829.  
  830. start enum
  831.       name = "enumeration name"
  832.       type = datatype
  833.       vvv = "literal string"
  834.       [xxx = "string literal"]
  835. end enum
  836.  
  837. enumeration name is a unique name within the component. 
  838.  
  839. The integer values specified by vvv and xxx can appear in the definition in any 
  840. order. It is not necessary to represent every number between the lowest and 
  841. highest values in the definition, as long as each value is unique within the 
  842. same enumeration definition. 
  843.  
  844. You can use multiple enumeration definitions within a single component 
  845. definition. Enumeration definitions do not have ID or description statements. 
  846.  
  847. Note:  If you specify the same string but different integer values for multiple 
  848. entries in the enumerated list, the Management Information Format always 
  849. associates the string with the first integer value defined in the enumerated 
  850. list. If a management application requests the value for a subsequent instance 
  851. of the string, the value of the first instance of the string is returned. 
  852.  
  853.  
  854. ΓòÉΓòÉΓòÉ 3.3.4. Group Definition ΓòÉΓòÉΓòÉ
  855.  
  856. In a MIF file, groups are used to arrange one or more attributes into logical 
  857. sets. You can also use groups to represent tables, which are made up of arrays 
  858. of attributes. You can use multiple group definitions within a single component 
  859. definition. 
  860.  
  861. The syntax of a group definition is: 
  862.  
  863. start group
  864.       name = "group name"
  865.       class = "class string"
  866.       [id = nnn]
  867.       [description = "description string"]
  868.       [key = nnn[,mm]...]
  869.       [pragma = "pragma string"]
  870.       (attribute definitions go here)
  871.  
  872. end group
  873.  
  874. If you include an ID statement in the group definition, the value of the ID 
  875. statement must be unique among other groups within the component. 
  876.  
  877. The relationship between the ID statement and the key statement in the group 
  878. definition affects whether the group is interpreted as a group, a table, or a 
  879. table template. ID and Key Statements in MIF describes how the two statements 
  880. can be used. 
  881.  
  882. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  883. Γöé Table 4. ID and Key Statements in MIF                     Γöé
  884. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  885. Γöé KEY     Γöé ID     Γöé MIF INTERPRETATION                 Γöé
  886. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  887. Γöé No     Γöé Yes     Γöé The group is interpreted as a simple scalar group. Γöé
  888. Γöé       Γöé       Γöé The ID statement identifies the group.       Γöé
  889. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  890. Γöé Yes     Γöé No     Γöé The group represents a template row in a table   Γöé
  891. Γöé       Γöé       Γöé that is defined later in the MIF file.  The value  Γöé
  892. Γöé       Γöé       Γöé statements on the attribute definitions refer to  Γöé
  893. Γöé       Γöé       Γöé default values within the row.  A table definition Γöé
  894. Γöé       Γöé       Γöé can be used to populate the table according to the Γöé
  895. Γöé       Γöé       Γöé template.  For more information, read        Γöé
  896. Γöé       Γöé       Γöé Sample Table Definition.              Γöé
  897. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  898. Γöé Yes     Γöé Yes     Γöé The group represents a table that is managed by   Γöé
  899. Γöé       Γöé       Γöé the component's instrumentation code.  Any table  Γöé
  900. Γöé       Γöé       Γöé definitions you use later in the component can use Γöé
  901. Γöé       Γöé       Γöé this definition as a template.           Γöé
  902. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  903.  
  904.  
  905. ΓòÉΓòÉΓòÉ 3.3.4.1. Class Statement ΓòÉΓòÉΓòÉ
  906.  
  907. The class statement is used within a group definition to identify the developer 
  908. of the group and the version information that applies to the group. All groups 
  909. that share the same value for the class statement must also share the same 
  910. attribute definitions, including the same type, access, storage, and ID 
  911. statements. The name, description, and value statements on the attribute 
  912. definitions can vary. Identical class strings indicate identical group 
  913. definitions. The conformance provided by the class statement enables management 
  914. applications to determine the semantics of the group's attributes. Only one 
  915. class statement is allowed for each group definition. 
  916.  
  917. The syntax of the class statement is: 
  918.  
  919. class = "class string"
  920.  
  921. class string generally takes the following form: 
  922.  
  923. "defining body|specific name|version"
  924.  
  925. In this convention, defining body is the name of the organization, specific 
  926. name identifies the contents of the group, and version identifies the version 
  927. of the group definition. Spaces are significant in this convention, so that 
  928. "DMTF|ComponentID|1.0" is not interpreted as being the same as "DMTF | 
  929. ComponentID | 1.0". 
  930.  
  931. Although the MIF does not require that any particular convention be used when 
  932. defining the class statement, any class statements that do not follow this 
  933. convention generate a warning message during the installation of the MIF file. 
  934. Because applications and service layers might use this convention when 
  935. obtaining information with the List Component command, component developers are 
  936. encouraged to use this convention. 
  937.  
  938. If you are developing a component that does not use the entire set of 
  939. attributes defined by a class, specify the unsupported keyword in the 
  940. definitions for the unused attributes. Read Value Statement for more 
  941. information about using this keyword. 
  942.  
  943.  
  944. ΓòÉΓòÉΓòÉ 3.3.4.2. Key Statement ΓòÉΓòÉΓòÉ
  945.  
  946. When the attributes in a group define a row in a table, the group must contain 
  947. a key statement that identifies the attribute ID used as the index into the 
  948. table. Attributes that function as keys can be of any data type and identify no 
  949. more than one instance of a group. Each instance of a group represents a row of 
  950. a table. Only one key statement is allowed for each group definition. 
  951.  
  952. The syntax of the class statement is: 
  953.  
  954. key = n[,m]
  955.  
  956. n is the ID of the attribute that functions as the key for the table. If you 
  957. use more than one attribute to index a table, specify the values in the key 
  958. statement as integers separated by commas. When a management application sends 
  959. a request or when component instrumentation sends a response regarding 
  960. information in a table, the key values must be sent in the same order as they 
  961. are listed in the key statement. 
  962.  
  963. Note:  If you are using the DMI subagent to translate MIF information into SNMP 
  964. MIB information, do not specify an attribute with a data type of integer64 
  965. (int64) or counter64 as a key. The DMI subagent does not support 64-bit keys. 
  966.  
  967.  
  968. ΓòÉΓòÉΓòÉ 3.3.4.3. Pragma Statement ΓòÉΓòÉΓòÉ
  969.  
  970. The pragma statement is used to provide additional information related to the 
  971. group, but the contents of the statement are never queried or acted on by the 
  972. DMI. 
  973.  
  974. The syntax of the pragma statement is: 
  975.  
  976. pragma = "pragmakeyword:value[,pragmakeyword:value]"
  977.  
  978. Note:  The only use for this statement defined in DMI 1.1 is to provide the 
  979. SNMP object identifier (OID) of the group to facilitate mapping of MIF 
  980. information to SNMP MIB information. For example: 
  981.  
  982. pragma = "SNMP:1.2.3.4.5.6"
  983.  
  984.  
  985. ΓòÉΓòÉΓòÉ 3.3.5. Attribute Definition ΓòÉΓòÉΓòÉ
  986.  
  987. An attribute is a piece of data related to a component. You organize your 
  988. attributes by defining them within one or more group definitions. Each group in 
  989. the component must have at least one attribute definition, although many 
  990. attribute definitions can appear within a single group definition. 
  991.  
  992. The syntax of the attribute definition is: 
  993.  
  994. start attribute
  995.       name = "attribute name"
  996.       id = nnn
  997.       [description = "description string"]
  998.       type = datatype
  999.       [access = method]
  1000.       [storage = storage type]
  1001.       [value = v | * "name" | "enumeration string"]
  1002. end attribute
  1003.  
  1004. The ID statement is required for the attribute definition and must have a value 
  1005. that is unique among all other attribute definitions within the same group. 
  1006.  
  1007.  
  1008. ΓòÉΓòÉΓòÉ 3.3.5.1. Type Statement ΓòÉΓòÉΓòÉ
  1009.  
  1010. The type statement describes the storage and semantic characteristics of the 
  1011. attribute and is required in the attribute definition. Only one type statement 
  1012. can be specified in the same attribute definition. 
  1013.  
  1014. The syntax of the type statement: 
  1015.  
  1016. type = datatype
  1017.  
  1018. datatype is usually one of the data types defined in Data Types. 
  1019.  
  1020. You can also specify an enumerated list as the data type for a type statement. 
  1021. In this case, the attribute is stored and treated as a signed 32-bit integer. 
  1022. If you have already defined an enumerated list at the component level, you can 
  1023. indicate it by name in place of datatype: for example, type = "Verify_Type" 
  1024.  
  1025. If you are creating a new enumerated list with the type statement, you can 
  1026. define the list inside the type statement: 
  1027.  
  1028. type = start enum
  1029.        enumeration definition
  1030.        end enum
  1031.  
  1032. In this situation the enumeration definition does not require a name statement 
  1033. because the enumerated list cannot be referred to outside the scope of this 
  1034. attribute definition. If you specify a name, the value is ignored. 
  1035.  
  1036.  
  1037. ΓòÉΓòÉΓòÉ 3.3.5.2. Access Statement ΓòÉΓòÉΓòÉ
  1038.  
  1039. The access statement determines whether the attribute value can be read or 
  1040. written. The access statement is optional and can appear only once in the 
  1041. attribute definition. 
  1042.  
  1043. The syntax for the access statement is: 
  1044.  
  1045. access = method
  1046.  
  1047. method can take the following values: read-only, read-write, write-only. 
  1048.  
  1049. The access statement is not specified, the default access method used for the 
  1050. attribute definition is read-only. 
  1051.  
  1052. Note:  It is highly recommended that keyed values be assigned an access type of 
  1053.        read-only. 
  1054.  
  1055. If you are using the DMI browser to display a key attribute with an access type 
  1056. other than read-only, do not attempt to change the key attribute's value or set 
  1057. the attribute's value to be the same as that of another key attribute. This can 
  1058. cause unpredictable results. 
  1059.  
  1060.  
  1061. ΓòÉΓòÉΓòÉ 3.3.5.3. Storage Statement ΓòÉΓòÉΓòÉ
  1062.  
  1063. The storage statement provides management applications with information about 
  1064. the attribute to assist in optimizing storage requirements. Only one storage 
  1065. statement is allowed per attribute definition. 
  1066.  
  1067. The syntax for the storage statement is: 
  1068.  
  1069. storage = type
  1070.  
  1071. type can be one of the following: 
  1072.  
  1073.  Common      The value of the attribute is typically limited to a small set of 
  1074.              possibilities, such as the clock speed of a CPU or the name of a 
  1075.              manufacturer. 
  1076.  
  1077.  Specific    The value of the attribute can be one of a large number of 
  1078.              different values, such as the serial number of a device or a 
  1079.              timestamp value. Values that have a storage type of specific are 
  1080.              generally not suited for optimization. 
  1081.  
  1082.  If the storage statement is not specified on the attribute definition, the 
  1083.  default storage type for the attribute is specific. 
  1084.  
  1085.  
  1086. ΓòÉΓòÉΓòÉ 3.3.5.4. Value Statement ΓòÉΓòÉΓòÉ
  1087.  
  1088. The value statement provides a value for the attribute being defined or a means 
  1089. by which the value can be determined. 
  1090.  
  1091. The syntax for the value statement is one of the following: 
  1092.  
  1093. value = v
  1094. value = "enumeration value"
  1095. value = * "name"
  1096. value = unsupported
  1097. value = unknown
  1098.  
  1099. The values specified in the value statement include: 
  1100.  
  1101.  v                   The value v is used for read-only attributes whose values 
  1102.                      do not change or for read-write values that are managed by 
  1103.                      the service layer rather than by component 
  1104.                      instrumentation. The value specified in the statement must 
  1105.                      conform to the data type of the attribute. For example, 
  1106.                      literal strings must be specified within double quotes. 
  1107.                      Write-only attributes cannot specify a value of v. 
  1108.  
  1109.  "enumeration value" The value "enumeration value" can be either a text string 
  1110.                      or integer value that references a previously specified 
  1111.                      enumeration definition within the component or within this 
  1112.                      attribute definition. The type statement for the attribute 
  1113.                      must be an enumeration definition, as described in Type 
  1114.                      Statement. 
  1115.  
  1116.  * "name"            This value specifies the symbolic name of the component 
  1117.                      instrumentation code that is used to read or write the 
  1118.                      value for this attribute when a request is made to the 
  1119.                      service layer. The name indicated by this value must have 
  1120.                      been previously defined in a path definition within the 
  1121.                      component definition. 
  1122.  
  1123.  unsupported         This value is a reserved keyword and indicates to the 
  1124.                      service layer that the attribute is not supported for this 
  1125.                      component. 
  1126.  
  1127.  unknown             This value is a reserved keyword and indicates to the 
  1128.                      service layer that the attribute is supported but its 
  1129.                      value is known. 
  1130.  
  1131.  The value statement is required unless you are defining a template for a 
  1132.  table, where it is optional. However, if you do provide a value within a 
  1133.  template, that value is used as the default value when populating the table. 
  1134.  If you do not specify a value for a template, no default value is used. 
  1135.  
  1136.  
  1137. ΓòÉΓòÉΓòÉ 3.3.6. Populating Tables ΓòÉΓòÉΓòÉ
  1138.  
  1139. In the MIF, a table is composed of an array of group instances. Each instance 
  1140. of a group is a row in the table. Defining a table can be done in one of two 
  1141. ways: 
  1142.  
  1143.      By specifying a key statement on a group definition. In this case, the 
  1144.       values of the attributes within each row of the table are provided by the 
  1145.       component instrumentation. 
  1146.  
  1147.      By specifying the table's values within the MIF file itself. 
  1148.  
  1149.  The table definition actually identifies the data in the table rather than how 
  1150.  the data is stored or changed. When you populate a table with a table 
  1151.  definition, you identify a previous group definition in the component to be 
  1152.  used as a template for the table. 
  1153.  
  1154.  The syntax for the table definition is: 
  1155.  
  1156.   start table
  1157.         name = "table name"
  1158.         id = nnn
  1159.         class = "class string"
  1160.  
  1161.         { v1[,v2...] }
  1162.         [ { vn[, vm...] }
  1163.   end table
  1164.  
  1165.  The name statement is required for identification. The value of the ID 
  1166.  statement must be unique across all other group and table definitions in the 
  1167.  component. The class statement identifies the previous group definition that 
  1168.  is being used as the template for this table. 
  1169.  
  1170.  For each row in the table, the values are specified between braces and conform 
  1171.  to the format described by the value statement (Value Statement). The values 
  1172.  are separated by commas and listed from left to right according to the 
  1173.  attribute IDs that correspond to the values. The value of the attribute with 
  1174.  the lowest ID is listed first. If a value in the list is omitted, the default 
  1175.  value for the corresponding attribute is used if a default value is defined in 
  1176.  the template. If no default value is defined, specify a value in the table 
  1177.  definition. A row with too few commas is treated as a row with the trailing 
  1178.  number of requisite commas, and the values specified in the template are used 
  1179.  for the remaining attributes in the row. 
  1180.  
  1181.  A row with too few commas generates an error message from the DMI browser. 
  1182.  
  1183.  Sample Table Definition provides an example of how you can use a table 
  1184.  definition to specify attribute values. 
  1185.  
  1186.  
  1187.   Sample Table Definition
  1188.  
  1189.  
  1190.       start table
  1191.           name = "sample table"
  1192.           id = 2
  1193.           class = "group2 class"
  1194.           {7,,,,,,,,,}
  1195.           {8,8,8,8,6678,"row 8","octet","20011024123515.000000-300",543,8}
  1196.           {9,-99,9,9,6767,"row 9","octet","99999999999.999999-999",333,20}
  1197.       end table
  1198.  
  1199.  When populating rows within a table, you must provide unique values for the 
  1200.  combination of attributes that make up the key. If the service layer is 
  1201.  managing a MIF file and the MIF file does not provide unique keys, the service 
  1202.  layer rejects the MIF file. As an example, consider a group definition acting 
  1203.  as a template, with two keys specified as first name and last name. If the 
  1204.  table is populated by two rows of attributes, it is acceptable for the values 
  1205.  of last name to be the same, as long as the values for first name are 
  1206.  different. In other words, the values "John Smith" and "Paul Smith" are 
  1207.  acceptable instances of the two keys, but "John Smith" and "John Smith" are 
  1208.  not. 
  1209.  
  1210.  A table definition must be defined after the group definition to which it 
  1211.  refers. You can specify the same template for multiple table definitions, as 
  1212.  long as each table definition has a different ID. 
  1213.  
  1214.  
  1215. ΓòÉΓòÉΓòÉ 3.3.7. ComponentID Group ΓòÉΓòÉΓòÉ
  1216.  
  1217. The ComponentID group is a standard group that is required for every MIF file. 
  1218. This group provides basic identification of the component and represents the 
  1219. minimum amount of information that a component developer is expected to 
  1220. provide. 
  1221.  
  1222. The ID for the ComponentID group is 1. If an attribute is not supported by the 
  1223. component or is not applicable to the component, the value for the attribute 
  1224. should be specified by the unsupported keyword. 
  1225.  
  1226. The value of the class statement for this group is "DMTF|ComponentID|1.0". 
  1227.  
  1228. The attributes for the group are described in Attributes for ComponentID Group. 
  1229.  
  1230. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1231. Γöé Table 5. Attributes for ComponentID Group                   Γöé
  1232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1233. Γöé NAME    Γöé ID  Γöé TYPE    Γöé ACCESS   Γöé STORAGE  Γöé DESCRIPTION      Γöé
  1234. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1235. Γöé "Manufac- Γöé 1  Γöé string   Γöé read-only  Γöé common   Γöé Organization that   Γöé
  1236. Γöé turer"   Γöé   Γöé (64)    Γöé       Γöé      Γöé developed the compo-  Γöé
  1237. Γöé      Γöé   Γöé      Γöé       Γöé      Γöé nent          Γöé
  1238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1239. Γöé "Product" Γöé 2  Γöé string   Γöé read-only  Γöé common   Γöé Name of the component Γöé
  1240. Γöé      Γöé   Γöé (64)    Γöé       Γöé      Γöé or product       Γöé
  1241. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1242. Γöé "Version" Γöé 3  Γöé string   Γöé read-only  Γöé specific  Γöé Version for the com-  Γöé
  1243. Γöé      Γöé   Γöé (64)    Γöé       Γöé      Γöé ponent         Γöé
  1244. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1245. Γöé "Serial  Γöé 4  Γöé string   Γöé read-only  Γöé specific  Γöé Serial number of the  Γöé
  1246. Γöé Number"  Γöé   Γöé (64)    Γöé       Γöé      Γöé component       Γöé
  1247. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1248. Γöé "Instal-  Γöé 5  Γöé date    Γöé read-only  Γöé specific  Γöé Time and date of the  Γöé
  1249. Γöé lation"  Γöé   Γöé      Γöé       Γöé      Γöé last installation of  Γöé
  1250. Γöé      Γöé   Γöé      Γöé       Γöé      Γöé the component on the  Γöé
  1251. Γöé      Γöé   Γöé      Γöé       Γöé      Γöé system         Γöé
  1252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1253. Γöé "Verify"  Γöé 6  Γöé integer  Γöé read-only  Γöé common   Γöé Verification level   Γöé
  1254. Γöé      Γöé   Γöé      Γöé       Γöé      Γöé for the component   Γöé
  1255. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1256.  
  1257. If you query the value of the Verify attribute, the component instrumentation 
  1258. verifies whether the component is still in the system and operating properly. 
  1259. The instrumentation returns one of the following values: 
  1260.  
  1261.  0         An error occurred; check status code. 
  1262.  1         This component does not exist. 
  1263.  2         The verify is not supported. 
  1264.  3         Reserved 
  1265.  4         This component exists, but the functionality is untested. 
  1266.  5         This component exists, but the functionality is unknown. 
  1267.  6         This component exists and is not functioning correctly. 
  1268.  7         This component exists and is functioning correctly. 
  1269.  
  1270.  
  1271. ΓòÉΓòÉΓòÉ 3.4. Defining Events in the MIF ΓòÉΓòÉΓòÉ
  1272.  
  1273. The definition of events for a component is done in the MIF file with the 
  1274. following groups: 
  1275.  
  1276.      Event Generation Group 
  1277.      Event State Group 
  1278.  
  1279.  The event generation group defines the format for events issued by the 
  1280.  component. A management application can issue DMI list commands on the 
  1281.  attributes in this group and display information about the cause of the event. 
  1282.  If appropriate, information about potential solutions to the problem reported 
  1283.  by the event can also be displayed. 
  1284.  
  1285.  The event state group defines the format of state-based events, which are 
  1286.  issued when the state of the instrumented component changes. For example, a 
  1287.  state-based event might be generated when a device enters a problem state or 
  1288.  when a problem state is resolved. 
  1289.  
  1290.  
  1291. ΓòÉΓòÉΓòÉ 3.4.1. Event Generation Group ΓòÉΓòÉΓòÉ
  1292.  
  1293. The event generation group definition serves as a template that a management 
  1294. application can use to associate values received in the Indication buffer with 
  1295. enumeration display strings. Although values are specified in the group 
  1296. definition to ensure proper processing of the MIF file, the management 
  1297. application accesses the appropriate values directly from the Indication 
  1298. buffer. 
  1299.  
  1300. The general structure of the event generation group is: 
  1301.  
  1302. start group
  1303.    name = "Event Generation"
  1304.    class = "EventGeneration|<specific name>|001"
  1305.    id = nnn
  1306.    key = nnn[,mmm]...
  1307.        (attribute definitions here)
  1308. end group
  1309.  
  1310. The string defined in the class statement is unique for each event generation 
  1311. group and is specified in the following format: 
  1312.  
  1313. <defining-body>^^<specific-name-of-associated-group>
  1314.  
  1315. The contents of the specific-name-of-associated-groupfield indicates the name 
  1316. of the group to which the events defined in the event generation group 
  1317. correspond. 
  1318.  
  1319. Component developers can define additional attributes to a standard event 
  1320. generation group by using a proprietary-extension field that is appended to the 
  1321. class statement. The format for the class statement in this case is: 
  1322.  
  1323. <defining-body>^^<specific-name-of-assoc-grp>^^<proprietary-extension>
  1324.  
  1325. When specifying a proprietary extension, it is recommended that you use the 
  1326. complete, registered name of your corporate entity. This ensures that the 
  1327. specific-name field in the class statement is unique. 
  1328.  
  1329. When defining multiple event generation groups for a single associated group, 
  1330. place the event generation groups immediately after the associated group in the 
  1331. MIF file and use sequential IDs. 
  1332.  
  1333.  
  1334. ΓòÉΓòÉΓòÉ 3.4.1.1. Boolean Definition ΓòÉΓòÉΓòÉ
  1335.  
  1336. The following Boolean definition is used in specifying the value of some 
  1337. attributes in the event generation group: 
  1338.  
  1339. start enumeration
  1340. name = "BOOL"
  1341.        0 = "False"
  1342.        1 = "True"
  1343. end enumeration
  1344.  
  1345.  
  1346. ΓòÉΓòÉΓòÉ 3.4.1.2. Event Type ΓòÉΓòÉΓòÉ
  1347.  
  1348. The event type attribute indicates the reason that the event was generated. 
  1349. This attribute is required in the event generation group. 
  1350.  
  1351. The syntax of the event type definition is: 
  1352.  
  1353. name = "event type"
  1354. id = 1
  1355. description = "The type of event that has occurred."
  1356. type = <enumeration>
  1357. access = read-only
  1358. storage = specific
  1359.  
  1360. value = 0
  1361.  
  1362. The enumeration list is unique to the event generation group being defined and 
  1363. is not specified in this example. 
  1364.  
  1365.  
  1366. ΓòÉΓòÉΓòÉ 3.4.1.3. Event Severity ΓòÉΓòÉΓòÉ
  1367.  
  1368. The event severity attribute indicates the category of the event that has been 
  1369. generated. This attribute is required in the event generation group. 
  1370.  
  1371. The syntax of the event severity definition is: 
  1372.  
  1373. name = "event severity"
  1374. id = 2
  1375. description = "The severity of this event."
  1376. type =  start enumeration
  1377.            0x001 = "Monitor"
  1378.            0x002 = "Information"
  1379.            0x004 = "OK"
  1380.            0x008 = "Non-Critical"
  1381.            0x00A = "Critical"
  1382.            0x00C = "Non-Recoverable"
  1383.         end enumeration
  1384. access = read-only
  1385. storage = specific
  1386.  
  1387. value = 0
  1388.  
  1389. The enumeration list in this definition cannot be changed. 
  1390.  
  1391. The events with a severity of Monitor and Information are used to provide 
  1392. information about the event but do not indicate the state of the component that 
  1393. generated the event. Severities of OK, Non-Critical, Critical, and 
  1394. Non-Recoverable, however, are state-based. 
  1395.  
  1396.  Monitor           Used for periodic events generated by transaction-oriented 
  1397.                    components. 
  1398.  
  1399.  Information       Used to indicate change that is not considered a problem. 
  1400.                    Information events are not periodic or expected. 
  1401.  
  1402.  OK                Used to indicate that the component has entered the normal 
  1403.                    state, either for the first time (on initialization, for 
  1404.                    example) or after a problem state (Non-Critical, Critical, 
  1405.                    Non-Recoverable) has cleared. 
  1406.  
  1407.  Non-Critical      Used to indicate that a problem needs to be corrected, 
  1408.                    although no time period for correction is associated. 
  1409.  
  1410.  Critical          Used to indicate that a problem needs to be corrected within 
  1411.                    a specific time period. 
  1412.  
  1413.  Non-Recoverable   Used to indicate that a problem needs to be corrected 
  1414.                    immediately. Non-Recoverable events indicate serious failure 
  1415.                    situations. 
  1416.  
  1417.  
  1418. ΓòÉΓòÉΓòÉ 3.4.1.4. Event Is State-Based ΓòÉΓòÉΓòÉ
  1419.  
  1420. This attribute indicates whether the component that generates an event is 
  1421. state-based. If the component is state-based, an event is generated whenever 
  1422. the component's state changes or when any problem state is cleared. If the 
  1423. component is not state-based, an event is generated for any condition of 
  1424. interest that develops, but no event is generated when the condition clears. 
  1425.  
  1426. This attribute is required in the event generation group. 
  1427.  
  1428. The syntax of the event-is-state-based definition is: 
  1429.  
  1430. name = "event is state-based"
  1431. id = 3
  1432. description = "The value of this attribute determines "
  1433.               "whether the Event being reported is a "
  1434.               "state-based Event or not. If the value of "
  1435.               "this attribute is TRUE then the Event is state-"
  1436.               "based. Otherwise the Event is not state-based."
  1437. type = "BOOL"
  1438. access = read-only
  1439. storage = common
  1440.  
  1441. value = "False"
  1442.  
  1443. A value of True indicates that the event is state-based. 
  1444.  
  1445.  
  1446. ΓòÉΓòÉΓòÉ 3.4.1.5. Event State Key ΓòÉΓòÉΓòÉ
  1447.  
  1448. This attribute identifies a row in the event state group associated with the 
  1449. component definition that contains this event generation group. The value of 
  1450. the current state attribute (Current State) within the specified row indicates 
  1451. the current state of the event. If the generated event is not state-based, the 
  1452. value of the event state key attribute is ignored. 
  1453.  
  1454. This attribute is required in the event generation group. 
  1455.  
  1456. The syntax of the event state key definition is: 
  1457.  
  1458. name = "event state key"
  1459. id = 4
  1460. description = "This attribute holds the key identifying a row of "
  1461.               "the Event State group within the Component in "
  1462.               "which the event generator group is located. The "
  1463.               "Current State attribute within the row contains "
  1464.               "the current state of this state-based event. The "
  1465.               "current state can be one of the four severities: "
  1466.               "OK, Non-Critical, Critical, and Non-Recoverable."
  1467. type = integer
  1468. access = read-only
  1469. storage = specific
  1470.  
  1471. value = 0
  1472.  
  1473.  
  1474. ΓòÉΓòÉΓòÉ 3.4.1.6. Associated Group ΓòÉΓòÉΓòÉ
  1475.  
  1476. The associated group attribute contains the value of the class statement of the 
  1477. associated group. 
  1478.  
  1479. This attribute is a keyed attribute and is required in the event generation 
  1480. group. 
  1481.  
  1482. The syntax of the associated group definition is: 
  1483.  
  1484. name = "associated group"
  1485. id = 5
  1486. description = "The class string of the group that is associated "
  1487.               "with the events defined in this Event Generation "
  1488.               "group."
  1489. type = string ( <size> )
  1490. access = read-only
  1491. storage = common
  1492.  
  1493. value = "<class string>"
  1494.  
  1495. If a management application discovers an event generation group, it can 
  1496. determine the associated group by issuing a DmiListFirstComponentCmd with a 
  1497. class filter of EventGeneration|| and a keylist containing the value of this 
  1498. attribute. 
  1499.  
  1500.  
  1501. ΓòÉΓòÉΓòÉ 3.4.1.7. Event System ΓòÉΓòÉΓòÉ
  1502.  
  1503. The event system attribute provides information about the functional system of 
  1504. the product that generated the event. A management application can use the 
  1505. values of this attribute and the event subsystem attribute (Event Subsystem) to 
  1506. construct a simple message describing the event. 
  1507.  
  1508. This attribute is required in the event generation group. 
  1509.  
  1510. The syntax of the event system definition is: 
  1511.  
  1512. name = "event system"
  1513. id = 6
  1514. description = "The major functional aspect of the product "
  1515.               "causing the fault."
  1516. type = <enumeration>
  1517. access = read-only
  1518. storage = specific
  1519.  
  1520. value = 0
  1521.  
  1522. The enumeration list is unique to the event generation group being defined and 
  1523. is not specified in this example. 
  1524.  
  1525.  
  1526. ΓòÉΓòÉΓòÉ 3.4.1.8. Event Subsystem ΓòÉΓòÉΓòÉ
  1527.  
  1528. The event subsystem attribute provides information about the functional 
  1529. subsystem of the product that generated the event. A management application can 
  1530. use the values of the event system attribute (Event System) and this attribute 
  1531. to construct a simple message describing the event. 
  1532.  
  1533. This attribute is required in the event generation group. 
  1534.  
  1535. The syntax of the event subsystem definition is: 
  1536.  
  1537. name = "event subsystem"
  1538. id = 7
  1539. description = "The minor functional aspect of the product "
  1540.               "causing the fault."
  1541. type = <enumeration>
  1542. access = read-only
  1543. storage = specific
  1544.  
  1545. value = 0
  1546.  
  1547. The enumeration list is unique to the event generation group being defined and 
  1548. is not specified in this example. 
  1549.  
  1550.  
  1551. ΓòÉΓòÉΓòÉ 3.4.1.9. Event Solution ΓòÉΓòÉΓòÉ
  1552.  
  1553. The event solution attribute describes a possible solution to the problem that 
  1554. caused the event. The contents of this attribute might be recommended actions 
  1555. for the user of a management application. If the severity of the event is 
  1556. Critical, this attribute might also specify a time period for recovery action. 
  1557.  
  1558. This attribute is optional in the event generation group. 
  1559.  
  1560. The syntax of the event solution definition is: 
  1561.  
  1562. name = "event solution"
  1563. id = 8
  1564. description = "A solution to the problem that caused the "
  1565.               "event."
  1566. type = <enumeration>
  1567. access = read-only
  1568. storage = specific
  1569.  
  1570. value = 0
  1571.  
  1572. The enumeration list is unique to the event generation group being defined and 
  1573. is not specified in this example. 
  1574.  
  1575.  
  1576. ΓòÉΓòÉΓòÉ 3.4.1.10. Instance Data Present ΓòÉΓòÉΓòÉ
  1577.  
  1578. This attribute indicates to the management application that the second event 
  1579. block within the Indication data structure contains instance-specific data. 
  1580. This information can be used to identify a particular device that caused the 
  1581. event. 
  1582.  
  1583. This attribute is optional in the event generation group. 
  1584.  
  1585. The syntax of the instance-data-present definition is: 
  1586.  
  1587. name = "instance data present"
  1588. id = 9
  1589. description = "Indicates whether the second event block "
  1590.               "contains instance-specific data."
  1591. type = "BOOL"
  1592. access = read-only
  1593. storage = specific
  1594.  
  1595. value = "False"
  1596.  
  1597.  
  1598. ΓòÉΓòÉΓòÉ 3.4.1.11. Vendor Specific Message ΓòÉΓòÉΓòÉ
  1599.  
  1600. This attribute is used to pass displayable string data to a management 
  1601. application. The string can be in any locale, as long as it can be displayed 
  1602. using the ISO 8859-1 character set. This definition does not specify a size 
  1603. limit for the string. 
  1604.  
  1605. This attribute is optional in the event generation group. 
  1606.  
  1607. The syntax of the vendor-specific-message definition is: 
  1608.  
  1609. name = "event message"
  1610. id = 10
  1611. description = "Auxiliary information related to the event."
  1612. type = string(<size>)
  1613. access = read-only
  1614. storage = specific
  1615.  
  1616. value = ""
  1617.  
  1618. This attribute, along with the vendor specific data attribute (Vendor Specific 
  1619. Message), is designed to provide event generators and consumers with an 
  1620. efficient, private interface with which to pass arbitrary information. This can 
  1621. be useful to manufacturers that develop both component instrumentation and 
  1622. management applications. 
  1623.  
  1624.  
  1625. ΓòÉΓòÉΓòÉ 3.4.1.12. Vendor Specific Message ΓòÉΓòÉΓòÉ
  1626.  
  1627. This attribute is used to pass arbitrary data to a management application. This 
  1628. definition does not specify a size limit for the octet string. 
  1629.  
  1630. This attribute is optional in the event generation group. 
  1631.  
  1632. The syntax of the vendor-specific-data definition is: 
  1633.  
  1634. name = "vendor specific data"
  1635. id = 11
  1636. description = "Auxiliary information related to the event."
  1637. type = octetstring(<size>)
  1638. access = read-only
  1639. storage = specific
  1640.  
  1641. value = ""
  1642.  
  1643. This attribute, along with the vendor specific message attribute (Vendor 
  1644. Specific Message), is designed to provide event generators and consumers with 
  1645. an efficient, private interface with which to pass arbitrary information. This 
  1646. can be useful to manufacturers that develop both component instrumentation and 
  1647. management applications. 
  1648.  
  1649.  
  1650. ΓòÉΓòÉΓòÉ 3.4.2. Event State Group ΓòÉΓòÉΓòÉ
  1651.  
  1652. The event state group is a table that contains the current state of state-based 
  1653. events within the component. The group definition has a key that acts as a 
  1654. unique identifier for each row of the table. A row in the table holds 
  1655. information about a unique event type that is generated from a given event 
  1656. generation group in the component. 
  1657.  
  1658. An example of the general structure of the event state group is: 
  1659.  
  1660. start group
  1661.    name = "Event State"
  1662.    class = "DMTF|Event State|001"
  1663.    id = nnn
  1664.    key = nnn
  1665.        (attribute definitions here)
  1666. end group
  1667.  
  1668. You can also maintain the current state information for proprietary state-based 
  1669. events by adding more rows within this group that reference the proprietary 
  1670. event generation group. Refer to Event Generation Group for information on 
  1671. doing this using the event generation group attribute in the event state group 
  1672. definition. 
  1673.  
  1674.  
  1675. ΓòÉΓòÉΓòÉ 3.4.2.1. Event Index ΓòÉΓòÉΓòÉ
  1676.  
  1677. The event index attribute specifies the index into the event state table. 
  1678.  
  1679. The syntax of the event index definition is: 
  1680.  
  1681. name = "event index"
  1682. id = 1
  1683. description = "A unique index into the Event State table"
  1684. type = integer
  1685. access = read-only
  1686. storage = common
  1687. value = 0
  1688.  
  1689.  
  1690. ΓòÉΓòÉΓòÉ 3.4.2.2. Event Generation Group ΓòÉΓòÉΓòÉ
  1691.  
  1692. This attribute contains the class string of the event generation group within 
  1693. the component definition that defines the indication format for the related 
  1694. event. The ComponentID of the component with which the event is associated is 
  1695. specified in the header of the Indication data structure. 
  1696.  
  1697. The syntax of the event-generation-group definition is: 
  1698.  
  1699. name = "event generation group class"
  1700. id = 2
  1701. description = "The Class String of the event generator group "
  1702.               "within the generating Component"
  1703. type = string (256)
  1704. access = read-only
  1705. storage = common
  1706. value = 0
  1707.  
  1708. For each row in the event state group, this attribute identifies the ID of the 
  1709. event generation group that defines the event type represented by the row. A 
  1710. management application can scan for state-based events in a system by using a 
  1711. class filter of "|EventState|" to discover instances of the event state group 
  1712. and then scanning the rows of the group for state-based events. 
  1713.  
  1714. If you are adding rows to the event state group for proprietary state-based 
  1715. events, specify the class string of the proprietary event generation group as 
  1716. the value for this attribute in the additional rows. 
  1717.  
  1718.  
  1719. ΓòÉΓòÉΓòÉ 3.4.2.3. Event Type ΓòÉΓòÉΓòÉ
  1720.  
  1721. The event type attribute indicates the reason that the event was generated. The 
  1722. value of this attribute corresponds to an item in the enumeration list 
  1723. specified by the event type attribute in the associated event generation group 
  1724. definition. The specific event generation group is identified by the event 
  1725. generation group attribute (Event Generation Group). 
  1726.  
  1727. The syntax of the event type definition is: 
  1728.  
  1729. name = "event type"
  1730. id = 3
  1731. description = "Integer value that identifies one of the "
  1732.               "Event types enumerated in the associated Event "
  1733.               "Generation group."
  1734. type = integer
  1735. storage = common
  1736. value = 0
  1737.  
  1738.  
  1739. ΓòÉΓòÉΓòÉ 3.4.2.4. Current State ΓòÉΓòÉΓòÉ
  1740.  
  1741. The current state attribute indicates the severity of the specific event type 
  1742. represented by this row of the event state group. 
  1743.  
  1744. The syntax of the current state definition is: 
  1745.  
  1746. name = "current state"
  1747. id = 4
  1748. description = "The current state of the Event type identified "
  1749.               "by Event Type attribute in this row."
  1750. type = start enum
  1751.           0x0004 = "OK"
  1752.           0x0008 = "Non-Critical"
  1753.           0x000A = "Critical"
  1754.           0x000C = "Non-Recoverable"
  1755.        end enum
  1756. access = read-only
  1757. storage = specific
  1758.  
  1759. value = "OK"
  1760.  
  1761. The enumeration defined in this attribute is a subset of the enumeration 
  1762. defined in the event severity attribute in the event generation group 
  1763. definition. 
  1764.  
  1765.  
  1766. ΓòÉΓòÉΓòÉ 3.4.2.5. Associated Group Keys ΓòÉΓòÉΓòÉ
  1767.  
  1768. This attribute is used to identify an instance of the associated group that is 
  1769. likely to have generated the event. Depending on how the associated group is 
  1770. defined, there might be multiple keys, each of a different type. This attribute 
  1771. represents such a list of keys with an encoded string consisting of a list of 
  1772. integers separated by commas, with no spaces. 
  1773.  
  1774. The syntax of the associated-group-keys definition is: 
  1775.  
  1776. name = "associated group keys"
  1777. id = 5
  1778. description = "A list of integer keys that identify the instance "
  1779.               "of the Associated Group that actually generated "
  1780.               "the state-based event. The list of integer keys "
  1781.               "are represented in the value of this attribute as "
  1782.               "a string containing a comma-separated list of "
  1783.               "integers. The management application must parse "
  1784.               "this string to obtain the list of integer keys."
  1785. type = string(256)
  1786. access = read-only
  1787. storage = specific
  1788.  
  1789. value = ""
  1790.  
  1791.  
  1792. ΓòÉΓòÉΓòÉ 4. Using the DMI Management Interface ΓòÉΓòÉΓòÉ
  1793.  
  1794. This chapter describes how a management application communicates with the DMI 
  1795. through the Management Interface (MI). A management application requests 
  1796. information about components in the system by issuing the DMI Get, Set, and 
  1797. List commands. However, before it can manage a component in the system, the 
  1798. application must register with the service layer for that particular system. 
  1799. Once registered, the application can issue commands, as well as receive 
  1800. notifications of indications. It is the responsibility of the management 
  1801. application to have program code in place to process the error codes returned 
  1802. by the service layer. 
  1803.  
  1804. This chapter describes how a management application communicates with the MI, 
  1805. including the registration process that the application must use and the status 
  1806. codes that the service layer returns. 
  1807.  
  1808.  
  1809. ΓòÉΓòÉΓòÉ 4.1. Invoking a Command through the Management Interface ΓòÉΓòÉΓòÉ
  1810.  
  1811. Because the DMI is a data interface, all commands are specified with data 
  1812. blocks. In order for a management application to send a command block to the 
  1813. service layer, the application builds the command with the DmiMgmtCommand block 
  1814. and any following blocks and then issues the DmiInvoke() function call. 
  1815.  
  1816. The DmiInvoke() function call sends the command to the service layer for 
  1817. processing. The C-language prototype for this call is: 
  1818.  
  1819. unsigned long DmiInvoke(PTR command)
  1820.  
  1821. command is the complete command block. The return result is a 32-bit status 
  1822. value that indicates whether the command succeeded or failed. The possible 
  1823. status values are described in Status Codes. 
  1824.  
  1825. While it processes the command, the service layer immediately returns control 
  1826. to the management application. The management application can then continue 
  1827. processing and issue additional commands, but the application cannot re-use the 
  1828. same DmiMgmtCommand buffer that it previously sent to the service layer. 
  1829. Simultaneous commands from a management application must use different 
  1830. DmiMgmtCommand blocks. When the service layer is finished processing the 
  1831. command, it notifies the management application by calling the pConfirmFunc() 
  1832. function that was given when the management application originally registered 
  1833. with the service layer. At that point, the management application can re-use 
  1834. the DmiMgmtCommand block. 
  1835.  
  1836. The DMI specification does not include a time-out policy. If a management 
  1837. application issues a command and does not appear to get a response, the 
  1838. application should issue a cancel command. Implementing DMI on OS/2 describes 
  1839. how the SystemView Agent incorporates time restrictions on some operations. 
  1840.  
  1841. For a description of the DmiMgmtCommand block and its contents, read 
  1842. DmiMgmtCommand Command Block. 
  1843.  
  1844.  
  1845. ΓòÉΓòÉΓòÉ 4.2. Canceling a Command ΓòÉΓòÉΓòÉ
  1846.  
  1847. A management application can cancel an outstanding command by using the 
  1848. DmiMgmtCommand block. If the command being cancelled is performing actions on 
  1849. multiple attributes, the command is halted as soon as possible within the 
  1850. targeted command list. 
  1851.  
  1852. To cancel a command, set the following fields in the DmiMgmtCommand block to 
  1853. the specified values: 
  1854.  
  1855.  Variable       Value 
  1856.  
  1857.  iCommand       0x102 (DmiCancelCmd) 
  1858.  
  1859.  iMgmtHandle    The value originally assigned by the service layer when the 
  1860.                 application registered. This value identifies the management 
  1861.                 application. 
  1862.  
  1863.  iCmdHandle     The value that identifies the handle of the outstanding 
  1864.                 command. The management application must ensure that the value 
  1865.                 of iCmdHandle is unique among all outstanding commands from 
  1866.                 that management application. 
  1867.  
  1868.  For a description of the DmiMgmtCommand block and its contents, read 
  1869.  DmiMgmtCommand Command Block. 
  1870.  
  1871.  
  1872. ΓòÉΓòÉΓòÉ 4.3. Registering with the Service Layer ΓòÉΓòÉΓòÉ
  1873.  
  1874. Before initiating any management activity through the DMI, a management 
  1875. application must register with the service layer. The registration process 
  1876. enables the service layer to provide services for the management application, 
  1877. such as forwarding indications from components in the system. 
  1878.  
  1879. The following registration commands are described in the command blocks 
  1880. chapter, according to their command block structure: 
  1881.  
  1882.      DmiRegisterMgmtReq (DmiRegisterMgmtReq Command Block) 
  1883.      DmiRegisterCnf (DmiRegisterCnf Command Block) 
  1884.  
  1885.  Because the service layer maintains the entry points for a management 
  1886.  application until the application unregisters, the application cannot provide 
  1887.  different entry points for different commands. However, if for some reason a 
  1888.  management application needs to use multiple entry points to the service 
  1889.  layer, the application can do one of the following: 
  1890.  
  1891.      Register a dispatch routine as its entry point and then manually dispatch 
  1892.       reports to the appropriate code. 
  1893.  
  1894.      Register with the service layer more than once, giving different entry 
  1895.       points for each registration. For each registration, the service layer 
  1896.       assigns a new management handle, so the appropriate handle can be used 
  1897.       when issuing a command. Because each registration adds processing 
  1898.       overhead to the service layer, this approach should be used only when the 
  1899.       first method is not practical. 
  1900.  
  1901.  In addition to the management application's entry points, the service layer 
  1902.  must keep the value of the osLanguage string in the command block. This value 
  1903.  identifies the language and character set that the service layer uses when 
  1904.  sending indications to the management application. 
  1905.  
  1906.  
  1907. ΓòÉΓòÉΓòÉ 4.4. Unregistering with the Management Interface ΓòÉΓòÉΓòÉ
  1908.  
  1909. To unregister a management application from the service layer, send a 
  1910. DmiMgmtCommand block with the following values: 
  1911.  
  1912.  Variable       Value 
  1913.  
  1914.  iCommand       0x101 (DmiUnregisterMgmtCmd) 
  1915.  
  1916.  iMgmtHandle    The value originally assigned by the service layer when the 
  1917.                 application registered. This value identifies the management 
  1918.                 application. 
  1919.  
  1920.  For a description of the DmiMgmtCommand block and its contents, read 
  1921.  DmiMgmtCommand Command Block. 
  1922.  
  1923.  
  1924. ΓòÉΓòÉΓòÉ 4.5. Processing Indications ΓòÉΓòÉΓòÉ
  1925.  
  1926. An indication is an unsolicited report that is not expected by the receiving 
  1927. application. Registration provides a mechanism for management applications to 
  1928. register for notification of indications. 
  1929.  
  1930. The service layer maintains a list of entry points for registered management 
  1931. applications. Each entry point is called when the service layer generates an 
  1932. indication. The called routine must immediately return control to the service 
  1933. layer and perform any operations necessary based on the indication. The routine 
  1934. informs the service layer that it has finished processing the report by calling 
  1935. the function pResponseFunc(), as given in the DmiIndicate block. 
  1936.  
  1937. For a description of the DmiIndicate block and its contents, read DmiIndicate 
  1938. Command Block. 
  1939.  
  1940. Each registered indication entry point is called for every indication. 
  1941.  
  1942. Management applications must unregister their entry points before terminating. 
  1943.  
  1944.  
  1945. ΓòÉΓòÉΓòÉ 4.6. Using List Commands ΓòÉΓòÉΓòÉ
  1946.  
  1947. The List commands provide read access to a system's MIF database and enable a 
  1948. management application to query the manageable entities within a system. These 
  1949. commands allow a system to be probed to determine its characteristics without 
  1950. incurring the overhead of executing the code required to retrieve current 
  1951. values. All list commands take the following form: 
  1952.  
  1953.  Form           Behavior 
  1954.  List           Accesses lists randomly 
  1955.  List First     Accesses lists from the start 
  1956.  List Next      Accesses lists in sequential order 
  1957.  
  1958.  Specific List commands return information on individual entities. List First 
  1959.  and List Next commands return data in a bulk fashion. There are also List 
  1960.  commands to retrieve the description fields from a system. 
  1961.  
  1962.  
  1963. ΓòÉΓòÉΓòÉ 4.6.1. Listing Component Information ΓòÉΓòÉΓòÉ
  1964.  
  1965. List Component commands request a list of the components in a system. This 
  1966. command can be used to return all components in a system or only those with a 
  1967. certain group class. Calls for all components are referred to as unfiltered, 
  1968. and calls for a specific group class are filtered. 
  1969.  
  1970. There are three List Component commands: 
  1971.  
  1972.  DmiListComponentCmd 
  1973.                 Requests data for a specific component. 
  1974.  
  1975.  DmiListFirstComponentCmd 
  1976.                 Requests data for the first component in a system. The 
  1977.                 component with the lowest component ID is considered the first 
  1978.                 component in the system. This will always be the service layer 
  1979.                 itself, which always has component ID of 1. The service layer 
  1980.                 fills in as many component definitions as the size of the 
  1981.                 confirm buffer allows. 
  1982.  
  1983.  DmiListNextComponentCmd 
  1984.                 Requests data for the component instrumentation whose ID is the 
  1985.                 next highest value after the one passed in the 
  1986.                 DmiListComponentCmd block. The service layer fills in as many 
  1987.                 component definitions as the size of the confirm buffer allows. 
  1988.  
  1989.  For a description of the DmiListComponentReq block used to issue these List 
  1990.  commands, read DmiListComponentReq Command Block. 
  1991.  
  1992.  The service layer does not contact any component instrumentation when 
  1993.  performing List commands. It relies on the MIF database for all information. 
  1994.  When specifying keys that require components to be run before the values can 
  1995.  be determined, the service layer returns the key as a possible match. Any 
  1996.  matches from data in the MIF database are listed as hard matches. It is the 
  1997.  responsibility of the management application to follow up with each component 
  1998.  instrumentation and convert possible matches into hard matches. 
  1999.  
  2000.  
  2001. ΓòÉΓòÉΓòÉ 4.6.2. Listing Group Information ΓòÉΓòÉΓòÉ
  2002.  
  2003. List Group commands request a list of the groups in a component. 
  2004.  
  2005. There are three List Group commands: 
  2006.  
  2007.  DmiListGroupCmd 
  2008.                 Requests data for a specific group. 
  2009.  
  2010.  DmiListFirstGroupCmd 
  2011.                 Requests data for the first group in a specified component. The 
  2012.                 group with the lowest group ID is considered the first group in 
  2013.                 the component. The service layer fills in as many groups as the 
  2014.                 size of the confirm buffer allows. 
  2015.  
  2016.  DmiListNextGroupCmd 
  2017.                 Requests data for the group whose ID is the next highest value 
  2018.                 after the one passed in the DmiListGroupReq block. The service 
  2019.                 layer fills in as many groups as the size of the confirm buffer 
  2020.                 allows. 
  2021.  
  2022.  For a description of the DmiListGroupReq block used to issue these List 
  2023.  commands, read DmiListGroupReq Command Block. 
  2024.  
  2025.  
  2026. ΓòÉΓòÉΓòÉ 4.6.3. Listing Attribute Information ΓòÉΓòÉΓòÉ
  2027.  
  2028. List Attribute commands request the attribute definitions within a group for a 
  2029. given component. They do not retrieve the current attribute values. 
  2030.  
  2031. There are three List Attribute commands: 
  2032.  
  2033.  DmiListAttributeCmd 
  2034.                 Requests data for a specific attribute. 
  2035.  
  2036.  DmiListFirstAttributeCmd 
  2037.                 Requests data for the first attribute in a group. The attribute 
  2038.                 with the lowest attribute ID is considered the first attribute 
  2039.                 in the group. The service layer fills in as many attribute 
  2040.                 definitions as the size of the confirm buffer allows. 
  2041.  
  2042.  DmiListNextAttributeCmd 
  2043.                 Requests data for the attribute whose ID is the next highest 
  2044.                 value after the one passed in the DmiListAttributeReq block. 
  2045.                 The service layer fills in as many attribute definitions as the 
  2046.                 size of the confirm buffer allows. 
  2047.  
  2048.  For a description of the DmiListAttributeReq block used to issue these List 
  2049.  commands, read DmiListAttributeReq Command Block. 
  2050.  
  2051.  
  2052. ΓòÉΓòÉΓòÉ 4.6.4. Listing Description Information ΓòÉΓòÉΓòÉ
  2053.  
  2054. List Description commands request the description field for the component, 
  2055. group, or attribute specified. These calls are separated from the other list 
  2056. calls because the description fields might be of substantial size and might not 
  2057. be used or needed in some cases. 
  2058.  
  2059. There are three List Description commands: 
  2060.  
  2061.  DmiListComponentDescCmd 
  2062.                 Requests description of components 
  2063.  
  2064.  DmiListGroupDescCmd 
  2065.                 Requests description of groups 
  2066.  
  2067.  DmiListAttributeDescCmd 
  2068.                 Requests description of attributes 
  2069.  
  2070.  For a description of the DmiListDescReq block used to issue these List 
  2071.  commands, read DmiListDescReq Command Block. 
  2072.  
  2073.  
  2074. ΓòÉΓòÉΓòÉ 4.6.5. Getting Attribute Information ΓòÉΓòÉΓòÉ
  2075.  
  2076. The difference between List and Get commands is that a List command returns MIF 
  2077. information about an object, and a Get command requests the actual value for 
  2078. the object. 
  2079.  
  2080. The DmiGetAttributeCmd command is used to request the current values of 
  2081. attributes within groups. For a description of the DmiGetAttributeReq block 
  2082. used to issue this command, read DmiGetAttributeReq Command Block. 
  2083.  
  2084.  
  2085. ΓòÉΓòÉΓòÉ 4.6.6. Setting Attribute Information ΓòÉΓòÉΓòÉ
  2086.  
  2087. To enable concurrent access by multiple management applications, the DMI allows 
  2088. more than one pass through a list of Set commands. The first pass is a call to 
  2089. reserve the attributes. This reserve command tests a component to verify that a 
  2090. set operation on a given attribute can occur and asks the component 
  2091. instrumentation to validate a set operation without performing the set 
  2092. operation. The component instrumentation must validate the parameters of the 
  2093. call and reserve any resources that would be required if the set command were 
  2094. issued. 
  2095.  
  2096. A positive response from the reserve command indicates that the component 
  2097. instrumentation has validated the parameters and reserved any resources that 
  2098. might be required to perform the set operation. A negative response from the 
  2099. command indicates that the component instrumentation is unable to perform the 
  2100. set operation. 
  2101.  
  2102. If all the attributes in the list returned successfully from the reserve 
  2103. operation, the management application typically issues a Set command for each 
  2104. attribute. 
  2105.  
  2106. If a reserve fails, the management application might want to release each of 
  2107. the attributes it previously reserved. Releasing attributes allows the 
  2108. component instrumentation to deallocate any resources it had acquired. The task 
  2109. of setting attributes back to their previous values is the responsibility of 
  2110. the management application. 
  2111.  
  2112. There are three Set commands: 
  2113.  
  2114.  DmiSetAttributeCmd Sets the value for a specified attribute 
  2115.  
  2116.  DmiSetReserveAttributeCmd Reserves a specified attribute for a subsequent set 
  2117.                 operation 
  2118.  
  2119.  DmiSetReleaseAttributeCmd Releases a specified attribute 
  2120.  
  2121.  For a description of the DmiSetAttributeReq block used to issue these Set 
  2122.  commands, read DmiSetAttributeReq Command Block. 
  2123.  
  2124.  
  2125. ΓòÉΓòÉΓòÉ 4.6.6.1. Reserving Attributes ΓòÉΓòÉΓòÉ
  2126.  
  2127. Reserving an attribute verifies that the set operation is valid. This ensures 
  2128. that a subsequent set operation will be successfully issued. However, it is not 
  2129. a locking operation. A management application can never assume exclusive 
  2130. control of a component. 
  2131.  
  2132. The component instrumentation that receives the Reserve command is responsible 
  2133. for testing the arguments to verify that the set operation can be performed. 
  2134. The testing verifies that the arguments are within range and allocates and 
  2135. reserves any resources that might be needed to ensures the success of a 
  2136. subsequent set operation. 
  2137.  
  2138. After a successful set operation, the component instrumentation automatically 
  2139. releases any resources that it has reserved. The management application does 
  2140. not need to explicitly issue a Release command after a set. 
  2141.  
  2142. The component instrumentation requires that all Reserve commands be followed by 
  2143. either Set or Release commands to perform the set operation or to release the 
  2144. reserved resources. The failure of the management application to issue either 
  2145. command is considered a catastrophic failure and is outside the scope of the 
  2146. component instrumentation's responsibility to try to correct. 
  2147.  
  2148. If a management application requests that multiple attributes be reserved and 
  2149. one of the reservations fails, the service layer returns the attribute where 
  2150. the command failed. It is the responsibility of the management application to 
  2151. release any successfully reserved attributes. 
  2152.  
  2153.  
  2154. ΓòÉΓòÉΓòÉ 4.6.6.2. Releasing Attributes ΓòÉΓòÉΓòÉ
  2155.  
  2156. The Release command is used when the caller wishes to decommit from a set 
  2157. operation after a reserve has been issued. 
  2158.  
  2159.  
  2160. ΓòÉΓòÉΓòÉ 4.6.7. Getting Attribute Information by Row ΓòÉΓòÉΓòÉ
  2161.  
  2162. Get Row commands request the values of all the attributes in a particular 
  2163. group. Because groups can be a scalar set of attributes or can be arranged as 
  2164. tables-arrays of sets of attributes-it is more convenient to consider them as 
  2165. rows. Groups used as tables include keys to specify the desired instance (or 
  2166. row) of the group. 
  2167.  
  2168. There are three Get Row commands: 
  2169.  
  2170.  DmiGetRowCmd 
  2171.                 Requests the values of attributes from a specific group or 
  2172.                 specific row of a table. 
  2173.  
  2174.  DmiGetFirstRowCmd 
  2175.                 Requests the values of the attributes in the first row of a 
  2176.                 table. This is the same as DmiGetRowCmd for non-tabular groups. 
  2177.  
  2178.  DmiGetNextRowCmd 
  2179.                 Requests the values of the attributes of the row after the row 
  2180.                 whose key is passed in the command block. 
  2181.  
  2182.  For a description of the DmiGetRowReq block used to issue these Set commands, 
  2183.  read DmiGetRowReq Command Block. 
  2184.  
  2185.      Note for Component Developers Note that the command can be asking for key 
  2186.      values or for attribute values. To determine which, the component 
  2187.      instrumentation must compare the iGroupKeyCount field of DmiGetRowReq to 
  2188.      the iGroupKeyCount field of DmiGetRowCnf. If the key count in the confirm 
  2189.      block is less than the key count of the request block, the service layer 
  2190.      is requesting that the next key value be returned. 
  2191.  
  2192.      The key value to return for the DmiGetFirstRowCmd command is the value of 
  2193.      the next key attribute in the first row of the table. For the 
  2194.      DmiGetNextRowCmd command, the key values in the DmiGetRowReq structure 
  2195.      should be inspected to determine the current row. Then the value in the 
  2196.      succeeding row should be returned. 
  2197.  
  2198.      The DmiGetRowCnf structure is always built by the service layer, and the 
  2199.      value of oGroupKeyList specifies the start of DmiGroupKeyData structures. 
  2200.      The pCnfBuf member of DmiCiCommand points to the position in the confirm 
  2201.      buffer where the key value should be placed. The value of iGroupKeyCount 
  2202.      should be incremented, but the iCnfCount member of the DmiMgmtCommand 
  2203.      should not. 
  2204.  
  2205.  
  2206. ΓòÉΓòÉΓòÉ 4.7. Status Codes ΓòÉΓòÉΓòÉ
  2207.  
  2208. Status codes are 32-bit unsigned values. The error codes returned by an 
  2209. operating system are not passed back to a management application. Instead, the 
  2210. service layer maps operating system errors into its error range. This insulates 
  2211. management applications from operating system details. Error codes from 
  2212. components are listed in the component's MIF file. 
  2213.  
  2214.  
  2215. ΓòÉΓòÉΓòÉ 4.7.1. Non-error Condition Codes ΓòÉΓòÉΓòÉ
  2216.  
  2217. Non-Error Condition Codes displays the status codes used to indicate non-error 
  2218. conditions. 
  2219.  
  2220. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2221. Γöé Table 6. Non-Error Condition Codes                      Γöé
  2222. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2223. Γöé VALUE     Γöé DESCRIPTION                          Γöé
  2224. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2225. Γöé 0x00000    Γöé Success                            Γöé
  2226. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2227. Γöé 0x00001    Γöé More data is available                    Γöé
  2228. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2229.  
  2230.  
  2231. ΓòÉΓòÉΓòÉ 4.7.2. Database Errors ΓòÉΓòÉΓòÉ
  2232.  
  2233. Database Errors displays the status codes used to indicate error conditions 
  2234. related to the MIF database. 
  2235.  
  2236. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2237. Γöé Table 7. Database Errors                           Γöé
  2238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2239. Γöé VALUE     Γöé DESCRIPTION                          Γöé
  2240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2241. Γöé 0x00100    Γöé Attribute not found                      Γöé
  2242. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2243. Γöé 0x00101    Γöé Value exceeds maximum size                  Γöé
  2244. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2245. Γöé 0x00102    Γöé Component instrumentation not found              Γöé
  2246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2247. Γöé 0x00103    Γöé Enumeration error                       Γöé
  2248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2249. Γöé 0x00104    Γöé Group not found                        Γöé
  2250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2251. Γöé 0x00105    Γöé Illegal keys                         Γöé
  2252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2253. Γöé 0x00106    Γöé Illegal to set                        Γöé
  2254. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2255. Γöé 0x00107    Γöé Cannot resolve attribute function name            Γöé
  2256. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2257. Γöé 0x00108    Γöé Illegal to get                        Γöé
  2258. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2259. Γöé 0x00109    Γöé No description                        Γöé
  2260. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2261. Γöé 0x0010a    Γöé Row not found                         Γöé
  2262. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2263. Γöé 0x0010b    Γöé Direct interface not registered                Γöé
  2264. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2265. Γöé 0x0010c    Γöé MIF database is corrupt                    Γöé
  2266. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2267. Γöé 0x0010d    Γöé Attribute is not supported                  Γöé
  2268. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2269.  
  2270.  
  2271. ΓòÉΓòÉΓòÉ 4.7.3. Service Layer Errors ΓòÉΓòÉΓòÉ
  2272.  
  2273. Service Layer Errors displays the status codes used to indicate error 
  2274. conditions related to the service layer. 
  2275.  
  2276. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2277. Γöé Table 8. Service Layer Errors                         Γöé
  2278. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2279. Γöé VALUE     Γöé DESCRIPTION                          Γöé
  2280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2281. Γöé 0x00200    Γöé Buffer full                          Γöé
  2282. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2283. Γöé 0x00201    Γöé Ill-formed command                      Γöé
  2284. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2285. Γöé 0x00202    Γöé Illegal command                        Γöé
  2286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2287. Γöé 0x00203    Γöé Illegal handle                        Γöé
  2288. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2289. Γöé 0x00204    Γöé Out of memory                         Γöé
  2290. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2291. Γöé 0x00205    Γöé No confirm function                      Γöé
  2292. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2293. Γöé 0x00206    Γöé No response buffer                      Γöé
  2294. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2295. Γöé 0x00207    Γöé Command handle is already in use               Γöé
  2296. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2297. Γöé 0x00208    Γöé DMI version mismatch                     Γöé
  2298. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2299. Γöé 0x00209    Γöé Unknown CI registry                      Γöé
  2300. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2301. Γöé 0x0020a    Γöé Command has been canceled                   Γöé
  2302. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2303. Γöé 0x0020b    Γöé Insufficient privileges                    Γöé
  2304. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2305. Γöé 0x0020c    Γöé No access function provided                  Γöé
  2306. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2307. Γöé 0x0020d    Γöé OS File I/O error                       Γöé
  2308. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2309. Γöé 0x0020e    Γöé Could not spawn a new task                  Γöé
  2310. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2311. Γöé 0x0020f    Γöé Ill-formed MIF                        Γöé
  2312. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2313. Γöé 0x00210    Γöé Invalid file type                       Γöé
  2314. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2315. Γöé 0x00211    Γöé Service Layer is inactive                   Γöé
  2316. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2317. Γöé 0x00212    Γöé UNICODE not supported                     Γöé
  2318. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2319.  
  2320.  
  2321. ΓòÉΓòÉΓòÉ 4.7.4. OS/2 Errors ΓòÉΓòÉΓòÉ
  2322.  
  2323. OS/2 Errors displays the status codes used to indicate error conditions related 
  2324. to the OS/2 operating system. 
  2325.  
  2326. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2327. Γöé Table 9. OS/2 Errors                             Γöé
  2328. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2329. Γöé VALUE     Γöé DESCRIPTION                          Γöé
  2330. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2331. Γöé 0x03000    Γöé OS/2 service layer is not initialized             Γöé
  2332. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2333. Γöé 0x03001    Γöé Error during IPC creation                   Γöé
  2334. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2335. Γöé 0x03002    Γöé Error during thread creation                 Γöé
  2336. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2337. Γöé 0x03003    Γöé Error during queue creation                  Γöé
  2338. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2339. Γöé 0x03004    Γöé OS/2 service layer terminated                 Γöé
  2340. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2341. Γöé 0x03005    Γöé Command exception error                    Γöé
  2342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2343. Γöé 0x03006    Γöé Error initializing synchronous call              Γöé
  2344. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2345. Γöé 0x03007    Γöé Service layer - DLL version mismatch             Γöé
  2346. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2347.  
  2348.  
  2349. ΓòÉΓòÉΓòÉ 4.7.5. AIX Errors ΓòÉΓòÉΓòÉ
  2350.  
  2351. AIX Errors displays the status codes used to indicate error conditions related 
  2352. to the AIX operating system. 
  2353.  
  2354. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2355. Γöé Table 10. AIX Errors                             Γöé
  2356. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2357. Γöé VALUE     Γöé DESCRIPTION                          Γöé
  2358. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2359. Γöé 0x04001    Γöé An error occurred during socket creation.  The specific    Γöé
  2360. Γöé        Γöé errno is EAFNOSUPPORT.                    Γöé
  2361. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2362. Γöé 0x04002    Γöé An error occurred during socket creation.  The specific    Γöé
  2363. Γöé        Γöé errno is ESOCKTNOSUPPORT.                   Γöé
  2364. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2365. Γöé 0x04003    Γöé An error occurred during socket creation.  The specific    Γöé
  2366. Γöé        Γöé errno is EMFILE.                       Γöé
  2367. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2368. Γöé 0x04004    Γöé An error occurred during socket creation.  The specific    Γöé
  2369. Γöé        Γöé errno is ENOBUFS.                       Γöé
  2370. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2371. Γöé 0x04005    Γöé An unknown error occurred during socket creation.       Γöé
  2372. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2373. Γöé 0x04006    Γöé An error occurred during socket binding.  The specific errno Γöé
  2374. Γöé        Γöé is EBADF.                           Γöé
  2375. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2376. Γöé 0x04007    Γöé An error occurred during socket binding.  The specific errno Γöé
  2377. Γöé        Γöé is ENOTSOCK.                         Γöé
  2378. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2379. Γöé 0x04008    Γöé An error occurred during socket binding.  The specific errno Γöé
  2380. Γöé        Γöé is EADDRNOTAVAIL.                       Γöé
  2381. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2382. Γöé 0x04009    Γöé An error occurred during socket binding.  The specific errno Γöé
  2383. Γöé        Γöé is EADDRINUSE.                        Γöé
  2384. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2385. Γöé 0x0400A    Γöé An error occurred during socket binding.  The specific errno Γöé
  2386. Γöé        Γöé is EINVAL.                          Γöé
  2387. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2388. Γöé 0x0400B    Γöé An error occurred during socket binding.  The specific errno Γöé
  2389. Γöé        Γöé is EACCES.                          Γöé
  2390. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2391. Γöé 0x0400C    Γöé An error occurred during socket binding.  The specific errno Γöé
  2392. Γöé        Γöé is EFAULT.                          Γöé
  2393. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2394. Γöé 0x0400D    Γöé An unknown error occurred during socket binding.       Γöé
  2395. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2396. Γöé 0x0400E    Γöé An error occurred during socket listen call.  The specific  Γöé
  2397. Γöé        Γöé errno is EBADF.                        Γöé
  2398. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2399. Γöé 0x0400F    Γöé An error occurred during socket listen call.  The specific  Γöé
  2400. Γöé        Γöé errno is ECONNREFUSED.                    Γöé
  2401. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2402. Γöé 0x04010    Γöé An error occurred during socket listen call.  The specific  Γöé
  2403. Γöé        Γöé errno is ENOTSOCK.                      Γöé
  2404. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2405. Γöé 0x04011    Γöé An error occurred during socket listen call.  The specific  Γöé
  2406. Γöé        Γöé errno is EOPNOTSUPP.                     Γöé
  2407. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2408. Γöé 0x04012    Γöé An unknown error occurred during socket listen call.     Γöé
  2409. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2410.  
  2411.  
  2412. ΓòÉΓòÉΓòÉ 4.7.6. Windows NT/Windows 95 Errors ΓòÉΓòÉΓòÉ
  2413.  
  2414. Windows NT/Windows 95 Errors displays the status codes used to indicate error 
  2415. conditions related to the Windows NT and Windows 95 operating systems. 
  2416.  
  2417. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2418. Γöé Table 11. Windows NT/Windows 95 Errors                    Γöé
  2419. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2420. Γöé VALUE     Γöé DESCRIPTION                          Γöé
  2421. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2422. Γöé 0x06000    Γöé Windows NT/Windows 95 service layer is not initialized    Γöé
  2423. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2424. Γöé 0x06001    Γöé Error during IPC creation                   Γöé
  2425. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2426. Γöé 0x06002    Γöé Error during thread creation                 Γöé
  2427. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2428. Γöé 0x06003    Γöé Error during queue creation                  Γöé
  2429. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2430. Γöé 0x06004    Γöé Windows NT/Windows 95 service layer terminated        Γöé
  2431. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2432. Γöé 0x06005    Γöé Command exception error                    Γöé
  2433. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2434. Γöé 0x06006    Γöé Error initializing synchronous call              Γöé
  2435. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2436. Γöé 0x06007    Γöé Service layer - DLL version mismatch             Γöé
  2437. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2438.  
  2439.  
  2440. ΓòÉΓòÉΓòÉ 4.7.7. Other Errors ΓòÉΓòÉΓòÉ
  2441.  
  2442. Additional status codes are displayed in Other Errors. 
  2443.  
  2444. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2445. Γöé Table 12. Other Errors                            Γöé
  2446. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2447. Γöé VALUE     Γöé DESCRIPTION                          Γöé
  2448. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2449. Γöé 0x02000    Γöé Start of Windows-specific status codes            Γöé
  2450. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2451. Γöé 0x10000    Γöé Start of component-specific status codes           Γöé
  2452. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2453.  
  2454.  
  2455. ΓòÉΓòÉΓòÉ 5. Using the DMI Component Interface ΓòÉΓòÉΓòÉ
  2456.  
  2457. This chapter describes how a component communicates with the DMI through the 
  2458. Component Interface (CI) and how component instrumentation registers with the 
  2459. service layer and send indications. 
  2460.  
  2461. Calls from the service layer through the CI use only attribute, group and key 
  2462. identifiers for naming. By the time the component instrumentation is reached, 
  2463. the service layer has resolved the component ID. Indications sent from the 
  2464. component instrumentation through the CI also need the component ID so that the 
  2465. service layer can identify the component instrumentation. 
  2466.  
  2467. The mechanics of the communication from the service layer to the component 
  2468. instrumentation are specific to the operating system environment. The entry 
  2469. point function calls that the component instrumentation must respond to are 
  2470. DmiCiInvoke() and DmiCiCancel(). 
  2471.  
  2472. The service layer is responsible for launching the component instrumentation, 
  2473. if necessary, and for passing along the command blocks. 
  2474.  
  2475.  
  2476. ΓòÉΓòÉΓòÉ 5.1. Installing a Component ΓòÉΓòÉΓòÉ
  2477.  
  2478. A component identifies itself to the management system by installing a MIF file 
  2479. into the MIF database. The component installs the MIF file the first time it is 
  2480. introduced to the system. This is the only time that the component needs to 
  2481. perform this installation. 
  2482.  
  2483. A MIF is installed and removed using the DmiCiInstall and DmiCiUninstall 
  2484. commands. These are the only primitives provided to manipulate the MIF 
  2485. database. There are no MIF database modification mechanisms. If an installed 
  2486. MIF requires modification, it must be removed, modified, and then re-installed. 
  2487.  
  2488. Upon installation or removal of a MIF file, the service layer issues an 
  2489. indication to all registered management applications. 
  2490.  
  2491. The installation can optionally include files that provide language mapping and 
  2492. mapping logic between the MIF file and other management information standards. 
  2493.  
  2494. For a description of the DmiCiInstallData block issued when installing a 
  2495. component, read DmiCiInstallData Command Block. 
  2496.  
  2497. On successful return, iComponentId is set to a numeric ID assigned by the 
  2498. service layer. This ID uniquely identifies the component described by the 
  2499. installation. This system-specific ID is stored by the service layer in the MIF 
  2500. database. The MIF database is a persistent data store, so the component ID, 
  2501. once assigned, remains the same until the component is removed. The component 
  2502. must remember this component ID, as it is used when issuing indications or when 
  2503. the component is removed from the system. 
  2504.  
  2505. Upon successful installation, the service layer sends an indication to every 
  2506. management application that is currently registered with it. If the 
  2507. installation created a new component, the value of iIndicationType in the 
  2508. DmiIndicate block is 2. If the installation resulted in any additional MIFs 
  2509. being added to an existing component, the value of iIndicationType is 4. In 
  2510. both cases, the indication data is a DmiListComponentCnf block. The DmiIndicate 
  2511. function call is described in DmiIndicate Command Block. 
  2512.  
  2513.  
  2514. ΓòÉΓòÉΓòÉ 5.2. Removing a Component ΓòÉΓòÉΓòÉ
  2515.  
  2516. Removing a component from the MIF database effectively removes the component 
  2517. from further participation in the management system. In the DMI, removing a 
  2518. component is called uninstalling. 
  2519.  
  2520. Removing a component from the MIF database does not mean the component is not 
  2521. present in the computer system. The component is still in the system, but the 
  2522. management system is not aware of it. 
  2523.  
  2524. To remove a component from the MIF database, the component instrumentation 
  2525. fills out a DmiCiUninstallData block and sends it to the service layer with the 
  2526. DmiInvoke() function call. 
  2527.  
  2528. For a description of the DmiCiUninstallData block issued when installing a 
  2529. component, read DmiCiUninstallData Command Block. 
  2530.  
  2531. Upon successful removal, the service layer sends an indication to every 
  2532. management application that is currently registered with it. The value of 
  2533. iIndicationType in the DmiIndicate block is 3, and the indication data is a 
  2534. DmiListComponentCnf block. 
  2535.  
  2536.  
  2537. ΓòÉΓòÉΓòÉ 5.3. Invoking a Command ΓòÉΓòÉΓòÉ
  2538.  
  2539. The component instrumentation must provide an entry point so the service layer 
  2540. can send command blocks to the component for processing. The service layer uses 
  2541. the DmiCiInvoke() function call to do this. The C-language prototype for this 
  2542. call is: 
  2543.  
  2544. unsigned long  DmiCiInvoke(PTR command)
  2545.  
  2546. command is the complete command block. 
  2547.  
  2548. The return result from the component instrumentation is a 32-bit status value 
  2549. indicating success or failure. The possible status values are described in 
  2550. Status Codes 
  2551.  
  2552.  
  2553. ΓòÉΓòÉΓòÉ 5.4. Canceling a Command ΓòÉΓòÉΓòÉ
  2554.  
  2555. The service layer can notify the component instrumentation of an intent to 
  2556. cancel an individual command by calling the DmiCiCancel() entry point within 
  2557. the component instrumentation. This can be issued as a result of a management 
  2558. application issuing a DmiCancelCmd command to the service layer. The C-language 
  2559. prototype for this call is: 
  2560.  
  2561. unsigned long  DmiCiCancel(void)
  2562.  
  2563. No parameters are needed since by definition the component instrumentation can 
  2564. only be processing one command at a time. 
  2565.  
  2566. The return result from the component instrumentation should be zero for success 
  2567. and non-zero for any error. The service layer will place the result in iStatus 
  2568. when sending the confirm block to the management application. 
  2569.  
  2570.  
  2571. ΓòÉΓòÉΓòÉ 5.5. Registering Instrumentation ΓòÉΓòÉΓòÉ
  2572.  
  2573. Component instrumentation code can register with the service layer. 
  2574. Registration is desirable when the component instrumentation code is already 
  2575. running, such as management code associated with a running device driver. 
  2576. Registering management entry points within the running code is called 
  2577. registering the direct interface. The direct interface is also useful when the 
  2578. time required to locate and load an executable file and set up and terminate a 
  2579. process would be excessive. 
  2580.  
  2581. Component instrumentation that has registered a direct interface causes the 
  2582. service layer to override its current access mechanism for the registered 
  2583. attributes. Instead of manipulating the data in the MIF database or invoking 
  2584. programs, the service layer calls the entry point provided in the registration 
  2585. call. When the component unregisters, the service layer returns to its usual 
  2586. method  of processing requests for the data, as defined in the MIF file. In 
  2587. this way, component instrumentation can temporarily interrupt normal processing 
  2588. to perform some special function. Note that registering attributes through the 
  2589. direct interface overrides attributes that are already being served through the 
  2590. direct interface. 
  2591.  
  2592. The DmiRegisterCiInd block can be used: 
  2593.  
  2594.      To register a callable interface for components that have resident 
  2595.       instrumentation code 
  2596.  
  2597.      To get the version of the service layer. 
  2598.  
  2599.  For a description of the DmiRegisterCiInd block issued when registering 
  2600.  instrumentation, read DmiRegisterCiInd Command Block. 
  2601.  
  2602.  To unregister component instrumentation, the DmiUnregisterCiInd block is 
  2603.  issued to the service layer. For a description of the DmiUnregisterCiInd block 
  2604.  issued when unregistering instrumentation, read DmiUnregisterCiInd Command 
  2605.  Block. 
  2606.  
  2607.  
  2608. ΓòÉΓòÉΓòÉ 5.6. Sending Events ΓòÉΓòÉΓòÉ
  2609.  
  2610. Component instrumentation can send unsolicited messages to the service layer to 
  2611. notify it of some particular situation. These unsolicited messages are known as 
  2612. events. When they reach a management application they are usually known as 
  2613. indications, with an indication ID of 1. Events are often used to describe a 
  2614. catastrophic occurrence or other activity that a management application should 
  2615. be informed of quickly. The event identification is specific to a given 
  2616. component. 
  2617.  
  2618. The DmiIndicate() function call is provided so that component instrumentation 
  2619. can send an indication block to the service layer for processing. The 
  2620. C-language prototype for this call is: 
  2621.  
  2622. unsigned long  DmiIndicate(PTR command)
  2623.  
  2624. command is the complete command block. The return result is a 32-bit status 
  2625. value indicating success or failure. The possible status values are described 
  2626. in Status Codes. 
  2627.  
  2628. While it processes the indication, the service layer immediately returns 
  2629. control to the component instrumentation. The component instrumentation can 
  2630. then continue processing and issue additional indications, but the 
  2631. instrumentation cannot re-use the same indication buffer that it previously 
  2632. sent to the service layer. Simultaneous indications from a component 
  2633. instrumentation must use different indication blocks. When the service layer is 
  2634. finished processing the indication, it notifies the component instrumentation 
  2635. by calling the pResponseFunc() function that was given in the original 
  2636. indication block. At that point, the component instrumentation can re-use the 
  2637. indication block. 
  2638.  
  2639. To send an event, the component instrumentation sends a DmiIndicate block to 
  2640. the service layer's DmiIndicate() entry point. The event data is defined in a 
  2641. DmiEventData block that maps onto the oIndicationData field in the DmiIndicate 
  2642. block. 
  2643.  
  2644. For a description of the DmiIndicate block used to issue an indication, read 
  2645. DmiIndicate Command Block. 
  2646.  
  2647. If you are using the DMI subagent to translate DMI indications into SNMP traps, 
  2648. note the following when creating indications: 
  2649.  
  2650.      Keep the length of any strings passed in a DmiIndicate() call to 512 
  2651.       characters or less. Strings longer than this limit are truncated to 512 
  2652.       characters in the corresponding SNMP trap. 
  2653.  
  2654.      Restrict the size and number of variables associated with each DMI 
  2655.       indicate such that the indication will fit within the maximum SNMP frame 
  2656.       size supported in your network. 
  2657.  
  2658.  
  2659. ΓòÉΓòÉΓòÉ 6. DMI Command Blocks ΓòÉΓòÉΓòÉ
  2660.  
  2661. The commands issued to the DMI by management applications and components are 
  2662. composed of data structures called command blocks. A typical DMI command 
  2663. contains the following: 
  2664.  
  2665.      A standard command block, such as the DmiMgmtCommand block. This block 
  2666.       appears first in the command block and provides a command code that 
  2667.       indicates the specific operation to perform and the composition of the 
  2668.       remainder of the command block. 
  2669.  
  2670.      One or more blocks pertaining to a specific command. 
  2671.  
  2672.      Any data associated with the command-specific blocks. 
  2673.  
  2674.  This chapter describes the command blocks used with the DMI. There are three 
  2675.  types of DMI command blocks: 
  2676.  
  2677.      Common command blocks 
  2678.      Management Interface (MI) command blocks 
  2679.      Component Interface (CI) command blocks 
  2680.  
  2681.  Each command block described in this chapter has the following information 
  2682.  presented in tabular format: 
  2683.  
  2684.  Offset         Indicates the location of the element in the buffer. The offset 
  2685.                 is the number of octets from the start of the buffer. 
  2686.  
  2687.  Size           Indicates the size of the element in octets. 
  2688.  
  2689.  Type           Indicates the type of element.  Possible types include: 
  2690.  
  2691.                 INT                 Integer 
  2692.                 OFFSET              Offset to another element in the block 
  2693.                 PTR                 Pointer to a buffer 
  2694.                 STRUCT              Command block structure 
  2695.                 TIMESTAMP           Timestamp block 
  2696.  
  2697.  Variable name  Indicates the name of the element 
  2698.  
  2699.  
  2700. ΓòÉΓòÉΓòÉ 6.1. Common Command Blocks ΓòÉΓòÉΓòÉ
  2701.  
  2702. The DMI uses a common set of data blocks to form the basis of the commands that 
  2703. are sent between management applications and component instrumentation. The 
  2704. following common blocks are used as part of request blocks, response blocks, 
  2705. and indication blocks: 
  2706.  
  2707.      DmiMgmtCommand 
  2708.      DmiCiCommand 
  2709.      DmiConfirm 
  2710.      DmiIndicate 
  2711.      DmiVersion 
  2712.      DmiGroupKeyData 
  2713.      DmiTimeStamp 
  2714.  
  2715.  The code samples in Management Interface (MI) Command Blocks and Component 
  2716.  Interface (CI) Command Blocks provide examples of how these common command 
  2717.  blocks can be used. 
  2718.  
  2719.  
  2720. ΓòÉΓòÉΓòÉ 6.1.1. DmiMgmtCommand ΓòÉΓòÉΓòÉ
  2721.  
  2722. All commands issued through the MI start with a DmiMgmtCommand block. Each 
  2723. outstanding command requires a separate DmiMgmtCommand block. Typically, a 
  2724. command consists of the DmiMgmtCommand block, with additional parameters 
  2725. appended to specify such things as the target of a request or the key data for 
  2726. a table, for example. 
  2727.  
  2728. The format for the command block is: 
  2729.  
  2730. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2731. Γöé Table 13. DmiMgmtCommand Command Block                    Γöé
  2732. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2733. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  2734. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2735. Γöé 0       Γöé 4       Γöé INT      Γöé iLevelCheck          Γöé
  2736. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2737. Γöé 4       Γöé 4       Γöé INT      Γöé iCommand           Γöé
  2738. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2739. Γöé 8       Γöé 4       Γöé INT      Γöé iCmdLen            Γöé
  2740. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2741. Γöé 12       Γöé 4       Γöé INT      Γöé iMgmtHandle          Γöé
  2742. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2743. Γöé 16       Γöé 4       Γöé INT      Γöé iCmdHandle          Γöé
  2744. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2745. Γöé 20       Γöé 4       Γöé OFFSET     Γöé osLanguage          Γöé
  2746. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2747. Γöé 24       Γöé 4       Γöé OFFSET     Γöé oSecurity           Γöé
  2748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2749. Γöé 28       Γöé 4       Γöé INT      Γöé iCnfBufLen          Γöé
  2750. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2751. Γöé 32       Γöé 4       Γöé PTR      Γöé pCnfBuf            Γöé
  2752. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2753. Γöé 36       Γöé 4       Γöé INT      Γöé iRequestCount         Γöé
  2754. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2755. Γöé 40       Γöé 4       Γöé INT      Γöé iCnfCount           Γöé
  2756. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2757. Γöé 44       Γöé 4       Γöé INT      Γöé iStatus            Γöé
  2758. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2759. Γöé 48       Γöé 16       Γöé STRUCT     Γöé DmiCiCommand         Γöé
  2760. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2761.  
  2762.  Variable Name       Variable Description 
  2763.  
  2764.  iLevelCheck         A 4-octet integer with a code value of 0x444d3131 and an 
  2765.                      ISO 8859-1 value of DMI1. This value indicates the 
  2766.                      revision level of the DMI specification used by the code 
  2767.                      issuing the command and also functions as a check, so that 
  2768.                      the receiver can be confident the pointer is pointing to a 
  2769.                      valid command block. 
  2770.  
  2771.  iCommand            A code specifying which command to execute. The standard 
  2772.                      command codes are listed in the description of each 
  2773.                      command. 
  2774.  
  2775.  iCmdLen             Length in octets of the entire command, including the 
  2776.                      DmiMgmtCommand block, all appended blocks, and any values 
  2777.                      stored at the end of the buffer for Set Attribute 
  2778.                      commands. 
  2779.  
  2780.  iMgmtHandle         A value that uniquely identifies the management 
  2781.                      application. This value is assigned to the management 
  2782.                      application by the service layer in response to the 
  2783.                      DmiRegisterMgmtCmd command. This value is ignored when 
  2784.                      sending the DmiRegisterMgmtCmd command itself. 
  2785.  
  2786.  iCmdHandle          Optional integer set by the management application to a 
  2787.                      value unique to all other outstanding commands from that 
  2788.                      management application. The handle can later be used to 
  2789.                      cancel the command. 
  2790.  
  2791.  osLanguage          Offset to a string indicating the desired human language 
  2792.                      for the response. The format of the string is specified in 
  2793.                      Language Statement. If the management application sets 
  2794.                      this field to zero, the language specified by the first 
  2795.                      MIF installed for this component is used. 
  2796.  
  2797.  oSecurity           Offset to an optional security credentials block, as 
  2798.                      defined in DmiSecurity Command Block, If no block is 
  2799.                      specified, this value is zero. The service layer and 
  2800.                      component instrumentation can use the information in this 
  2801.                      block to implement local security policies. 
  2802.  
  2803.  iCnfBufLen          Length of the confirm buffer, in octets of contiguous 
  2804.                      memory. The management application sets this to inform the 
  2805.                      service layer of the maximum size of the response. 
  2806.  
  2807.                      Note:  The length of the confirm buffer for 
  2808.                      DmiListComponentCmd commands should be at least 2K to 
  2809.                      ensure adequate space for the class strings. 
  2810.  
  2811.  pCnfBuf             Pointer to the buffer where the management application 
  2812.                      wants the confirm response to go. The management 
  2813.                      application must supply this buffer; it is not provided by 
  2814.                      the service layer or component instrumentation. The buffer 
  2815.                      must be a minimum of 512 octets. 
  2816.  
  2817.  iRequestCount       The number of requests in this command. This count does 
  2818.                      not include the DmiMgmtCommand block itself. 
  2819.  
  2820.  iCnfCount           Number of valid confirm blocks in pCnfBuf. This value is 
  2821.                      set on the return of the response. 
  2822.  
  2823.  iStatus             Return status of this command. In the case of an error, 
  2824.                      where iCnfCount contains the number of valid confirms, 
  2825.                      iStatus refers to the request represented by (iCnfCount + 
  2826.                      1). This value is set on the return of the response. 
  2827.  
  2828.  DmiCiCommand        Command block with information for component 
  2829.                      instrumentation. Read DmiCiCommand Command Block for a 
  2830.                      description of the DmiCiCommand command block. 
  2831.  
  2832.  The format of the DmiSecurity block is: 
  2833.  
  2834.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2835.   Γöé Table 14. DmiSecurity Command Block                      Γöé
  2836.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2837.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  2838.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2839.   Γöé 0       Γöé 4       Γöé INT      Γöé iSecurityLen         Γöé
  2840.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2841.   Γöé 4       Γöé 4       Γöé INT      Γöé iSecurityType         Γöé
  2842.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2843.   Γöé 8       Γöé x       Γöé STRUCT     Γöé SecurityData         Γöé
  2844.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2845.  
  2846.  Variable Name       Variable Description 
  2847.  
  2848.  iSecurityLen        Length of the security block, in octets of contiguous 
  2849.                      memory. 
  2850.  
  2851.  iSecurityType       Type of security block being passed in SecurityData. 
  2852.                      Standard security blocks are not provided in version 1.0 
  2853.                      of the DMI. The service layer can accept non-standard 
  2854.                      security blocks, if provided. These blocks are defined by 
  2855.                      the service layer implementation and exist in the range 
  2856.                      above 0x80000000 (the high bit of the type is set). 
  2857.  
  2858.  SecurityData        A block that contains the details of the security 
  2859.                      credentials. The size and structure of the security data 
  2860.                      depend on the value of iSecurityType. 
  2861.  
  2862.  
  2863. ΓòÉΓòÉΓòÉ 6.1.2. DmiCiCommand ΓòÉΓòÉΓòÉ
  2864.  
  2865. The DmiCiCommand block is included in the DmiMgmtCommand block and provides 
  2866. information for the component instrumentation. 
  2867.  
  2868. The format for the command block is: 
  2869.  
  2870. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2871. Γöé Table 15. DmiCiCommand Command Block                     Γöé
  2872. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2873. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  2874. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2875. Γöé 0       Γöé 4       Γöé OFFSET     Γöé oCmdListEntry         Γöé
  2876. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2877. Γöé 4       Γöé 4       Γöé INT      Γöé iCnfBufLen          Γöé
  2878. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2879. Γöé 8       Γöé 4       Γöé PTR      Γöé pCnfBuf            Γöé
  2880. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2881. Γöé 12       Γöé 4       Γöé PTR      Γöé pConfirmFunc         Γöé
  2882. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2883.  
  2884.  Variable Name       Variable Description 
  2885.  
  2886.  oCmdListEntry       Offset to the command to be processed. This is only used 
  2887.                      for Get and Set Attribute commands. For Get Attribute 
  2888.                      commands, the value is an offset to the appropriate 
  2889.                      DmiGetAttributeData block. For Set Attribute commands, the 
  2890.                      value is an offset to the appropriate DmiSetAttributeData 
  2891.                      block. For other commands, the value is zero. 
  2892.  
  2893.  iCnfBufLen          Length of the confirm buffer in octets of contiguous 
  2894.                      space. This is not necessarily the buffer length listed in 
  2895.                      the DmiMgmtCommand block. The service layer might have 
  2896.                      supplied a different buffer specifically for this command. 
  2897.  
  2898.  pCnfBuf             Pointer to the confirm buffer supplied by the service 
  2899.                      layer where the result should be placed.  This is not 
  2900.                      necessarily the buffer pointed to by pCnfBuf in the 
  2901.                      DmiMgmtCommand block. 
  2902.  
  2903.  pConfirmFunc        Entry point into the service layer where the component 
  2904.                      instrumentation calls when the command is completed. The C 
  2905.                      prototype for this call is: 
  2906.  
  2907.                                           void pConfirmFunc(DmiConfirm *buf)
  2908.  
  2909.                      buf points to a DmiConfirm block. 
  2910.  
  2911.  
  2912. ΓòÉΓòÉΓòÉ 6.1.3. DmiConfirm ΓòÉΓòÉΓòÉ
  2913.  
  2914. The DmiConfirm block is sent as the result of a request message to indicate 
  2915. that processing of the request has completed. 
  2916.  
  2917. The format for the command block is: 
  2918.  
  2919. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2920. Γöé Table 16. DmiConfirm Command Block                      Γöé
  2921. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2922. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  2923. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2924. Γöé 0       Γöé 4       Γöé INT      Γöé iLevelCheck          Γöé
  2925. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2926. Γöé 4       Γöé 4       Γöé PTR      Γöé pDmiMgmtCommand        Γöé
  2927. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2928. Γöé 8       Γöé 4       Γöé INT      Γöé iStatus            Γöé
  2929. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2930.  
  2931.  Variable Name         Variable Description 
  2932.  
  2933.  iLevelCheck           A 4-octet integer with a code value of 0x444d3131 and an 
  2934.                        ISO 8859-1 value of DMI1. This value indicates the 
  2935.                        revision level of the DMI specification used by the code 
  2936.                        issuing the command and also functions as a check, so 
  2937.                        that the receiver can be confident the pointer is 
  2938.                        pointing to a valid confirmation block. 
  2939.  
  2940.  pDmiMgmtCommand       Pointer to a command block. 
  2941.  
  2942.  iStatus               A status code indicating an error condition or other 
  2943.                        information. 
  2944.  
  2945.  
  2946. ΓòÉΓòÉΓòÉ 6.1.4. DmiIndicate ΓòÉΓòÉΓòÉ
  2947.  
  2948. Entities within the DMI can issue unsolicited reports. Component 
  2949. instrumentation can issue events to the service layer. The service layer can 
  2950. issue notifications of component installations and removals to management 
  2951. applications. These unsolicited notifications are called indications. Each 
  2952. sender of an indication fills out a DmiIndicate block. The DmiIndicate block is 
  2953. then passed to the receiver's indication entry point that was obtained during 
  2954. the registration process. 
  2955.  
  2956. The format for the command block is: 
  2957.  
  2958. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2959. Γöé Table 17. DmiIndicate Command Block                      Γöé
  2960. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2961. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  2962. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2963. Γöé 0       Γöé 4       Γöé INT      Γöé iLevelCheck          Γöé
  2964. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2965. Γöé 4       Γöé 4       Γöé INT      Γöé iIndicationType        Γöé
  2966. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2967. Γöé 8       Γöé 4       Γöé INT      Γöé iCmdLen            Γöé
  2968. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2969. Γöé 12       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  2970. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2971. Γöé 16       Γöé 28       Γöé TIMESTAMP   Γöé DmiTimeStamp         Γöé
  2972. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2973. Γöé 44       Γöé 4       Γöé PTR      Γöé pResponseFunc         Γöé
  2974. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2975. Γöé 48       Γöé 4       Γöé OFFSET     Γöé oIndicationData        Γöé
  2976. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2977.  
  2978.  Variable Name       Variable Description 
  2979.  
  2980.  iLevelCheck         A 4-octet integer with a code value of 0x444d3131 and an 
  2981.                      ISO 8859-1 value of DMI1. This value indicates the 
  2982.                      revision level of the DMI specification used by the code 
  2983.                      issuing the command and also functions as a check, so that 
  2984.                      the receiver can be confident the pointer is pointing to a 
  2985.                      valid indication block. 
  2986.  
  2987.  iIndicationType     A code specifying the indication type. The possible codes 
  2988.                      are: 
  2989.  
  2990.                      1              Event 
  2991.                      2              Install 
  2992.                      3              Uninstall 
  2993.                      4              Language map 
  2994.  
  2995.  iCmdLen             Length of the entire indication block in octets. 
  2996.  
  2997.  iComponentId        The ID of the component instrumentation generating this 
  2998.                      indication. 
  2999.  
  3000.                      0              The indication was generated by an entity 
  3001.                                     that has not been installed as a component 
  3002.                                     and has no component ID. 
  3003.  
  3004.                      1              The service layer has initiated the 
  3005.                                     indication. 
  3006.  
  3007.  DmiTimeStamp        A DmiTimeStamp block, as described in DmiTimeStamp Command 
  3008.                      Block. If a component instrumentation initiated the 
  3009.                      indication and set the time to zero, the service layer 
  3010.                      adds the time stamp. If the field is non-zero, the service 
  3011.                      layer does not check the value for accuracy. 
  3012.  
  3013.  pResponseFunc       A pointer to the entry point that is called when the 
  3014.                      receiver finishes processing the indication report. 
  3015.                      Typically this is only for use between component 
  3016.                      instrumentation and the service layer. The service layer 
  3017.                      sets this field to zero before sending indications to 
  3018.                      management applications. 
  3019.  
  3020.                      Some service layer implementations might require a 
  3021.                      response to certain indications. In this case the field is 
  3022.                      not set to zero, and the management application must call 
  3023.                      the service layer entry point. 
  3024.  
  3025.  oIndicationData     An offset to a required buffer that provides context for 
  3026.                      the indication. The meaning of this data is dependent on 
  3027.                      the indication type. For events, the DmiEventData block is 
  3028.                      returned. For component installs and removals, a 
  3029.                      DmiListComponentCnf block is returned. 
  3030.  
  3031.  
  3032. ΓòÉΓòÉΓòÉ 6.1.5. DmiVersion ΓòÉΓòÉΓòÉ
  3033.  
  3034. This block describes the version of the service layer implementation. It is 
  3035. returned by the registration calls DmiRegisterMgmtCmd and DmiRegisterCiCmd. 
  3036.  
  3037. The format for the command block is: 
  3038.  
  3039. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3040. Γöé Table 18. DmiVersion Command Block                      Γöé
  3041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3042. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3043. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3044. Γöé 0       Γöé 4       Γöé OFFSET     Γöé osDmiSpecLevel        Γöé
  3045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3046. Γöé 4       Γöé 4       Γöé OFFSET     Γöé osImplDesc          Γöé
  3047. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3048.  
  3049.  Variable Name       Variable Description 
  3050.  
  3051.  osDmiSpecLevel      Offset to a string that describes the latest level of the 
  3052.                      DMI specification supported by this service layer. 
  3053.  
  3054.  osImplDesc          Offset to a string that describes the 
  3055.                      implementation-specific version of the service layer. 
  3056.  
  3057.  
  3058. ΓòÉΓòÉΓòÉ 6.1.6. DmiGroupKeyData ΓòÉΓòÉΓòÉ
  3059.  
  3060. This block defines a key to be used when indexing into a group that is arranged 
  3061. as a table. The number of DmiGroupKeyData blocks must match the number of 
  3062. integers specified in the key statement of the component definition. For 
  3063. example, if the key statement identifies attributes 4, 7, and 3 as indexes, 
  3064. there must be three DmiGroupKeyData blocks, with the first corresponding to 
  3065. attribute 4, the next corresponding to attribute 7, and the last corresponding 
  3066. to attribute 3. 
  3067.  
  3068. Out-of-order keys and partial keys are not supported. A key must uniquely 
  3069. identify no more than one instance of a table. 
  3070.  
  3071. The format for the command block is: 
  3072.  
  3073. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3074. Γöé Table 19. DmiGroupKeyData Command Block                    Γöé
  3075. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3076. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3077. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3078. Γöé 0       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  3079. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3080. Γöé 4       Γöé 4       Γöé INT      Γöé iAttributeType        Γöé
  3081. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3082. Γöé 8       Γöé 4       Γöé OFFSET     Γöé oKeyValue           Γöé
  3083. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3084.  
  3085.  Variable Name       Variable Description 
  3086.  
  3087.  iAttributeId        The attribute to be used as an index into a table. 
  3088.  
  3089.  iAttributeType      Data type of the attribute. Possible values are: 
  3090.  
  3091.                      1              counter 
  3092.                      2              counter64 
  3093.                      3              gauge 
  3094.                      5              integer 
  3095.                      6              integer64 
  3096.                      7              octet string 
  3097.                      8              displaystring or string 
  3098.                      11             date 
  3099.  
  3100.  oKeyValue           Offset to the value of the key. 
  3101.  
  3102.  The attribute ID and type are necessary even though the key statement 
  3103.  determines the order because the block is used as follows: 
  3104.  
  3105.      By management applications to specify keys 
  3106.      By the service layer for returning the group's key structure 
  3107.      By component instrumentation to return key values 
  3108.  
  3109.  The fields must always be filled, even if they are not needed. 
  3110.  
  3111.  
  3112. ΓòÉΓòÉΓòÉ 6.1.7. DmiTimeStamp ΓòÉΓòÉΓòÉ
  3113.  
  3114. This block describes the time format used in the DMI. The format of the time 
  3115. block is a 28-octet displayable string with ISO 8859-1 encoding, so each 
  3116. element is one or more printable characters. 
  3117.  
  3118. DmiTimeStamp Command Block describes the contents of the string: 
  3119.  
  3120. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3121. Γöé Table 20. DmiTimeStamp Command Block                     Γöé
  3122. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3123. Γöé OCTETS          Γöé CONTENTS         Γöé ENCODING         Γöé
  3124. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3125. Γöé 1-4           Γöé year           Γöé decimal         Γöé
  3126. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3127. Γöé 5-6           Γöé month           Γöé decimal (1..12)     Γöé
  3128. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3129. Γöé 7-8           Γöé day            Γöé decimal (1..31)     Γöé
  3130. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3131. Γöé 9-10           Γöé hour           Γöé decimal (0..23)     Γöé
  3132. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3133. Γöé 11-12          Γöé minutes          Γöé decimal (0..59)     Γöé
  3134. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3135. Γöé 13-14          Γöé seconds          Γöé decimal (0..60)     Γöé
  3136. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3137. Γöé 15            Γöé dot            Γöé "."           Γöé
  3138. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3139. Γöé 16-21          Γöé microseconds       Γöé decimal (0..999999)   Γöé
  3140. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3141. Γöé 22-25          Γöé offset from UTC (in    Γöé ["+" | "-" ] (000..720) Γöé
  3142. Γöé             Γöé minutes)         Γöé             Γöé
  3143. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3144. Γöé 26-28          Γöé unused          Γöé (for purposes of align- Γöé
  3145. Γöé             Γöé              Γöé ment)          Γöé
  3146. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3147.  
  3148. For example, Wednesday May 25, 1994 at 1:30:15 PM EDT would be represented as: 
  3149.  
  3150. 19940525133015.000000-300
  3151.  
  3152. A seconds value of 60 is used for leap seconds. 
  3153.  
  3154. The offset from UTC is the number of minutes west (negative number) or east 
  3155. offset from UTC that indicates the time zone of the system. 
  3156.  
  3157. Values must be zero-padded if necessary, like 05 in the example above. If a 
  3158. value is not supplied for a field, each character in the field must be replaced 
  3159. with asterisk (*) characters. 
  3160.  
  3161. The service layer is not required to check the contents of this string for 
  3162. validity. 
  3163.  
  3164.  
  3165. ΓòÉΓòÉΓòÉ 6.2. Management Interface (MI) Command Blocks ΓòÉΓòÉΓòÉ
  3166.  
  3167. The following command blocks are used when issuing commands to the Management 
  3168. Interface (MI). 
  3169.  
  3170.      DmiRegisterMgmtReq 
  3171.      DmiRegisterCnf 
  3172.      DmiListComponentReq 
  3173.      DmiListComponentCnf 
  3174.      DmiListGroupReq 
  3175.      DmiListGroupCnf 
  3176.      DmiListGroupPragmaReq 
  3177.      DmiListAttributeReq 
  3178.      DmiListAttributeCnf 
  3179.      DmiListDescReq 
  3180.      DmiGetAttributeReq 
  3181.      DmiGetAttributeCnf 
  3182.      DmiSetAttributeReq 
  3183.      DmiGetRowReq 
  3184.      DmiGetRowCnf 
  3185.  
  3186.  
  3187. ΓòÉΓòÉΓòÉ 6.2.1. DmiRegisterMgmtReq ΓòÉΓòÉΓòÉ
  3188.  
  3189. Before a management application can initiate any management activity through 
  3190. the DMI, the application must register with the service layer. The command 
  3191. block used for registration is the DmiRegisterMgmtReq block. 
  3192.  
  3193. The format for the command block is: 
  3194.  
  3195. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3196. Γöé Table 21. DmiRegisterMgmtReq Command Block                  Γöé
  3197. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3198. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3199. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3200. Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  3201. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3202. Γöé 64       Γöé 4       Γöé PTR      Γöé pConfirmFunc         Γöé
  3203. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3204. Γöé 68       Γöé 4       Γöé PTR      Γöé pIndicationFunc        Γöé
  3205. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3206.  
  3207.  Variable Name       Variable Description 
  3208.  
  3209.  DmiMgmtCommand      The command block.  The value of iCommand is 0x100. 
  3210.  
  3211.  pConfirmFunc        Pointer to a routine in the management application that 
  3212.                      the service layer calls after completing each command. The 
  3213.                      C prototype for this call is: 
  3214.  
  3215.                                           void pConfirmFunc(PTR cmd)
  3216.  
  3217.                      The variable cmd points to the command block that has 
  3218.                      completed. If pConfirmFunc() is set to zero, the 
  3219.                      management application cannot use DmiInvoke to issue 
  3220.                      management directives but can still receive indications, 
  3221.                      if pIndicationFunc() is non-zero. 
  3222.  
  3223.  pIndicationFunc     Pointer to a routine in the management application that 
  3224.                      the service layer calls to send unsolicited reports, 
  3225.                      either because of an event or because a component has been 
  3226.                      removed. If the management application does not want to 
  3227.                      receive indications, it must set this field to zero. The C 
  3228.                      prototype for this call is: 
  3229.  
  3230.                                           void pIndicationFunc(DmiIndicate *buf)
  3231.  
  3232.                      The variable buf points to a DmiIndicate block. 
  3233.  
  3234.  Issuing DmiRegisterMgmtReq displays an example of how to issue the 
  3235.  DmiRegisterMgmtReq command block to the MI. 
  3236.  
  3237.  
  3238.   Issuing DmiRegisterMgmtReq
  3239.  
  3240.   ULONG IssueReg(void)   // attempt to register with the service layer
  3241.   {
  3242.   DMI_RegisterMgmtReq_t    *reg;
  3243.   ULONG RC;
  3244.  
  3245.       /* Register with the Service Layer. */
  3246.       reg = (DMI_RegisterMgmtReq_t *)malloc(sizeof(DMI_RegisterMgmtReq_t));
  3247.       memset((void *)reg,0,sizeof(DMI_RegisterMgmtReq_t));
  3248.       reg->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  3249.       reg->DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE;  // set the command counter
  3250.       reg->DmiMgmtCommand.iCnfBufLen = 4000UL;               // set the size of the response
  3251.       reg->DmiMgmtCommand.pCnfBuf = malloc(4000);   // set up the response buffer
  3252.       reg->DmiMgmtCommand.iRequestCount = 1;
  3253.       reg->DmiMgmtCommand.iCmdLen = sizeof(DMI_RegisterMgmtReq_t);
  3254.       reg->DmiMgmtCommand.iCommand = DmiRegisterMgmtCmd;
  3255.       reg->pIndicationFunc = (DMI_FUNC3_OUT) myEventHandler;
  3256.       reg->pConfirmFunc = (DMI_FUNC3_OUT) myCallBackFunc;
  3257.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)reg)) != SLERR_NO_ERROR) {  // call service layer and register
  3258.           free(reg->DmiMgmtCommand.pCnfBuf);
  3259.           free(reg);
  3260.       }
  3261.       return RC;
  3262.   }
  3263.  
  3264.  
  3265. ΓòÉΓòÉΓòÉ 6.2.2. DmiRegisterCnf ΓòÉΓòÉΓòÉ
  3266.  
  3267. A confirm message is sent if the pConfirmFunc() call is non-zero. The confirm 
  3268. message contains the DmiRegisterCnf block, as pointed to by pCnfBuf in the 
  3269. DmiMgmtCommand block. 
  3270.  
  3271. The format for the command block is: 
  3272.  
  3273. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3274. Γöé Table 22. DmiRegisterCnf Command Block                    Γöé
  3275. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3276. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3277. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3278. Γöé 0       Γöé 8       Γöé STRUCT     Γöé DmiVersion          Γöé
  3279. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3280. Γöé 8       Γöé 4       Γöé INT      Γöé iDmiHandle          Γöé
  3281. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3282.  
  3283.  Variable Name       Variable Description 
  3284.  
  3285.  DmiVersion          A block defining the version of the service layer. 
  3286.  
  3287.  iDmiHandle          This value is a unique handle for this management 
  3288.                      application on this system. The value is placed in the 
  3289.                      iMgmtHandle for all subsequent commands from this 
  3290.                      application. 
  3291.  
  3292.  Processing DmiRegisterCnf displays an example of how to handle the 
  3293.  DmiRegisterCnf callback command block. For this example, all callbacks that 
  3294.  are returned to the management application are processed through a single 
  3295.  entry point. 
  3296.  
  3297.  
  3298.   Processing DmiRegisterCnf
  3299.  
  3300.   case DmiRegisterMgmtCmd:
  3301.       if(miCommand->iStatus == 0){   // all went well
  3302.           Response = (DMI_RegisterCnf_t *)miCommand->pCnfBuf;  // type it first, it's easier
  3303.           AppInfo.myHandle = Response->iDmiHandle;
  3304.           Work = (DMI_STRING *)((char *)Response + Response->DmiVersion.osDmiSpecLevel);  // point to the
  3305.                                                                                           // MIF string
  3306.           memset(AppInfo.SpecLevel,0,sizeof(AppInfo.SpecLevel));
  3307.           strncpy(AppInfo.SpecLevel,Work->body,Work->length);
  3308.           Work = (DMI_STRING *)((char *)Response + Response->DmiVersion.osImplDesc);
  3309.           memset(AppInfo.SLDescription,0,sizeof(AppInfo.SLDescription));
  3310.           strncpy(AppInfo.SLDescription,Work->body,Work->length);
  3311.  
  3312.           // Do whatever your application needs to do here
  3313.           // to process the callback.
  3314.  
  3315.       }
  3316.       else{    // this is an error condition
  3317.  
  3318.           // Do whatever your application needs to do here
  3319.           // to process the error condition.
  3320.  
  3321.       }
  3322.       break;
  3323.  
  3324.  
  3325. ΓòÉΓòÉΓòÉ 6.2.3. DmiListComponentReq ΓòÉΓòÉΓòÉ
  3326.  
  3327. The following List Component commands use the DmiListComponentReq command 
  3328. block: 
  3329.  
  3330.      DmiListComponentCmd 
  3331.      DmiListFirstComponentCmd 
  3332.      DmiListNextComponentCmd 
  3333.  
  3334.  The format for the command block is: 
  3335.  
  3336.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3337.   Γöé Table 23. DmiListComponentReq Command Block                  Γöé
  3338.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3339.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3340.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3341.   Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  3342.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3343.   Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  3344.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3345.   Γöé 68       Γöé 4       Γöé OFFSET     Γöé osClassString         Γöé
  3346.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3347.   Γöé 72       Γöé 4       Γöé INT      Γöé iGroupKeyCount        Γöé
  3348.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3349.   Γöé 76       Γöé 4       Γöé OFFSET     Γöé oGroupKeyList         Γöé
  3350.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3351.  
  3352.  Variable Name       Variable Description 
  3353.  
  3354.  DmiMgmtCommand      The command block.  The values of iCommand indicate the 
  3355.                      command: 
  3356.  
  3357.                      DmiListComponentCmd                0x200 
  3358.                      DmiListFirstComponentCmd           0x201 
  3359.                      DmiListNextComponentCmd            0x202 
  3360.  
  3361.  iComponentId        Component ID for the desired component. This field is 
  3362.                      ignored for DmiListFirstComponentCmd.  For 
  3363.                      DmiListNextComponentCmd, the service layer starts filling 
  3364.                      the confirm buffer beginning with the component ID that 
  3365.                      follows the value in this field. To start at the first 
  3366.                      component, set this field to zero.  On return from the 
  3367.                      command, the service layer updates this field with the ID 
  3368.                      of the last component in the confirm buffer. The 
  3369.                      management application can continue issuing 
  3370.                      DmiListNextComponentCmd commands until the returned 
  3371.                      iStatus field indicates that there is no more data. 
  3372.  
  3373.  osClassString       Offset to a string that acts as a filter to retrieve data 
  3374.                      for components that have groups with specific class 
  3375.                      strings. If a field of the class string is not 
  3376.                      significant, it can be omitted. 
  3377.  
  3378.                      For example, if an application is looking for all 
  3379.                      component ID groups, it uses the string 
  3380.                      "DMTF|ComponentID|". Because the version string is 
  3381.                      missing, the service layer considers any version a match, 
  3382.                      as long as the first two fields match. If no filtering is 
  3383.                      desired, set this field to zero or to an empty class 
  3384.                      string ("||"). 
  3385.  
  3386.  iGroupKeyCount      The number of elements of type DmiGroupKeyData pointed to 
  3387.                      by oGroupKeyList. If any keys are given, they are used 
  3388.                      with the group class for filtering, and the service layer 
  3389.                      returns a list of the components that have a particular 
  3390.                      row in a particular table. It is an error to specify keys 
  3391.                      without specifying a class string. 
  3392.  
  3393.  oGroupKeyList       Offset to a list of blocks of type DmiGroupKeyData. 
  3394.  
  3395.  Issuing DmiListComponentReq displays an example of how to issue the 
  3396.  DmiListComponentReq command to the MI. 
  3397.  
  3398.  
  3399.   Issuing DmiListComponentReq
  3400.  
  3401.   ULONG IssueListComp(ULONG ComponentID,SHORT ListType)  // issues the list component command to the SL
  3402.   {
  3403.   DMI_ListComponentReq_t *ListComp;
  3404.   ULONG RC;
  3405.  
  3406.       ListComp = (DMI_ListComponentReq_t *)malloc(sizeof(DMI_ListComponentReq_t));
  3407.       memset((void *)ListComp,0,sizeof(DMI_ListComponentReq_t));
  3408.       ListComp->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  3409.       ListComp->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;     // set the app handle
  3410.       ListComp->DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE;   // set the command handle
  3411.       ListComp->DmiMgmtCommand.iCnfBufLen = 8000UL;                // set the size of the response buffer
  3412.       ListComp->DmiMgmtCommand.pCnfBuf = (void *)malloc(8000UL);   // set up the response buffer
  3413.       ListComp->DmiMgmtCommand.iRequestCount = 1;
  3414.       ListComp->DmiMgmtCommand.iCmdLen = sizeof(DMI_ListComponentReq_t);
  3415.       ListComp->iComponentId = ComponentID;
  3416.       switch(ListType){
  3417.           case 1:
  3418.               ListComp->DmiMgmtCommand.iCommand = DmiListFirstComponentCmd;  // set the command
  3419.               break;
  3420.           case 0:
  3421.               ListComp->DmiMgmtCommand.iCommand = DmiListNextComponentCmd;   // look for next one in list
  3422.               break;
  3423.           case 10:
  3424.               ListComp->DmiMgmtCommand.iCommand = DmiListComponentCmd;
  3425.               break;
  3426.       }
  3427.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)ListComp)) != SLERR_NO_ERROR){   // call the SL and register
  3428.           free(ListComp->DmiMgmtCommand.pCnfBuf);   // free up the confirm buffer first
  3429.           free(ListComp);                           // then free up the command block
  3430.       }
  3431.       return RC;
  3432.   }
  3433.  
  3434.  
  3435. ΓòÉΓòÉΓòÉ 6.2.4. DmiListComponentCnf ΓòÉΓòÉΓòÉ
  3436.  
  3437. On return from the DmiListComponentReq call, the confirm buffer contains an 
  3438. array of one or more DmiListComponentCnf blocks. The value of iCnfCount in the 
  3439. DmiMgmtCommand block is set to the number of DmiListComponentCnf blocks 
  3440. returned from this call. The value of iStatus indicates whether there was more 
  3441. data than would fit in the confirm buffer. If so, the service layer updates 
  3442. iComponentId in the command buffer, so the management application can re-issue 
  3443. the command and resume getting data from the point where it stopped. 
  3444.  
  3445. The format of DmiListComponentCnf is: 
  3446.  
  3447. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3448. Γöé Table 24. DmiListComponentCnf Command Block                  Γöé
  3449. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3450. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3451. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3452. Γöé 0       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  3453. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3454. Γöé 4       Γöé 4       Γöé INT      Γöé iMatchType          Γöé
  3455. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3456. Γöé 8       Γöé 4       Γöé OFFSET     Γöé osComponentName        Γöé
  3457. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3458. Γöé 12       Γöé 4       Γöé INT      Γöé iClassListCount        Γöé
  3459. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3460. Γöé 16       Γöé 4       Γöé OFFSET     Γöé oClassNameList        Γöé
  3461. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3462. Γöé 20       Γöé 4       Γöé INT      Γöé iFileCount          Γöé
  3463. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3464. Γöé 24       Γöé 4       Γöé STRUCT     Γöé DmiFileData[]         Γöé
  3465. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3466.  
  3467.  Variable Name       Variable Description 
  3468.  
  3469.  iComponentId        Handle assigned by the service layer when the component 
  3470.                      was installed. 
  3471.  
  3472.  iMatchType          Zero (0) if this is a definite match; one (1) if the 
  3473.                      service layer could not determine the type. 
  3474.  
  3475.                      A value of 1 indicates that the key values required access 
  3476.                      to data that is controlled by component instrumentation 
  3477.                      (List commands never execute component instrumentation). 
  3478.                      In this case, the management application must query the 
  3479.                      component instrumentation directly. 
  3480.  
  3481.  osComponentName     Offset to a string that names the component. 
  3482.  
  3483.  iClassListCount     Count of the DmiClassNameData blocks pointed to by 
  3484.                      oClassNameList. The list represents the names of each 
  3485.                      class within this component's MIF file. 
  3486.  
  3487.  oClassNameList      Offset to an array of DmiClassNameData blocks, as defined 
  3488.                      in DmiClassNameData Block. 
  3489.  
  3490.  iFileCount          Count of the number of files in the MIF database for the 
  3491.                      component. 
  3492.  
  3493.  DmiFileData[]       List of structures that conform to the format defined in 
  3494.                      DmiFileData Block. 
  3495.  
  3496.  The format for the DmiClassNameData block is: 
  3497.  
  3498.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3499.   Γöé Table 25. DmiClassNameData Block                       Γöé
  3500.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3501.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3502.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3503.   Γöé 0       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  3504.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3505.   Γöé 4       Γöé 4       Γöé OFFSET     Γöé osClassString         Γöé
  3506.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3507.  
  3508.  Variable Name       Variable Description 
  3509.  
  3510.  iGroupId            The ID of the group that corresponds to osClassString. 
  3511.  
  3512.  osClassString       Offset to a string that is the group's class string. 
  3513.  
  3514.  The format for the DmiFileData block is: 
  3515.  
  3516.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3517.   Γöé Table 26. DmiFileData Block                          Γöé
  3518.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3519.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3520.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3521.   Γöé 0       Γöé 4       Γöé INT      Γöé iFileType           Γöé
  3522.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3523.   Γöé 4       Γöé 4       Γöé OFFSET     Γöé oFileData           Γöé
  3524.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3525.  
  3526.  Variable Name       Variable Description 
  3527.  
  3528.  iFileType           The code for the type of data that follows: 
  3529.  
  3530.                           Type code      Meaning 
  3531.                      0                   Reserved, do not use 
  3532.                      1                   Reserved, do not use 
  3533.                      2                   MIF file name 
  3534.                      3                   MIF file pointer 
  3535.                      4                   SNMP mapping file name 
  3536.                      5                   SNMP mapping file pointer 
  3537.                      0x80000000          start of implementation-specific types 
  3538.  
  3539.  oFileData           Offset to an area of memory that contains the mapping 
  3540.                      data. The structure of this data depends on the type in 
  3541.                      iFileType. 
  3542.  
  3543.  Processing DmiListComponentCnf, DmiListGroupCnf, and DmiListAttributeCnf 
  3544.  displays an example of how to handle the DmiListComponentCnf callback command 
  3545.  block. For this example, all callbacks that are returned to the management 
  3546.  application are processed through a single entry point, and the same set of 
  3547.  instructions is also used to process the DmiListGroupCnf and 
  3548.  DmiListAttributeCnf callback command blocks. 
  3549.  
  3550.  
  3551.   Processing DmiListComponentCnf, DmiListGroupCnf, and DmiListAttributeCnf
  3552.  
  3553.   case DmiListComponentCmd:
  3554.   case DmiListGroupCmd:  // used to load up the attribute display dialog
  3555.   case DmiListAttributeCmd:  // used to load up the attribute display dialog
  3556.       if(!miCommand->iStatus){   // we found an attribute...
  3557.           AttrBuf = (DMI_ListAttributeCnf_t *)miCommand->pCnfBuf;
  3558.  
  3559.           // Do whatever your application needs to do here
  3560.  
  3561.       }
  3562.       break;
  3563.  
  3564.  Processing DmiListComponentCnf for DmiListFirstComponentCmd and 
  3565.  DmiListNextComponentCmd displays an example of how to handle the 
  3566.  DmiListComponentCnf callback command block in response to the 
  3567.  DmiListFirstComponentCmd and DmiListNextComponentCmd commands. For this 
  3568.  example, all callbacks that are returned to the management application are 
  3569.  processed through a single entry point. 
  3570.  
  3571.  
  3572.   Processing DmiListComponentCnf for DmiListFirstComponentCmd and DmiListNextComponentCmd
  3573.  
  3574.   case DmiListFirstComponentCmd:
  3575.   case DmiListNextComponentCmd:
  3576.       if(!miCommand->iStatus || (miCommand->iStatus == SLERR_NO_ERROR_MORE_DATA)){
  3577.           CompBuf = (DMI_ListComponentCnf_t *)miCommand->pCnfBuf;     // get the base ptr here
  3578.           for(Count = 0;Count != miCommand->iCnfCount;Count++,CompBuf++){
  3579.               Work = (DMI_STRING *)((char *)miCommand->pCnfBuf + CompBuf->osComponentName); // get component
  3580.                                                                                             // name
  3581.  
  3582.           // Do whatever your application needs to do here
  3583.  
  3584.           }
  3585.           if(miCommand->iStatus == SLERR_NO_ERROR_MORE_DATA)  // we need to do a getnext attr here
  3586.               IssueListComp(LastAttr,0,miCommand->iCmdHandle);  // issues the list component command
  3587.                                                                 // to the service layer
  3588.       }
  3589.       break;
  3590.  
  3591.  
  3592. ΓòÉΓòÉΓòÉ 6.2.5. DmiListGroupReq ΓòÉΓòÉΓòÉ
  3593.  
  3594. The following List Group commands use the DmiListGroupReq command block: 
  3595.  
  3596.      DmiListGroupCmd 
  3597.      DmiListFirstGroupCmd 
  3598.      DmiListNextGroupCmd 
  3599.  
  3600.  All three List Group commands use the DmiListGroupReq block: 
  3601.  
  3602.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3603.   Γöé Table 27. DmiListGroupReq Command Block                    Γöé
  3604.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3605.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3606.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3607.   Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  3608.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3609.   Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  3610.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3611.   Γöé :68      Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  3612.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3613.  
  3614.  Variable Name       Variable Description 
  3615.  
  3616.  DmiMgmtCommand      The command block.  The values of iCommand are: 
  3617.  
  3618.                      DmiListGroupCmd               0x204 
  3619.                      DmiListFirstGroupCmd          0x205 
  3620.                      DmiListNextGroupCmd           0x206 
  3621.  
  3622.  iComponentId        ID of the desired component. 
  3623.  
  3624.  iGroupId            ID of the desired group within the component identified by 
  3625.                      iComponentId. In DmiListFirstGroupCmd, this field is 
  3626.                      ignored.  For the DmiListNextGroupCmd command, the service 
  3627.                      layer starts filling confirm buffer beginning with the 
  3628.                      group ID that follows the value in this field. To start at 
  3629.                      the first group, set this field to zero. On return from 
  3630.                      the command, the service layer updates this field with the 
  3631.                      ID of the last group put in the confirm buffer.  The 
  3632.                      management application can continue issuing 
  3633.                      DmiListNextGroupCmd commands until the returned iStatus 
  3634.                      field indicates that there is no more data. 
  3635.  
  3636.  Issuing DmiListGroupReq displays an example of how to issue the 
  3637.  DmiListGroupReq command to the MI. 
  3638.  
  3639.  
  3640.   Issuing DmiListGroupReq
  3641.  
  3642.   ULONG IssueListGroup(ULONG ComponentID,ULONG GroupID,SHORT ListType)
  3643.   {
  3644.   DMI_ListGroupReq_t *ListGroup;
  3645.   ULONG RC;
  3646.  
  3647.       ListGroup = (DMI_ListGroupReq_t *)malloc(sizeof(DMI_ListGroupReq_t));
  3648.       memset((void *)ListGroup,0,sizeof(DMI_ListGroupReq_t));
  3649.       ListGroup->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  3650.       ListGroup->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;     // set the app handle
  3651.       ListGroup->DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE;   // set the command Handle
  3652.       ListGroup->DmiMgmtCommand.iCnfBufLen = 8000UL;                // set the size of the response buffer
  3653.       ListGroup->DmiMgmtCommand.pCnfBuf = (void *)malloc(8000UL);   // set up the response buffer
  3654.       ListGroup->DmiMgmtCommand.iRequestCount = 1;
  3655.       ListGroup->DmiMgmtCommand.iCmdLen = sizeof(DMI_ListGroupReq_t);
  3656.       ListGroup->iComponentId = ComponentID;   // set to the currently selected component
  3657.       ListGroup->iGroupId = GroupID;
  3658.       switch(ListType){
  3659.           case 1:
  3660.               ListComp->DmiMgmtCommand.iCommand = DmiListFirstGroupCmd;  // set the command
  3661.               break;
  3662.           case 0:
  3663.               ListComp->DmiMgmtCommand.iCommand = DmiListNextGroupCmd;   // look for the next one in the list
  3664.               break;
  3665.           case 10:
  3666.               ListComp->DmiMgmtCommand.iCommand = DmiListGroupCmd;       // list just this one
  3667.               break;
  3668.       }
  3669.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)ListComp)) != SLERR_NO_ERROR){  // call the SL and register
  3670.           free(ListComp->DmiMgmtCommand.pCnfBuf);                      // free up the confirm buffer
  3671.           free(ListComp);                                              // free the command block
  3672.       }
  3673.       return RC;
  3674.   }
  3675.  
  3676.  
  3677. ΓòÉΓòÉΓòÉ 6.2.6. DmiListGroupCnf ΓòÉΓòÉΓòÉ
  3678.  
  3679. On return from the DmiListGroupReq call, the confirm buffer contains an array 
  3680. of one or more DmiListGroupCnf blocks. iCnfCount in the DmiMgmtCommand block is 
  3681. set to the number of DmiListGroupCnf blocks returned from this call. iStatus 
  3682. indicates whether there was too much data than would fit in the confirm buffer. 
  3683. In this case, the service layer updates iGroupId in the command buffer so the 
  3684. management application can re-issue the command to continue getting data from 
  3685. where it left off. 
  3686.  
  3687. The format of the DmiListGroupCnf block is: 
  3688.  
  3689. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3690. Γöé Table 28. DmiListGroupCnf Command Block                    Γöé
  3691. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3692. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3693. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3694. Γöé 0       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  3695. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3696. Γöé 4       Γöé 4       Γöé OFFSET     Γöé osGroupName          Γöé
  3697. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3698. Γöé 8       Γöé 4       Γöé OFFSET     Γöé osClassString         Γöé
  3699. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3700. Γöé 12       Γöé 4       Γöé INT      Γöé iGroupKeyCount        Γöé
  3701. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3702. Γöé 16       Γöé 4       Γöé OFFSET     Γöé oGroupKeyList         Γöé
  3703. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3704.  
  3705.  Variable Name       Variable Description 
  3706.  
  3707.  iGroupId            ID of the group. 
  3708.  
  3709.  osGroupName         Offset to a string that names the group. 
  3710.  
  3711.  osClassString       Offset to a string that names the class. 
  3712.  
  3713.  iGroupKeyCount      The number of elements of type DmiGroupKeyData pointed to 
  3714.                      by oGroupKeyList. 
  3715.  
  3716.  oGroupKeyList       Offset to a list of blocks of type DmiGroupKeyData. Within 
  3717.                      the DmiGroupKeyData blocks, no key values are returned 
  3718.                      (oKeyValue is set to zero) because the purpose of the List 
  3719.                      command is to identify the attributes that comprise the 
  3720.                      key. 
  3721.  
  3722.  Processing DmiListComponentCnf, DmiListGroupCnf, and DmiListAttributeCnf 
  3723.  displays an example of how to handle the DmiListGroupCnf callback command 
  3724.  block. 
  3725.  
  3726.  Processing DmiListGroupCnf for DmiListFirstGroupCmd and DmiListNextGroupCmd 
  3727.  displays an example of how to handle the DmiListGroupCnf callback command 
  3728.  block in response to the DmiListFirstGroupCmd and DmiListNextGroupCmd 
  3729.  commands. For this example, all callbacks that are returned to the management 
  3730.  application are processed through a single entry point. 
  3731.  
  3732.  
  3733.   Processing DmiListGroupCnf for DmiListFirstGroupCmd and DmiListNextGroupCmd
  3734.  
  3735.   case DmiListFirstGroupCmd:
  3736.   case DmiListNextGroupCmd:
  3737.       if(!miCommand->iStatus || (miCommand->iStatus == SLERR_NO_ERROR_MORE_DATA)){   // we found a component:
  3738.                                                                      //  display it and look for the next one
  3739.           GroupBuf = (DMI_ListGroupCnf_t *)miCommand->pCnfBuf;
  3740.           for(Count = 0;Count != miCommand->iCnfCount;Count++,GroupBuf++){
  3741.               Work = (DMI_STRING *)((char *)miCommand->pCnfBuf + Gr        oupBuf->osGroupName); // get to
  3742.                                                                                                  // component
  3743.                                                                                                  // name
  3744.  
  3745.               // Do whatever your application needs to do here
  3746.  
  3747.               if(AddInfo->KeyCount){   // there is a table here
  3748.  
  3749.               // there is a table here, you may want to get that information
  3750.  
  3751.               }
  3752.           }
  3753.           if(miCommand->iStatus == SLERR_NO_ERROR_MORE_DATA)  // we need to do a getnext attr here
  3754.               IssueListGroup(AddInfo->Component,LastAttr,0,miCommand->iCmdHandle);    // load up the groups
  3755.                                                                                       // for this component
  3756.       }
  3757.       break;
  3758.  
  3759.  
  3760. ΓòÉΓòÉΓòÉ 6.2.7. DmiListGroupPragmaReq ΓòÉΓòÉΓòÉ
  3761.  
  3762. This command is used to request the contents of the pragma statement in the 
  3763. requested group's definition, if one exists. On return from this call, the 
  3764. confirm buffer contains the text from the pragma statement associated with the 
  3765. group requested. iCnfCount in the command block is always set to 1. 
  3766.  
  3767. The format for the command block is: 
  3768.  
  3769. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3770. Γöé Table 29. DmiListGroupPragmaReq Command Block                 Γöé
  3771. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3772. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3773. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3774. Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  3775. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3776. Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  3777. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3778. Γöé 68       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  3779. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3780. Γöé 72       Γöé 4       Γöé INT      Γöé iOffset            Γöé
  3781. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3782.  
  3783.  Variable Name       Variable Description 
  3784.  
  3785.  DmiMgmtCommand      The command block.  The value of iCommand is 0x20C. 
  3786.  
  3787.  iComponentId        The ID of the desired component. 
  3788.  
  3789.  iGroupId            The ID of the desired group within the component 
  3790.                      identified by iComponentId. 
  3791.  
  3792.  iOffset             The number of characters into the pragma where the service 
  3793.                      layer should start fetching the pragma string. Specify 
  3794.                      zero to start at the beginning of the pragma. On return 
  3795.                      from the command, the service layer updates this field 
  3796.                      with the index of the last character put into the confirm 
  3797.                      buffer and sets iStatus accordingly. If iStatus indicates 
  3798.                      that there are more characters in the string, the 
  3799.                      management application can re-issue the call to get more 
  3800.                      of the pragma text. 
  3801.  
  3802.  Issuing DmiListGroupPragmaReq displays an example of how to issue the 
  3803.  DmiListGroupPragmaReq command to the MI. 
  3804.  
  3805.  
  3806.   Issuing DmiListGroupPragmaReq
  3807.  
  3808.   ULONG IssueLoadPragma(ULONG Comp,ULONG Group)
  3809.   {
  3810.   DMI_ListGroupPragmaReq_t      *ListPragma;
  3811.   ULONG RC;
  3812.  
  3813.       ListPragma =
  3814.           (DMI_ListGroupPragmaReq_t *)
  3815.   malloc(sizeof(DMI_ListGroupPragmaReq_t));
  3816.       memset((void *)ListPragma,0,sizeof(DMI_ListGroupPragmaReq_t));
  3817.       ListDesc->iGroupId = Group;
  3818.       ListDesc->iComponentId = Comp;
  3819.       ListDesc->iOffset = 0;      // start at the beginning of the
  3820.   Pragma
  3821.       ListDesc->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  3822.       ListDesc->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;
  3823.       ListDesc->DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE;
  3824.       ListDesc->DmiMgmtCommand.iCnfBufLen = 4000UL;// set size of the
  3825.   response
  3826.       ListDesc->DmiMgmtCommand.pCnfBuf = (void *)malloc(4000UL);  //
  3827.   set rsp ptr
  3828.       ListDesc->DmiMgmtCommand.iRequestCount = 1;
  3829.       ListDesc->DmiMgmtCommand.iCmdLen =
  3830.   sizeof(DMI_ListGroupPragmaReq_t);
  3831.       // set the command
  3832.       ListDesc->DmiMgmtCommand.iCommand = DmiListGroupPragmaCmd;
  3833.       // now we can call the service layer
  3834.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)ListPragma)) !=
  3835.   SLERR_NO_ERROR) {
  3836.           free(ListPragma->DmiMgmtCommand.pCnfBuf);
  3837.           free(ListPragma);
  3838.       }
  3839.       return RC;
  3840.   }
  3841.  
  3842.  
  3843. ΓòÉΓòÉΓòÉ 6.2.8. DmiListAttributeReq ΓòÉΓòÉΓòÉ
  3844.  
  3845. The following List Attribute commands use the DmiListAttributeReq command 
  3846. block: 
  3847.  
  3848.      DmiListAttributeCmd 
  3849.      DmiListFirstAttributeCmd 
  3850.      DmiListNextAttributeCmd 
  3851.  
  3852.  The format for the command block is: 
  3853.  
  3854.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3855.   Γöé Table 30. DmiListAttributeReq Command Block                  Γöé
  3856.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3857.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3858.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3859.   Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  3860.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3861.   Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  3862.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3863.   Γöé 68       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  3864.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3865.   Γöé 72       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  3866.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3867.  
  3868.  Variable Name       Variable Description 
  3869.  
  3870.  DmiMgmtCommand      The command block.  The values of iCommand are: 
  3871.  
  3872.                      DmiListAttributeCmd           0x208 
  3873.                      DmiListFirstAttributeCmd      0x209 
  3874.                      DmiListNextAttributeCmd       0x20a 
  3875.  
  3876.  iComponentId        The ID of the desired component. 
  3877.  
  3878.  iGroupId            The ID of the desired group within the component 
  3879.                      identified by iComponentId. 
  3880.  
  3881.  iAttributeId        The ID of the desired attribute within the group. In 
  3882.                      DmiListFirstAttributeCmd, this field is ignored. For the 
  3883.                      DmiListNextAttributeCmd command, the service layer starts 
  3884.                      filling the confirm buffer beginning with the attribute ID 
  3885.                      that follows the value in this field. To start at the 
  3886.                      first attribute, set this field to zero. On return from 
  3887.                      the command, the service layer updates this field with the 
  3888.                      ID of the last attribute put in the confirm buffer. The 
  3889.                      management application can continue issuing 
  3890.                      DmiListNextAttributeCmd commands until the returned 
  3891.                      iStatus field indicates that there is no more data. 
  3892.  
  3893.  Issuing DmiListAttributeReq displays an example of how to issue the 
  3894.  DmiListAttributeReq command to the MI. 
  3895.  
  3896.  
  3897.   Issuing DmiListAttributeReq
  3898.  
  3899.   ULONG IssueListAttributes(ULONG ComponentID,ULONG GroupID, ULONG AttribID,SHORT CommandType)
  3900.   {
  3901.   DMI_ListAttributeReq_t *ListAttr;
  3902.   ULONG RC;
  3903.  
  3904.       ListAttr = (DMI_ListAttributeReq_t *)malloc(sizeof(DMI_ListAttributeReq_t));
  3905.       memset((void *)ListAttr,0,sizeof(DMI_ListAttributeReq_t));
  3906.       ListAttr->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  3907.       ListAttr->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;          // set the app handle
  3908.       ListAttr->DmiMgmtCommand.iCmdHandle =  YOUR_COMMAND_HANDLE;       // set the command counter
  3909.       ListAttr->DmiMgmtCommand.iCnfBufLen = 8000UL;                     // set the size of the response
  3910.       ListAttr->DmiMgmtCommand.pCnfBuf = (void *)malloc(8000UL);        // set up the response buffer
  3911.       ListAttr->DmiMgmtCommand.iRequestCount = 1;
  3912.       ListAttr->DmiMgmtCommand.iCmdLen = sizeof(DMI_ListAttributeReq_t);
  3913.       ListAttr->iComponentId = ComponentID;   // set to the currently selected component
  3914.       ListAttr->iGroupId     = GroupID;       // set to the currenly selected group
  3915.       ListAttr->iAttributeId = AttribID;
  3916.       switch(CommandType){    // this is the type of command to issue
  3917.           case 1:
  3918.               ListAttr->DmiMgmtCommand.iCommand = DmiListFirstAttributeCmd;  // set the command
  3919.               break;
  3920.           case 0:
  3921.               ListAttr->DmiMgmtCommand.iCommand = DmiListNextAttributeCmd;   // look for next one in list
  3922.               break;
  3923.           case 10:
  3924.               ListAttr->DmiMgmtCommand.iCommand = DmiListAttributeCmd;    // get this specific one
  3925.               break;
  3926.       }
  3927.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)ListAttr)) != SLERR_NO_ERROR){   // call the SL and register
  3928.           free(ListAttr->DmiMgmtCommand.pCnfBuf);
  3929.           free(ListAttr);
  3930.       }
  3931.       return RC;
  3932.   }
  3933.  
  3934.  
  3935. ΓòÉΓòÉΓòÉ 6.2.9. DmiListAttributeCnf ΓòÉΓòÉΓòÉ
  3936.  
  3937. On return from the DmiListAttributeReq call, the confirm buffer contains an 
  3938. array of one or more DmiListAttributeCnf blocks. iCnfCount in the 
  3939. DmiMgmtCommand block is set to the number of DmiListAttributeCnf blocks 
  3940. returned from this call. iStatus indicates whether there was too much data than 
  3941. would fit in the confirm buffer. In this case, the service layer updates 
  3942. iAttributeId in the command buffer so the management application can re-issue 
  3943. the command to continue getting data from where it left off. 
  3944.  
  3945. The format of the DmiListAttributeCnf block is: 
  3946.  
  3947. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3948. Γöé Table 31. DmiListAttributeCnf Command Block                  Γöé
  3949. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3950. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  3951. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3952. Γöé 0       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  3953. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3954. Γöé 4       Γöé 4       Γöé OFFSET     Γöé osAttributeName        Γöé
  3955. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3956. Γöé 8       Γöé 4       Γöé INT      Γöé iAttributeAccess       Γöé
  3957. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3958. Γöé 12       Γöé 4       Γöé INT      Γöé iAttributeType        Γöé
  3959. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3960. Γöé 16       Γöé 4       Γöé INT      Γöé iAttributeMaxSize       Γöé
  3961. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3962. Γöé 24       Γöé 4       Γöé INT      Γöé iEnumListCount        Γöé
  3963. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3964. Γöé 28       Γöé 4       Γöé OFFSET     Γöé oEnumList[]          Γöé
  3965. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3966.  
  3967.  Variable Name       Variable Description 
  3968.  
  3969.  iAttributeId        The ID of the attribute. 
  3970.  
  3971.  osAttributeName     Offset to a string that names the attribute. 
  3972.  
  3973.  iAttributeAccess    Access information for this attribute. The three least 
  3974.                      significant bits indicate the read/write status and can 
  3975.                      take the values: 
  3976.  
  3977.                      0              Unknown (usually indicates an error in the 
  3978.                                     MIF database) 
  3979.                      1              Read-only 
  3980.                      2              Read-write 
  3981.                      3              Write-only 
  3982.                      4              Unsupported 
  3983.  
  3984.                      The database storage hint is encoded in the most 
  3985.                      significant bit and can take the following values are: 
  3986.  
  3987.                      0              Specific (read-write information + 0) 
  3988.                      1              Common (read-write information + 
  3989.                                     0x80000000) 
  3990.  
  3991.  iAttributeType      Data type.  Possible values are: 
  3992.  
  3993.                      0              Unknown (usually indicates a MIF database 
  3994.                                     error) 
  3995.                      1              Counter 
  3996.                      2              Counter64 
  3997.                      3              Gauge 
  3998.                      5              Integer 
  3999.                      6              Integer64 
  4000.                      7              Octet string 
  4001.                      8              Displaystring, string 
  4002.                      11             Date 
  4003.  
  4004.  iAttributeMaxSize   Maximum size of the attribute. If the size is unknown, 
  4005.                      this variable returns a value of -1. For attributes, the 
  4006.                      size is in the units specified by iAttributeType. 
  4007.  
  4008.  iEnumListCount      The number of entries in the enumerations list. 
  4009.  
  4010.  oEnumList[]         Offset to a list of DmiEnumData blocks, as defined in 
  4011.                      DmiEnumData Command Block. 
  4012.  
  4013.  The format of the DmiEnumData block is: 
  4014.  
  4015.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4016.   Γöé Table 32. DmiEnumData Command Block                      Γöé
  4017.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4018.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4019.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4020.   Γöé 0       Γöé 4       Γöé INT      Γöé iEnumValue          Γöé
  4021.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4022.   Γöé 4       Γöé 4       Γöé OFFSET     Γöé osEnumName          Γöé
  4023.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4024.  
  4025.  Variable Name       Variable Description 
  4026.  
  4027.  iEnumValue          The integer value of the enumeration. 
  4028.  
  4029.  osEnumName          Offset to a literal string corresponding to the 
  4030.                      enumeration value. 
  4031.  
  4032.  Processing DmiListComponentCnf, DmiListGroupCnf, and DmiListAttributeCnf 
  4033.  displays an example of how to handle the DmiListAttributeCnf callback command 
  4034.  block. 
  4035.  
  4036.  Processing DmiListAttributeCnf for DmiListFirstAttributeCmd and 
  4037.  DmiListNextAttributeCmd displays an example of how to handle the 
  4038.  DmiListAttributeCnf callback command block in response to the 
  4039.  DmiListFirstAttributeCmd and DmiListNextAttributeCmd commands. For this 
  4040.  example, all callbacks that are returned to the management application are 
  4041.  processed through a single entry point. 
  4042.  
  4043.  
  4044.   Processing DmiListAttributeCnf for DmiListFirstAttributeCmd and DmiListNextAttributeCmd
  4045.  
  4046.   case DmiListFirstAttributeCmd:
  4047.   case DmiListNextAttributeCmd:
  4048.       if(!miCommand->iStatus || (miCommand->iStatus == SLERR_NO_ERR    OR_MORE_DATA)){  // found attribute
  4049.           AttrBuf = (DMI_ListAttributeCnf_t *)miCommand->pCnfBuf;
  4050.           for(Count = 0;Count != miCommand->iCnfCount;Count++,AttrBuf++){
  4051.               Work = (DMI_STRING *)((char *)miCommand->pCnfBuf + AttrBuf->osAttributeName);   // get to the
  4052.                                                                                           // component name
  4053.  
  4054.           // Do whatever your application needs to do here
  4055.  
  4056.           }
  4057.           if(miCommand->iStatus == SLERR_NO_ERROR_MORE_DATA)  // we need to do a getnext attr here
  4058.               IssueListAttributes(((DMI_ListAttributeReq_t *)miCommand)->iComponentId,
  4059.                   ((DMI_ListAttributeReq_t *)miCommand)->iGroupId,LastAttr,0,(ULONG)miCommand->iCmdHandle);
  4060.                                                                                              // load up the
  4061.                                                                                              // attributes
  4062.       }
  4063.       break;
  4064.  
  4065.  
  4066. ΓòÉΓòÉΓòÉ 6.2.10. DmiListDescReq ΓòÉΓòÉΓòÉ
  4067.  
  4068. The following List Description commands use the DmiListDescReq command block: 
  4069.  
  4070.      DmiListComponentDescCmd 
  4071.      DmiListGroupDescCmd 
  4072.      DmiListAttributeDescCmd 
  4073.  
  4074.  The format for the command block is: 
  4075.  
  4076.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4077.   Γöé Table 33. DmiListDescReq Command Block                    Γöé
  4078.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4079.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4080.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4081.   Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  4082.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4083.   Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  4084.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4085.   Γöé 68       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  4086.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4087.   Γöé 72       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  4088.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4089.   Γöé 76       Γöé 4       Γöé INT      Γöé iOffset            Γöé
  4090.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4091.  
  4092.  Variable Name       Variable Description 
  4093.  
  4094.  DmiMgmtCommand      The command block.  The values of iCommand are: 
  4095.  
  4096.                      DmiListComponentDescCmd          0x203 
  4097.                      DmiListGroupDescCmd              0x207 
  4098.                      DmiListAttributeDescCmd          0x20b 
  4099.  
  4100.  iComponentId        The ID of the desired component. 
  4101.  
  4102.  iGroupId            The ID of the desired group within the component 
  4103.                      identified by iComponentId. This field is ignored when 
  4104.                      listing component descriptions. 
  4105.  
  4106.  iAttributeId        The ID of the desired attribute within the group. This 
  4107.                      field is only required for getting attribute descriptions. 
  4108.                      Otherwise, it is ignored. 
  4109.  
  4110.  iOffset             Number of characters into the description where the 
  4111.                      service layer should start getting the description string. 
  4112.                      Use zero to start at the beginning of the description. 
  4113.  
  4114.                      On return, the service layer updates this field with the 
  4115.                      index of the last character written into the confirm 
  4116.                      buffer and sets iStatus accordingly. If iStatus indicates 
  4117.                      that there are more characters to be received, the 
  4118.                      application can re-issue the call to get more of the 
  4119.                      description text. 
  4120.  
  4121.  On return from this call, the confirm buffer contains the text from the 
  4122.  description associated with the entity requested. In the command block, 
  4123.  iCnfCount is always set to 1. 
  4124.  
  4125.  Issuing DmiListDescReq displays an example of how to issue the DmiListDescReq 
  4126.  command to the MI. 
  4127.  
  4128.  
  4129.   Issuing DmiListDescReq
  4130.  
  4131.   ULONG IssueLoadDescription(ULONG Comp,ULONG Group,ULONG Attr,ULONG Command)
  4132.   {
  4133.   DMI_ListDescReq_t      *ListDesc;
  4134.   ULONG RC;
  4135.  
  4136.       ListDesc = (DMI_ListDescReq_t *)malloc(sizeof(DMI_ListDescReq_t));
  4137.       memset((void *)ListDesc,0,sizeof(DMI_ListDescReq_t));
  4138.       ListDesc->iAttributeId = Attr;
  4139.       ListDesc->iGroupId = Group;
  4140.       ListDesc->iComponentId = Comp;
  4141.       ListDesc->iOffset = 0;      // start at the beginning of the description
  4142.       ListDesc->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  4143.       ListDesc->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;          // set the app handle
  4144.       ListDesc->DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE;        // set the command counter
  4145.       ListDesc->DmiMgmtCommand.iCnfBufLen = 4000UL;                     // set the size of the response
  4146.       ListDesc->DmiMgmtCommand.pCnfBuf = (void *)malloc(4000UL);        // set up the response buffer
  4147.       ListDesc->DmiMgmtCommand.iRequestCount = 1;
  4148.       ListDesc->DmiMgmtCommand.iCmdLen = sizeof(DMI_ListDescReq_t);
  4149.       ListDesc->DmiMgmtCommand.iCommand = Command;  // set the command:
  4150.                                                     //      DmiListComponentDescCmd
  4151.                                                     //      DmiListGroupDescCmd
  4152.                                                     //      DmiListAttributeDescCmd
  4153.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)ListDesc)) != SLERR_NO_ERROR) {   // ask for the description
  4154.           free(ListDesc->DmiMgmtCommand.pCnfBuf);
  4155.           free(ListDesc);
  4156.       }
  4157.       return RC;
  4158.   }
  4159.  
  4160.  Processing the Callback from DmiListDescReq displays an example of how to 
  4161.  process the callback from the the DmiListDescReq command. 
  4162.  
  4163.  
  4164.   Processing the Callback from DmiListDescReq
  4165.  
  4166.   case DmiListComponentDescCmd:   // the list component command
  4167.   case DmiListAttributeDescCmd:   // this is the description command for the attribute
  4168.   case DmiListGroupDescCmd:       // list the group description
  4169.       if(!miCommand->iStatus){   // we've gotten a good return code back
  4170.           Work = (DMI_STRING *)miCommand->pCnfBuf;
  4171.           Working = malloc(Work->length + 1);
  4172.           memcpy(Working,Work->body,Work->length);
  4173.  
  4174.           // Do whatever your application needs to do here
  4175.  
  4176.           free(Working);
  4177.       }
  4178.       break;
  4179.  
  4180.  
  4181. ΓòÉΓòÉΓòÉ 6.2.11. DmiGetAttributeReq ΓòÉΓòÉΓòÉ
  4182.  
  4183. The DmiGetAttributeCmd command requests the current values of attributes within 
  4184. groups by using the DmiGetAttributeReq block. 
  4185.  
  4186. The format for the command block is: 
  4187.  
  4188. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4189. Γöé Table 34. DmiGetAttributeReq Command Block                  Γöé
  4190. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4191. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4192. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4193. Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  4194. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4195. Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  4196. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4197. Γöé 68       Γöé 16       Γöé STRUCT     Γöé DmiGetAttributeData[]     Γöé
  4198. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4199.  
  4200.  Variable Name           Variable Description 
  4201.  
  4202.  DmiMgmtCommand          The command block.  The value of iCommand is 0x300. 
  4203.  
  4204.  iComponentId            The ID of the desired component. 
  4205.  
  4206.  DmiGetAttributeData[]   One or more DmiGetAttributeData blocks. The calling 
  4207.                          application must indicate the number of appended 
  4208.                          blocks in the iRequestCount element of the 
  4209.                          DmiMgmtCommand block. The DmiGetAttributeData block is 
  4210.                          defined in DmiGetAttributeData Block. 
  4211.  
  4212.  The format for the DmiGetAttributeData block is as follows: 
  4213.  
  4214.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4215.   Γöé Table 35. DmiGetAttributeData Block                      Γöé
  4216.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4217.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4218.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4219.   Γöé 0       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  4220.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4221.   Γöé 4       Γöé 4       Γöé INT      Γöé iGroupKeyCount        Γöé
  4222.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4223.   Γöé 8       Γöé 4       Γöé OFFSET     Γöé oGroupKeyList         Γöé
  4224.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4225.   Γöé 12       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  4226.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4227.  
  4228.  Variable Name       Variable Description 
  4229.  
  4230.  iGroupId            The ID of the desired group. 
  4231.  
  4232.  iGroupKeyCount      The number of DmiGroupKeyData blocks pointed to by 
  4233.                      oGroupKeyList. 
  4234.  
  4235.  oGroupKeyList       Offset to a list of DmiGroupKeyData blocks. iGroupKeyCount 
  4236.                      is the number of blocks in the list. 
  4237.  
  4238.  iAttributeId        The ID of the desired attribute. 
  4239.  
  4240.  Issuing DmiGetAttributeReq displays an example of how to issue the 
  4241.  DmiGetAttributeReq command to the MI. 
  4242.  
  4243.  
  4244.   Issuing DmiGetAttributeReq
  4245.  
  4246.   ULONG IssueLoadAttribute(ULONG CompID, ULONG GroupID, ULONG AttrID)  // queries the service layer for
  4247.                                                                        // the attribute value
  4248.   {
  4249.   DMI_GetAttributeReq_t  *ListComp;
  4250.   DMI_GroupKeyData_t *NewKey;
  4251.   ULONG RC;
  4252.  
  4253.       ListComp = (DMI_GetAttributeReq_t *)malloc(4000L);    // allocate a big block, in case we have keys
  4254.       memset((void *)ListComp,0,sizeof(DMI_GetAttributeReq_t));
  4255.       ListComp->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  4256.       ListComp->DmiMgmtCommand.iCommand = DmiGetAttributeCmd;  // set the command
  4257.       ListComp->DmiMgmtCommand.iCmdLen = 4000L;
  4258.       ListComp->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;            // set the app handle
  4259.       ListComp->DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE;          // set the command counter
  4260.       ListComp->DmiMgmtCommand.iCnfBufLen = 4000UL;               // set the size of the response
  4261.       ListComp->DmiMgmtCommand.pCnfBuf = (void *)malloc(4000UL);   // set up the response buffer
  4262.       memset(ListComp->DmiMgmtCommand.pCnfBuf,0,4000UL);     // clean out this thing
  4263.       ListComp->DmiMgmtCommand.iRequestCount = 1;
  4264.       ListComp->iComponentId = CompID;   // set to the currently selected component
  4265.       ListComp->DmiGetAttributeList╤ì0ΓêÖ.iGroupId = GroupID;
  4266.       ListComp->DmiGetAttributeList╤ì0ΓêÖ.iAttributeId = AttrID;
  4267.       if(KEY_COUNT){  // there is a key list
  4268.           ListComp->DmiGetAttributeList╤ì0ΓêÖ.iGroupKeyCount = KEY_COUNT;
  4269.           NewKey = (DMI_GroupKeyData_t *)((BYTE *)ListComp + sizeof(DMI_GetAttributeReq_t));  // this is the
  4270.                                                                                      // start of the keylist
  4271.           ListComp->DmiGetAttributeList╤ì0ΓêÖ.oGroupKeyList =
  4272.                     (DMI_OFFSET)((DMI_OFFSET)NewKey - (DMI_OFFSET)ListComp);
  4273.  
  4274.           // Encode the key list here
  4275.  
  4276.       }
  4277.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)ListComp)) != SLERR_NO_ERROR){   // call the SL and register
  4278.           free(ListComp->DmiMgmtCommand.pCnfBuf);   // free up the response buffer
  4279.           free(ListComp);                           // free the command block
  4280.       }
  4281.       return RC;
  4282.   }
  4283.  
  4284.  
  4285. ΓòÉΓòÉΓòÉ 6.2.12. DmiGetAttributeCnf ΓòÉΓòÉΓòÉ
  4286.  
  4287. On return from the DmiGetAttributeReq call, the confirm buffer contains an 
  4288. array of one or more DmiGetAttributeCnf blocks. iCnfCount in the command block 
  4289. lists the number of DmiGetAttributeCnf blocks. 
  4290.  
  4291. The format for the command block is: 
  4292.  
  4293. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4294. Γöé Table 36. DmiGetAttributeCnf Command Block                  Γöé
  4295. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4296. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4297. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4298. Γöé 0       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  4299. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4300. Γöé 4       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  4301. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4302. Γöé 8       Γöé 4       Γöé INT      Γöé iAttributeType        Γöé
  4303. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4304. Γöé 12       Γöé 4       Γöé OFFSET     Γöé oAttributeValue        Γöé
  4305. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4306.  
  4307.  Variable Name       Variable Description 
  4308.  
  4309.  iGroupId            The ID of the group to which the attribute belongs. 
  4310.  
  4311.  iAttributeId        The ID of the attribute. 
  4312.  
  4313.  iAttributeType      Data type.  Possible values are: 
  4314.  
  4315.                      0              unknown (usually indicates a MIF database 
  4316.                                     error) 
  4317.                      1              counter 
  4318.                      2              counter64 
  4319.                      3              gauge 
  4320.                      5              integer 
  4321.                      6              integer64 
  4322.                      7              octet string 
  4323.                      8              displaystring, string 
  4324.                      11             date 
  4325.  
  4326.  oAttributeValue     Offset to the value returned from this get operation. If 
  4327.                      no value is provided (in the case of write-only 
  4328.                      attributes, for example), the offset is zero. 
  4329.  
  4330.  Processing DmiGetAttributeCnf displays an example of how to handle the 
  4331.  DmiGetAttributeCnf callback command block. For this example, all callbacks 
  4332.  that are returned to the management application are processed through a single 
  4333.  entry point. 
  4334.  
  4335.  
  4336.   Processing DmiGetAttributeCnf
  4337.  
  4338.   case DmiGetAttributeCmd:     // get the attribute value from the SL...
  4339.       if(!miCommand->iStatus){   // good status
  4340.           AttrVal = (DMI_GetAttributeCnf_t *)miCommand->pCnfBuf;
  4341.           Work = (DMI_STRING *)((char *)AttrVal + AttrVal->oAttributeValue);   // get to the component name
  4342.  
  4343.           // Do whatever your application needs to do here
  4344.  
  4345.       }
  4346.       break;
  4347.  
  4348.  
  4349. ΓòÉΓòÉΓòÉ 6.2.13. DmiSetAttributeReq ΓòÉΓòÉΓòÉ
  4350.  
  4351. The following Set commands use the DmiSetAttributeReq command block: 
  4352.  
  4353.      DmiSetAttributeCmd 
  4354.      DmiSetReserveAttributeCmd 
  4355.      DmiSetReleaseAttributeCmd 
  4356.  
  4357.  The format for the command block is: 
  4358.  
  4359.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4360.   Γöé Table 37. DmiSetAttributeReq Command Block                  Γöé
  4361.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4362.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4363.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4364.   Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  4365.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4366.   Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  4367.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4368.   Γöé 68       Γöé 20       Γöé STRUCT     Γöé DmiSetAttributeData[]     Γöé
  4369.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4370.  
  4371.  Variable Name           Variable Description 
  4372.  
  4373.  DmiMgmtCommand          The command block.  The values of iCommand are: 
  4374.  
  4375.                          DmiSetAttributeCmd               0x301 
  4376.                          DmiSetReserveAttributeCmd        0x302 
  4377.                          DmiSetReleaseAttributeCmd        0x303 
  4378.  
  4379.  iComponentId            The ID of the component to be operated on. 
  4380.  
  4381.  DmiSetAttributeData[]   One or more DmiSetAttributeData blocks. The calling 
  4382.                          application must indicate the number of appended 
  4383.                          blocks in the iRequestCount element of the 
  4384.                          DmiMgmtCommand block. The DmiSetAttributeData block is 
  4385.                          defined in DmiSetAttributeData Block. 
  4386.  
  4387.  The format for the DmiSetAttributeData block is as follows: 
  4388.  
  4389.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4390.   Γöé Table 38. DmiSetAttributeData Block                      Γöé
  4391.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4392.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4393.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4394.   Γöé 0       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  4395.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4396.   Γöé 4       Γöé 4       Γöé INT      Γöé iGroupKeyCount        Γöé
  4397.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4398.   Γöé 8       Γöé 4       Γöé OFFSET     Γöé oGroupKeyList         Γöé
  4399.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4400.   Γöé 12       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  4401.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4402.   Γöé 16       Γöé 4       Γöé OFFSET     Γöé oAttributeValue        Γöé
  4403.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4404.  
  4405.  Variable Name       Variable Description 
  4406.  
  4407.  iGroupId            The ID of the desired group. 
  4408.  
  4409.  iGroupKeyCount      The number of DmiGroupKeyData blocks pointed to by 
  4410.                      oGroupKeyList. 
  4411.  
  4412.  oGroupKeyList       Offset to a list of DmiGroupKeyData blocks. iGroupKeyCount 
  4413.                      is the number of blocks in the list. 
  4414.  
  4415.  iAttributeId        The ID of the desired attribute. 
  4416.  
  4417.  oAttributeValue     Offset to the value to be set. 
  4418.  
  4419.  There is no data returned from this call in the confirm buffer. The value of 
  4420.  iStatus indicates either success or failure. In the case of failure, the value 
  4421.  of (iCnfCount + 1) corresponds to the number of the command block that caused 
  4422.  the error. 
  4423.  
  4424.  Issuing DmiSetAttributeReq displays an example of how to issue the 
  4425.  DmiSetAttributeReq command to the MI. 
  4426.  
  4427.  
  4428.   Issuing DmiSetAttributeReq
  4429.  
  4430.   ULONG IssueSetAttribute(ULONG CompID,ULONG GroupID, ULONG AttrID,char *Value,USHORT Len)  // issues a set
  4431.                                                                                             // to the SL
  4432.   {
  4433.   DMI_SetAttributeReq_t  *ListComp;
  4434.   DMI_GroupKeyData_t *NewKey;
  4435.   ULONG RC;
  4436.  
  4437.       ListComp = (DMI_SetAttributeReq_t *)malloc(4000L);    // allocate a big block, in case we have keys
  4438.       memset((void *)ListComp,0,sizeof(DMI_SetAttributeReq_t));
  4439.       ListComp->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  4440.       ListComp->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;          // set the app handle
  4441.       ListComp->DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE;        // set the command counter
  4442.       ListComp->DmiMgmtCommand.iCnfBufLen = 4000UL;                     // set the size of the response
  4443.       ListComp->DmiMgmtCommand.pCnfBuf = (void *)malloc(4000UL);        // set up the response buffer
  4444.       ListComp->DmiMgmtCommand.iRequestCount = 1;
  4445.       ListComp->DmiMgmtCommand.iCmdLen = 4000L;                            e number...
  4446.       ListComp->iComponentId = CompID;   // set to the currently selected component
  4447.       ListComp->DmiMgmtCommand.iCommand = DmiSetAttributeCmd;  // set the command
  4448.       ListComp->DmiSetAttributeList╤ì0ΓêÖ.iGroupId = GroupID;
  4449.       ListComp->DmiSetAttributeList╤ì0ΓêÖ.iAttributeId = AttrID;
  4450.       ListComp->DmiSetAttributeList╤ì0ΓêÖ.oAttributeValue = sizeof(DMI_SetAttributeReq_t);
  4451.       memcpy((char *)((BYTE *)ListComp + sizeof(DMI_SetAttributeReq_t)),Value,Len);
  4452.       if(KEY_COUNT){  // there is a key list
  4453.           ListComp->DmiSetAttributeList╤ì0ΓêÖ.iGroupKeyCount =  KEY_COUNT;
  4454.           NewKey = (DMI_GroupKeyData_t *)((BYTE *)ListComp + sizeof(DMI_SetAttributeReq_t) + Len); // this is
  4455.                                                                                   // the start of the keylist
  4456.           ListComp->DmiSetAttributeList╤ì0ΓêÖ.oGroupKeyList = (DMI_OFFSET)((BYTE *)NewKey - (BYTE *)ListComp);
  4457.  
  4458.           // Encode the key list here...
  4459.  
  4460.       }
  4461.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)ListComp)) != SLERR_NO_ERROR) {  // call SL and register
  4462.           free(ListComp->DmiMgmtCommand.pCnfBuf);
  4463.           free(ListComp);
  4464.       }
  4465.       return RC;
  4466.   }
  4467.  
  4468.  
  4469. ΓòÉΓòÉΓòÉ 6.2.14. DmiGetRowReq ΓòÉΓòÉΓòÉ
  4470.  
  4471. The following Get commands use the DmiSetAttributeReq command block: 
  4472.  
  4473.      DmiGetRowCmd 
  4474.      DmiGetFirstRowCmd 
  4475.      DmiGetNextRowCmd 
  4476.  
  4477.  The format for the command block is: 
  4478.  
  4479.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4480.   Γöé Table 39. DmiGetRowReq Command Block                     Γöé
  4481.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4482.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4483.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4484.   Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  4485.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4486.   Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  4487.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4488.   Γöé 68       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  4489.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4490.   Γöé 72       Γöé 4       Γöé INT      Γöé iGroupKeyCount        Γöé
  4491.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4492.   Γöé 76       Γöé 4       Γöé OFFSET     Γöé oGroupKeyList         Γöé
  4493.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4494.   Γöé 80       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  4495.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4496.  
  4497.  Variable Name       Variable Description 
  4498.  
  4499.  DmiMgmtCommand      The command block.  The values of iCommand are: 
  4500.  
  4501.                      DmiGetRowCmd                  0x304 
  4502.                      DmiGetFirstRowCmd             0x305 
  4503.                      DmiGetNextRowCmd              0x306 
  4504.  
  4505.  iComponentId        The ID of the desired component. 
  4506.  
  4507.  iGroupId            The ID of the desired group. 
  4508.  
  4509.  iGroupKeyCount      The number of DmiGroupKeyData blocks pointed to by 
  4510.                      oGroupKeyList. 
  4511.  
  4512.  oGroupKeyList       Offset to a list of DmiGroupKeyData blocks. iGroupKeyCount 
  4513.                      is the number of blocks in the list. 
  4514.  
  4515.  iAttributeId        The attribute ID just before the attribute ID where the 
  4516.                      Get Row command should start. Use zero to start at the 
  4517.                      first attribute in the group. This is generally used when 
  4518.                      the confirm buffer is too small and the service layer has 
  4519.                      more information than will fit in the buffer. Upon return, 
  4520.                      the service layer updates this field with the last 
  4521.                      attribute returned and sets iStatus to 1 to indicate that 
  4522.                      there is more information than the confirm buffer could 
  4523.                      hold. 
  4524.  
  4525.  Issuing DmiGetRowReq displays an example of how to issue the DmiGetRowReq 
  4526.  command to the MI. 
  4527.  
  4528.  
  4529.   Issuing DmiGetRowReq
  4530.  
  4531.   ULONG IssueGetRow(ULONG CompID,ULONG GroupID,DMI_GetRowCnf_t *Row)   // get the list group started
  4532.   {
  4533.   DMI_GetRowReq_t *GetRow;    // command block to use
  4534.   DMI_GroupKeyData_t *NewKey, *ThisKey;
  4535.   USHORT x;  // just a counter
  4536.   char *Working;
  4537.   DMI_STRING *Work;
  4538.   DMI_UNSIGNED Size;
  4539.   ULONG RC;
  4540.  
  4541.       GetRow = (DMI_GetRowReq_t *)malloc(4000);
  4542.       memset((void *)GetRow,0,sizeof(DMI_GetRowReq_t));
  4543.       GetRow->iGroupId = GroupID;
  4544.       GetRow->iComponentId = CompID;
  4545.       GetRow->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  4546.       GetRow->DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;          // set the app handle
  4547.       GetRow->DmiMgmtCommand.iCmdHandle =  YOUR_COMMAND_HANDLE;       // point to the addinfo block
  4548.       GetRow->DmiMgmtCommand.iCnfBufLen = 8000UL;                     // set the size of the response
  4549.       GetRow->DmiMgmtCommand.pCnfBuf = (void *)malloc(8000UL);        // set up the response buffer
  4550.       GetRow->DmiMgmtCommand.iRequestCount = 1;
  4551.       GetRow->DmiMgmtCommand.iCmdLen = 4000L;
  4552.       if(Row == (DMI_GetRowCnf_t *)NULL) GetRow->DmiMgmtCommand.iCommand = DmiGetFirstRowCmd;  // set the
  4553.                                                                                                // command
  4554.       else{
  4555.           GetRow->DmiMgmtCommand.iCommand = DmiGetNextRowCmd;   // get the next row in the table
  4556.           ThisKey = (DMI_GroupKeyData_t *)((char *)Row + Row->oGroupKeyList);
  4557.           NewKey = (DMI_GroupKeyData_t *)((char *)GetRow + sizeof(DMI_GetRowReq_t));
  4558.           GetRow->oGroupKeyList = sizeof(DMI_GetRowReq_t);
  4559.           GetRow->iGroupKeyCount = Row->iGroupKeyCount;
  4560.           Working = (char *)((char *)NewKey + (Row->iGroupKeyCount * sizeof(DMI_GroupKeyData_t)));
  4561.           for(x = 0;x != Row->iGroupKeyCount;x++,ThisKey++,NewKey++){
  4562.               memcpy(NewKey,ThisKey,sizeof(DMI_GroupKeyData_t));   // move the key block over
  4563.               switch(ThisKey->iAttributeType){   // switch on the data type
  4564.                   case MIF_COUNTER:
  4565.                   case MIF_COUNTER64:
  4566.                   case MIF_GAUGE:
  4567.                   case MIF_INT:
  4568.                   case MIF_INTEGER64:
  4569.                       Size = sizeof(DMI_UNSIGNED);
  4570.                       goto FinishGroup;
  4571.                   case MIF_DATE:
  4572.                       Size = sizeof(DMI_TimeStamp_t);
  4573.                       goto FinishGroup;
  4574.                   case MIF_DISPLAYSTRING:
  4575.                   case MIF_OCTETSTRING:
  4576.                       Work = (DMI_STRING *)((char *)Row + ThisKey->oKeyValue);
  4577.                       Size = (Work->length + sizeof(DMI_UNSIGNED));
  4578.                       FinishGroup:
  4579.                       memcpy(Working,(char *)((char *)Row + ThisKey->oKeyValue),Size);
  4580.                       NewKey->oKeyValue = (DMI_OFFSET)((char *)Working - (char *)GetRow);
  4581.                       Working += Size;
  4582.                       break;
  4583.                   case MIF_UNKNOWN_DATA_TYPE:    // this is the error case
  4584.                   default:
  4585.                       break;
  4586.               }
  4587.           }
  4588.       }
  4589.       if((RC = DmiInvoke((DMI_MgmtCommand_t *)GetRow)) != SLERR_NO_ERROR) {   // ask for the description
  4590.           free(GetRow->DmiMgmtCommand.pCnfBuf);
  4591.           free(GetRow);
  4592.           free((char *)Handle);   // free up the add information (AddInfo) block
  4593.       }
  4594.       return RC;
  4595.   }
  4596.  
  4597.  
  4598. ΓòÉΓòÉΓòÉ 6.2.15. DmiGetRowCnf ΓòÉΓòÉΓòÉ
  4599.  
  4600. On return from the DmiGetRowReq call, the confirm buffer contains a 
  4601. DmiGetRowCnf block, followed by one or more DmiGetAttributeCnf blocks. 
  4602.  
  4603. The format for the command block is: 
  4604.  
  4605. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4606. Γöé Table 40. DmiGetRowCnf Command Block                     Γöé
  4607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4608. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4609. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4610. Γöé 0       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  4611. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4612. Γöé 4       Γöé 4       Γöé INT      Γöé iGroupKeyCount        Γöé
  4613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4614. Γöé 8       Γöé 4       Γöé OFFSET     Γöé oGroupKeyList         Γöé
  4615. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4616. Γöé 12       Γöé 4       Γöé INT      Γöé iAttributeCount        Γöé
  4617. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4618. Γöé 16       Γöé 12       Γöé STRUCT     Γöé DmiGetAttributeCnf[]     Γöé
  4619. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4620.  
  4621.  Variable Name          Variable Description 
  4622.  
  4623.  iGroupId               The ID of the group. 
  4624.  
  4625.  iGroupKeyCount         The number of DmiGroupKeyData blocks pointed to by 
  4626.                         oGroupKeyList. 
  4627.  
  4628.  oGroupKeyList          Offset to a list of DmiGroupKeyData blocks. 
  4629.                         iGroupKeyCount is the number of blocks in the list. 
  4630.  
  4631.  iAttributeCount        The number of DmiGetAttributeCnf blocks immediately 
  4632.                         following this block. 
  4633.  
  4634.  DmiGetAttributeCnf[]   The list of DmiGetAttributeCnf blocks. 
  4635.  
  4636.  In the case where the size of a group exceeds the size of the calling 
  4637.  application's confirm buffer, the calling application receives a status of 1, 
  4638.  indicating that the command was successful but that there is more of the group 
  4639.  to be retrieved. In this case, the command can be re-issued to retrieve the 
  4640.  rest of the group. To do this, the calling application sets the iAttributeId 
  4641.  field to the value of the last attribute returned in the previous Get Row 
  4642.  command. The component instrumentation then returns the attribute values that 
  4643.  follow this attribute. 
  4644.  
  4645.  Processing DmiGetRowCnf for DmiGetFirstRowCmd and DmiGetNextRowCmd displays an 
  4646.  example of how to handle the DmiGetRowCnf callback command block in response 
  4647.  to the DmiGetFirstRowCmd and DmiGetNextRowCmd commands. For this example, all 
  4648.  callbacks that are returned to the management application are processed 
  4649.  through a single entry point. 
  4650.  
  4651.  
  4652.   Processing DmiGetRowCnf for DmiGetFirstRowCmd and DmiGetNextRowCmd
  4653.  
  4654.   case DmiGetFirstRowCmd:    // response to the query row information
  4655.   case DmiGetNextRowCmd:
  4656.       if(miCommand->iStatus == SLERR_NO_ERROR){   // we've got a good return here
  4657.           RowConfirm = (DMI_GetRowCnf_t *)miCommand->pCnfBuf;
  4658.  
  4659.           // Do whatever your application needs to do here
  4660.  
  4661.       }
  4662.       break;
  4663.  
  4664.  
  4665. ΓòÉΓòÉΓòÉ 6.3. Component Interface (CI) Command Blocks ΓòÉΓòÉΓòÉ
  4666.  
  4667. The following command blocks are used when issuing commands to the Component 
  4668. Interface (CI). 
  4669.  
  4670.      DmiCiInstallData 
  4671.      DmiRegisterCiInd 
  4672.      DmiRegisterCnf 
  4673.      DmiUnregisterCiInd 
  4674.      DmiEventData 
  4675.  
  4676.  
  4677. ΓòÉΓòÉΓòÉ 6.3.1. DmiCiInstallData ΓòÉΓòÉΓòÉ
  4678.  
  4679. To install a new MIF file, the component instrumentation fills out a 
  4680. DmiCiInstallData block and sends it to the service layer with the DmiInvoke() 
  4681. function call. 
  4682.  
  4683. The format for the command block is: 
  4684.  
  4685. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4686. Γöé Table 41. DmiCiInstallData Command Block                   Γöé
  4687. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4688. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4689. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4690. Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  4691. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4692. Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  4693. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4694. Γöé 68       Γöé 4       Γöé INT      Γöé iFileCount          Γöé
  4695. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4696. Γöé 72       Γöé 8       Γöé STRUCT     Γöé DmiFileData[ ]        Γöé
  4697. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4698.  
  4699.  Variable Name       Variable Description 
  4700.  
  4701.  DmiMgmtCommand      The command block.  The value of iCommand is 0x402. 
  4702.                      iMgmtHandle should always be set to zero. 
  4703.  
  4704.  iComponentId        The service-layer defined ID of this component. On initial 
  4705.                      install, this is set to zero. On subsequent installs, this 
  4706.                      field is set to the component's ID. In this case, the 
  4707.                      field is used to provide additional MIF data for this 
  4708.                      component, such as MIF files for additional languages. 
  4709.  
  4710.  iFileCount          Number of DmiFileData structures that follow. 
  4711.  
  4712.  DmiFileData[ ]      A list of structures, as defined in DmiFileData Command 
  4713.                      Block. 
  4714.  
  4715.  The format of the DmiFileData block is: 
  4716.  
  4717.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4718.   Γöé Table 42. DmiFileData Command Block                      Γöé
  4719.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4720.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4721.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4722.   Γöé 0       Γöé 4       Γöé INT      Γöé iFileType           Γöé
  4723.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4724.   Γöé 4       Γöé 4       Γöé OFFSET     Γöé osFileData          Γöé
  4725.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4726.  
  4727.  Variable Name       Variable Description 
  4728.  
  4729.  iFileType           Type for this component's MIF files. The type code is a 
  4730.                      32-bit values. If the value is even, the contents of 
  4731.                      osFileData indicates a file name. If the value is odd, the 
  4732.                      contents of osFileData indicates the MIF data in memory. 
  4733.  
  4734.                      The following type codes are defined: 
  4735.  
  4736.                           Type code      Meaning 
  4737.                      0                   Reserved, do not use 
  4738.                      1                   Reserved, do not use 
  4739.                      2                   MIF file name 
  4740.                      3                   MIF file pointer 
  4741.                      4                   SNMP mapping file name 
  4742.                      5                   SNMP mapping file pointer 
  4743.                      0x80000000          Start of implementation-specific types 
  4744.  
  4745.                      Note that like command codes, file type codes above 
  4746.                      x80000000 are reserved for implementation-specific use. 
  4747.  
  4748.  osFileData          Offset to a string whose contents depend on the type code. 
  4749.  
  4750.  Issuing DmiCiInstallData displays an example of how to issue the 
  4751.  DmiCiInstallData command to the CI. 
  4752.  
  4753.  
  4754.   Issuing DmiCiInstallData
  4755.  
  4756.   DmiLibInstallData_t *InstallMIF(char *MIF_FileName)   // Receive thread -- handles all confirm processing
  4757.   {
  4758.   DMI_CiInstallData_t *inst;
  4759.   ULONG               reqSize,FileOffset,FileSize;
  4760.   DMI_STRING          *FileName;
  4761.   ULONG               RC = SLERR_OUT_OF_MEMORY;
  4762.  
  4763.       FileName = (DMI_STRING *)malloc((ULONG) (strlen(MIF_FileName) + sizeof(ULONG)));
  4764.       if(FileName != (DMI_STRING *)NULL){  // we got the memory we asked for
  4765.           memcpy(FileName->body,MIF_FileName,(FileName->length = strlen(MIF_FileName)));  // set up the file
  4766.                                                                                           // name string
  4767.           FileOffset = reqSize = (ULONG)sizeof(DMI_CiInstallData_t);   // install structure includes ONE
  4768.                                                                        // file structure
  4769.           reqSize += (ULONG) (FileName->length + sizeof(FileName->length));   // add length of DMI string
  4770.           inst = (DMI_CiInstallData_t *)malloc(reqSize);
  4771.           if(inst != (DMI_CiInstallData_t *)NULL){   // we've got the memory
  4772.               memset(inst,0,reqSize);   /* clear out the whole thing */
  4773.               inst->DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  4774.               inst->DmiMgmtCommand.iCmdLen = reqSize;
  4775.               inst->DmiMgmtCommand.iCmdHandle = 1;
  4776.               inst->DmiMgmtCommand.iRequestCount = 1;
  4777.               inst->DmiMgmtCommand.iCommand = DmiCiInstallCmd;
  4778.               inst->iFileCount = 1;
  4779.               inst->DmiFileList╤ì0ΓêÖ.iFileType = MIF_MIF_FILE_NAME_FILE_TYPE;
  4780.               inst->DmiFileList╤ì0ΓêÖ.oFileData = FileOffset;
  4781.               FileSize = (size_t) (sizeof(FileName->length) + FileName->length);
  4782.               memcpy(((char *)inst + FileOffset),FileName, FileSize);
  4783.               RC = DmiInvoke((DMI_MgmtCommand_t *)inst);
  4784.               if(RC != SLERR_NO_ERROR) free(inst);
  4785.           }
  4786.           free(FileName);
  4787.       }
  4788.       return RC;
  4789.   }
  4790.  
  4791.  
  4792. ΓòÉΓòÉΓòÉ 6.3.2. DmiCiUninstallData ΓòÉΓòÉΓòÉ
  4793.  
  4794. To remove a component from the MIF database, the component instrumentation 
  4795. fills out a DmiCiUninstallData block and sends it to the service layer with the 
  4796. DmiInvoke() function call. 
  4797.  
  4798. The format for the command block is: 
  4799.  
  4800. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4801. Γöé Table 43. DmiCiUninstallData Command Block                  Γöé
  4802. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4803. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4804. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4805. Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  4806. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4807. Γöé 64       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  4808. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4809.  
  4810.  Variable Name       Variable Description 
  4811.  
  4812.  DmiMgmtCommand      The command block.  The value of iCommand is 0x403. 
  4813.                      iMgmtHandle should always be set to zero. 
  4814.  
  4815.  iComponentId        The service-layer defined ID of this component. 
  4816.  
  4817.  Issuing DmiCiUninstallData displays an example of how to issue the 
  4818.  DmiCiUninstallData command to the CI. 
  4819.  
  4820.  
  4821.   Issuing DmiCiUninstallData
  4822.  
  4823.   ULONG UnInstallMIF(ULONG CompID)   // Receive thread -- handles all confirm processing
  4824.   {
  4825.   DMI_CiUninstallData_t Unload;
  4826.   ULONG RC;
  4827.  
  4828.       memset(&Unload,0,sizeof(DMI_CiUninstallData_t));   // clear it out first
  4829.       Unload.DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK;
  4830.       Unload.DmiMgmtCommand.iCommand = DmiCiUninstallCmd;
  4831.       Unload.DmiMgmtCommand.iCmdLen = sizeof(DMI_CiUninstallData_t);
  4832.       Unload.DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE;
  4833.       Unload.DmiMgmtCommand.iCmdHandle  = YOUR_COMMAND_HANDLE;
  4834.       Unload.DmiMgmtCommand.iRequestCount = 1;
  4835.       Unload.iComponentId = CompID;
  4836.       return DmiInvoke((DMI_MgmtCommand_t *)&Unload);    // issue the unload command
  4837.   }
  4838.  
  4839.  
  4840. ΓòÉΓòÉΓòÉ 6.3.3. DmiRegisterCiInd ΓòÉΓòÉΓòÉ
  4841.  
  4842. The DmiRegisterCiInd block can be used as follows: 
  4843.  
  4844.      To register a callable interface for components that have resident 
  4845.       instrumentation code 
  4846.  
  4847.      To get the version of the service layer. 
  4848.  
  4849.  The format for the command block is: 
  4850.  
  4851.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4852.   Γöé Table 44. DmiRegisterCiInd Command Block                   Γöé
  4853.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4854.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4855.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4856.   Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  4857.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4858.   Γöé 68       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  4859.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4860.   Γöé 72       Γöé 4       Γöé PTR      Γöé pAccessFunc          Γöé
  4861.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4862.   Γöé 76       Γöé 4       Γöé PTR      Γöé pCancelFunc          Γöé
  4863.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4864.   Γöé 80       Γöé 4       Γöé INT      Γöé iAccessListCount       Γöé
  4865.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4866.   Γöé 84       Γöé 8       Γöé STRUCT     Γöé DmiAccessData[ ]       Γöé
  4867.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4868.  
  4869.  Variable Name       Variable Description 
  4870.  
  4871.  DmiMgmtCommand      The command block.  The value of iCommand is 0x400. 
  4872.  
  4873.  iComponentId        ID of the service layer assigned to the component on 
  4874.                      installation. 
  4875.  
  4876.  pAccessFunc         Pointer to the entry point of the component 
  4877.                      instrumentation. The service layer calls the component 
  4878.                      instrumentation with the C prototype: 
  4879.  
  4880.                                           unsigned long  pAccessFunc(PTR command)
  4881.  
  4882.                      The variable command is the complete block. A value of 
  4883.                      zero is illegal. 
  4884.  
  4885.  pCancelFunc         Pointer to the entry point that the service layer calls to 
  4886.                      cancel an outstanding operation through the direct 
  4887.                      interface. The service layer calls with the C prototype: 
  4888.  
  4889.                                           unsigned long  pCancelFunc(void)
  4890.  
  4891.                      A value of zero is illegal. 
  4892.  
  4893.  iAccessListCount    The number of blocks of type DmiAccessData, as defined in 
  4894.                      DmiAccessData Command Block. 
  4895.  
  4896.  DmiAccessData[ ]    The groups and individual attributes that use the direct 
  4897.                      interface. The format of the DmiAccessData block is 
  4898.                      defined in DmiAccessData Command Block. 
  4899.  
  4900.  The format of the DmiAccessData block is: 
  4901.  
  4902.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4903.   Γöé Table 45. DmiAccessData Command Block                     Γöé
  4904.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4905.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4906.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4907.   Γöé 0       Γöé 4       Γöé INT      Γöé iGroupId           Γöé
  4908.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4909.   Γöé 4       Γöé 4       Γöé INT      Γöé iAttributeId         Γöé
  4910.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4911.  
  4912.  Variable Name       Variable Description 
  4913.  
  4914.  iGroupId            Group that uses the direct interface. A value of zero 
  4915.                      indicates that all groups within this MIF file use the 
  4916.                      direct interface. In this case, the iAttributeId field is 
  4917.                      ignored. 
  4918.  
  4919.  iAttributeId        Attributes, within the group specified by iGroupId, that 
  4920.                      use the direct interface. A value of zero indicates that 
  4921.                      all attributes within this group use the direct interface. 
  4922.  
  4923.  Issuing DmiRegisterCiInd displays an example of how to issue the 
  4924.  DmiRegisterCiInd command to the CI. 
  4925.  
  4926.  
  4927.   Issuing DmiRegisterCiInd
  4928.  
  4929.   ULONG RegisterCI(ULONG ComponentID)
  4930.   {
  4931.   ULONG Size,x;
  4932.   DMI_RegisterCiInd_t    *ciRegister;
  4933.   ULONG RC = SLERR_OUT_OF_MEMORY;
  4934.   DMI_MgmtCommand_t      *dmiCommand;
  4935.   DMI_AccessData_t       *accessList;
  4936.  
  4937.  
  4938.      Size = (ULONG) (sizeof(DMI_RegisterCiInd_t) + (3 * sizeof(DMI_AccessData_t)));   // get size of block
  4939.      ciRegister = malloc(Size);
  4940.      if(ciRegister != (DMI_RegisterCiInd_t *)NULL){
  4941.          memset(ciRegister,0,Size);   // clear out the whole thing first
  4942.          dmiCommand = &(ciRegister->DmiMgmtCommand);
  4943.          dmiCommand->iLevelCheck = DMI_LEVEL_CHECK;
  4944.          dmiCommand->iCommand = DmiRegisterCiCmd;
  4945.          dmiCommand->iCmdLen = Size;
  4946.          dmiCommand->iCnfBufLen = 4000UL;
  4947.          dmiCommand->pCnfBuf = malloc(4000UL);
  4948.  
  4949.          ciRegister->iComponentId = ComponentID;          // assign the ID from install time
  4950.          ciRegister->pAccessFunc = DmiCiInvoke;           // invoke entry point into component code
  4951.          ciRegister->pCancelFunc = DmiCiCancel;           // Cancel entry point into component code
  4952.          ciRegister->iAccessListCount = 4;                // this example has four attributes in one group
  4953.          accessList = &(ciRegister->DmiAccessList╤ì0ΓêÖ);
  4954.          for(x = 1;x != 5;x++){
  4955.              accessList->iGroupId = 2;                    // assign the group ID from the MIF
  4956.              accessList->iAttributeId = x;                // assign the attribute DI from the MIF
  4957.              accessList++;
  4958.          }
  4959.          RC = DmiInvoke((DMI_MgmtCommand_t *)ciRegister);
  4960.          free(ciRegister);
  4961.       }
  4962.       return RC;
  4963.   }
  4964.  
  4965.  
  4966. ΓòÉΓòÉΓòÉ 6.3.4. DmiRegisterCnf ΓòÉΓòÉΓòÉ
  4967.  
  4968. On return from the DmiRegisterCiInd call, the service layer places a 
  4969. DmiRegisterCnf block in the response buffer. This block is the same as that 
  4970. described in DmiRegisterCnf Command Block. 
  4971.  
  4972. The format for the command block is: 
  4973.  
  4974. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4975. Γöé Table 46. DmiRegisterCnf Command Block                    Γöé
  4976. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4977. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  4978. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4979. Γöé 0       Γöé 8       Γöé STRUCT     Γöé DmiVersion          Γöé
  4980. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4981. Γöé 8       Γöé 4       Γöé INT      Γöé iDmiHandle          Γöé
  4982. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4983.  
  4984.  Variable Name       Variable Description 
  4985.  
  4986.  DmiVersion          A block defining the version of the service layer. 
  4987.  
  4988.  iDmiHandle          Set to a unique handle for this component instrumentation. 
  4989.                      This is only valid for as long as the component 
  4990.                      instrumentation is registered with the service layer. The 
  4991.                      handle is passed to the service layer when unregistering. 
  4992.  
  4993.  A component can register more than once. This is necessary when a component 
  4994.  has multiple entry points for instrumentation. In this case, the component 
  4995.  instrumentation is assigned multiple handles. 
  4996.  
  4997.  Processing DmiRegisterCnf displays an example of how to handle the 
  4998.  DmiRegisterCnf callback command block. For this example, all callbacks that 
  4999.  are returned to the management application are processed through a single 
  5000.  entry point. 
  5001.  
  5002.  
  5003. ΓòÉΓòÉΓòÉ 6.3.5. DmiUnregisterCiInd ΓòÉΓòÉΓòÉ
  5004.  
  5005. DmiUnregisterCiCmd instructs the service layer to remove a direct component 
  5006. instrumentation interface from the service layer's table of registered 
  5007. interfaces. The call uses the DmiUnregisterCiInd block. 
  5008.  
  5009. The format for the command block is: 
  5010.  
  5011. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5012. Γöé Table 47. DmiUnregisterCiInd Command Block                  Γöé
  5013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5014. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  5015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5016. Γöé 0       Γöé 64       Γöé STRUCT     Γöé DmiMgmtCommand        Γöé
  5017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5018. Γöé 64       Γöé 4       Γöé INT      Γöé iCiHandle           Γöé
  5019. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5020.  
  5021.  Variable Name       Variable Description 
  5022.  
  5023.  DmiMgmtCommand      The command block.  The value of iCommand is 0x401. 
  5024.  
  5025.  iCiHandle           The handle that the service layer assigned to the 
  5026.                      component on registration. Components must unregister once 
  5027.                      for each registration performed. No return buffer is 
  5028.                      required or used. 
  5029.  
  5030.  Issuing DmiUnregisterCiInd displays an example of how to issue the 
  5031.  DmiUnregisterCiInd command to the CI. 
  5032.  
  5033.  
  5034.   Issuing DmiUnregisterCiInd
  5035.  
  5036.   ULONG UnRegisterCI(ULONG iCiHandle)
  5037.   {
  5038.   DMI_UnRegisterCiInd_t   *ciUnRegister;
  5039.   ULONG                   RC = SLERR_OUT_OF_MEMORY;
  5040.   DMI_MgmtCommand_t       *dmiCommand;
  5041.  
  5042.      ciUnRegister = malloc(sizeof(DMI_UnRegisterCiInd_t));
  5043.      if(ciUnRegister != (DMI_UnRegisterCiInd_t *)NULL){
  5044.          memset(ciUnRegister,0,sizeof(DMI_UnRegisterCiInd_t));   // clear out the whole thing first
  5045.          dmiCommand = &(ciUnRegister->DmiMgmtCommand);
  5046.          dmiCommand->iLevelCheck = DMI_LEVEL_CHECK;
  5047.          dmiCommand->iCommand = DmiUnregisterMgmtCmd;
  5048.          dmiCommand->iCmdLen = sizeof(DMI_UnRegisterCiInd_t);
  5049.          ciUnRegister->iCiHandle = iCiHandle;          // assign the ID from install time
  5050.          RC = DmiInvoke((DMI_MgmtCommand_t *)ciUnRegister);
  5051.          free(ciUnRegister);
  5052.       }
  5053.       return RC;
  5054.   }
  5055.  
  5056.  
  5057. ΓòÉΓòÉΓòÉ 6.3.6. DmiEventData ΓòÉΓòÉΓòÉ
  5058.  
  5059. To send an event, the component instrumentation sends a DmiIndicate block to 
  5060. the service layer's DmiIndicate() entry point. The event data is defined in a 
  5061. DmiEventData block that corresponds to the oIndicationData field in the 
  5062. DmiIndicate block. 
  5063.  
  5064. The format for the command block is: 
  5065.  
  5066. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5067. Γöé Table 48. DmiEventData Command Block                     Γöé
  5068. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5069. Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  5070. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5071. Γöé 0       Γöé 4       Γöé INT      Γöé iClassCount          Γöé
  5072. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5073. Γöé 4       Γöé 4       Γöé STRUCT     Γöé DmiClassData[ ]        Γöé
  5074. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5075.  
  5076.  Variable Name       Variable Description 
  5077.  
  5078.  iClassCount         The number of group class strings in the component. 
  5079.  
  5080.  DmiClassData[ ]     A list of the group class data blocks for this component, 
  5081.                      as defined in DmiClassData Command Block. 
  5082.  
  5083.  The format of the DmiClassData block is: 
  5084.  
  5085.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5086.   Γöé Table 49. DmiClassData Command Block                     Γöé
  5087.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5088.   Γöé OFFSET     Γöé SIZE      Γöé TYPE      Γöé VARIABLE NAME         Γöé
  5089.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5090.   Γöé 0       Γöé 4       Γöé INT      Γöé iComponentId         Γöé
  5091.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5092.   Γöé 4       Γöé 4       Γöé OFFSET     Γöé osClassString         Γöé
  5093.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5094.   Γöé 8       Γöé 4       Γöé INT      Γöé iRowCount           Γöé
  5095.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5096.   Γöé 12       Γöé 4       Γöé STRUCT     Γöé DmiGetRowCnf[ ]        Γöé
  5097.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5098.  
  5099.  Variable Name       Variable Description 
  5100.  
  5101.  iComponentId        The ID of the component that this event pertains to. 
  5102.  
  5103.  osClassString       Offset to the string that names the group class for the 
  5104.                      event. 
  5105.  
  5106.  iRowCount           Number of DmiRowList structures below. 
  5107.  
  5108.  DmiGetRowCnf[ ]     A list of one or more DmiGetRowCnf structures that 
  5109.                      describes the data in the event. 
  5110.  
  5111.  
  5112. ΓòÉΓòÉΓòÉ 7. Enabling a Product for the DMI ΓòÉΓòÉΓòÉ
  5113.  
  5114. This chapter describes how to enable a product to be managed as a component 
  5115. through the DMI. 
  5116.  
  5117. The general tasks to enable a product include: 
  5118.  
  5119.      Defining which aspects of the product are to be managed 
  5120.  
  5121.      Writing a Management Information Format (MIF) file to describe the 
  5122.       manageable features 
  5123.  
  5124.      Writing instrumentation code to provide the service layer with 
  5125.       information about the component 
  5126.  
  5127.      Determining what errors, exceptions, or problems are to be forwarded to 
  5128.       the service layer as indications 
  5129.  
  5130.      Installing the MIF into the MIF database 
  5131.  
  5132.  
  5133. ΓòÉΓòÉΓòÉ 7.1. Defining the Product's MIF File ΓòÉΓòÉΓòÉ
  5134.  
  5135. A MIF file is an ASCII text file that conforms to the Management Information 
  5136. Format (MIF) described in the DMI Specification. The MIF file for a component 
  5137. defines the manageable aspects of the component and provides this information 
  5138. to management applications through the DMI. Because the DMI does not assume 
  5139. that a management application can determine anything about a component in the 
  5140. system, it is important that the component provide all significant information 
  5141. about its manageable characteristics through the MIF file. 
  5142.  
  5143. The steps involved for defining a MIF file include: 
  5144.  
  5145.      Determining what characteristics of the component can be managed 
  5146.      Defining the groups into which these characteristics will be organized 
  5147.      Defining the attributes that make up the groups 
  5148.  
  5149.  A MIF file can contain as few as one group with the six standard attributes or 
  5150.  as many groups and attributes as you choose. 
  5151.  
  5152.  
  5153. ΓòÉΓòÉΓòÉ 7.1.1. Determining Attributes ΓòÉΓòÉΓòÉ
  5154.  
  5155. Before you begin determining possible grouping arrangements for the attributes 
  5156. in your component, be sure that you have considered all of the manageable 
  5157. aspects of your component in as much detail as possible. Be sure to include all 
  5158. of the items that can be configured or that can be changed, as well as 
  5159. information that enables asset management, such as a product version number or 
  5160. a serial number. 
  5161.  
  5162. The ComponentID group (ComponentID Group) is a good example of these kinds of 
  5163. attributes. 
  5164.  
  5165. You can also examine existing MIF files of other components to get an idea of 
  5166. what kinds of attributes are defined to enable a product for management through 
  5167. the DMI. 
  5168.  
  5169.  
  5170. ΓòÉΓòÉΓòÉ 7.1.2. Defining Groups ΓòÉΓòÉΓòÉ
  5171.  
  5172. After you have determined all of the attributes that apply to your component, 
  5173. you must define the groups into which these attributes will be organized. When 
  5174. you are defining the groups and attributes for the component, consider how the 
  5175. component will be used. The groups you define should be conceptually distinct 
  5176. from each other and should pertain to a manageable aspect of your component, 
  5177. whether that is a physical or logical element of the component. 
  5178.  
  5179. If your component is a software product, you might want to define your groups 
  5180. according to the functions a user can perform with the product. A 
  5181. word-processing program, for example, might require groups that describe the 
  5182. editing function, the spell-checker, the drawing tools, and the printing 
  5183. function. 
  5184.  
  5185. If your component is a hardware product, such as a LAN adapter card, you might 
  5186. want to relate your groups more closely to the physical aspects of the device. 
  5187. In the case of a LAN adapter card, the defined groups could describe such 
  5188. things as the port adapter statistics, the adapter hardware, and the 
  5189. operational state of the adapter. 
  5190.  
  5191. Keep the following points in mind when defining your component's groups: 
  5192.  
  5193.      Whenever possible, use the standard MIF files and groups specified by the 
  5194.       DMTF, instead of creating private, non-standard groups. Using these 
  5195.       common groups allows more management applications to manage your 
  5196.       component. The standard groups that are available are defined in the 
  5197.       following standard MIF files maintained by the DMTF: 
  5198.  
  5199.         -  Network Interface Card (NIC) MIF 
  5200.         -  Desktop System MIF 
  5201.         -  Large Mailroom Operation (LMO) MIF 
  5202.         -  Printer MIF 
  5203.         -  Software MIF 
  5204.  
  5205.       Note:  When you use a standard group, change only the attribute value for 
  5206.       any attributes in the group. For those attributes that you do not use, 
  5207.       specify the Unsupported keyword for the value. Do not change any other 
  5208.       items in the standard attributes, such as attribute ID or attribute type, 
  5209.       and do not renumber the attributes within a standard group. 
  5210.  
  5211.      Consult existing proprietary MIF files or groups for ideas about how to 
  5212.       model difficult aspects of your component. You might find that another 
  5213.       component's MIF file has addressed a similar problem. 
  5214.  
  5215.      Keep the number of attributes in a group to 20 or fewer, if possible. 
  5216.       Small groups are easier to manage, and their modular design makes them 
  5217.       easier for you to reuse than a few large groups. Even only one or two 
  5218.       attributes in a group is reasonable, as long as the grouping is still 
  5219.       logical. 
  5220.  
  5221.      Define your groups to be reusable. Although you are creating a MIF file 
  5222.       for a single component, you might be able to use the defined groups in 
  5223.       MIF files for other components you design. 
  5224.  
  5225.      Allow for different views of the same data by providing both standard 
  5226.       public groups of attributes and private, individual groups of attributes. 
  5227.       For instance, both the external fax-modem and the internal built-in modem 
  5228.       can be described by the modem group, but each would need an individual 
  5229.       group to describe characteristics that do not apply in the standard 
  5230.       group. 
  5231.  
  5232.  
  5233. ΓòÉΓòÉΓòÉ 7.2. Defining Attributes ΓòÉΓòÉΓòÉ
  5234.  
  5235. After you determine the manageable aspects of your component and define the 
  5236. groups you will use to organize the attributes, you are ready to define the 
  5237. attributes according to the MIF. Understanding the MIF provides a detailed 
  5238. description of the syntax and conventions used by the MIF, including the 
  5239. different definitions used to define your MIF file. 
  5240.  
  5241. The attribute is the smallest piece of your component that can be defined and 
  5242. identifies a discrete manageable aspect of the component. The way you define an 
  5243. attribute affects not only how the attribute value is stored and accessed but 
  5244. also how the component is managed. To ensure that management of your component 
  5245. is as efficient as possible, consider these points when defining the attributes 
  5246. in your component: 
  5247.  
  5248.      Access to an attribute should be determined by the likelihood of its 
  5249.       changing. If it is clear that an attribute value will not change or 
  5250.       should not be modified, define the attribute with read-only access. 
  5251.  
  5252.       For those attributes that do change, determine whether the value should 
  5253.       be available to a management application. If so, read-write access is 
  5254.       appropriate for the attribute, but if not, specify write-only access for 
  5255.       the attribute. 
  5256.  
  5257.      Tables provide flexibility for defining and managing attributes that 
  5258.       require more than one value. As your component develops, the tables you 
  5259.       have defined can be expanded to accommodate any changes. 
  5260.  
  5261.       When defining key attributes to be used as indexes into a table, use as 
  5262.       many keys as necessary to provide management applications efficient and 
  5263.       flexible access to the data in the table. The attributes you specify as 
  5264.       keys should be appropriate to the component and not simply arbitrary 
  5265.       indexing values. 
  5266.  
  5267.       If you are developing a component that does not have instrumentation 
  5268.       associated with it, ensure that the order of the keys in the MIF file is 
  5269.       sequential. This maximizes performance of the service layer, particularly 
  5270.       across SNMP. 
  5271.  
  5272.       Note:  The values for each row in a table, including the key value, must 
  5273.       be supplied either from the MIF database or by component instrumentation. 
  5274.       You cannot supply values from the database and from instrumentation for 
  5275.       the same row. 
  5276.  
  5277.      Do not add attributes specific to your component to those defined for a 
  5278.       standard group. If you alter the contents of a standard group, management 
  5279.       applications can no longer manage the group reliably. Instead, use the 
  5280.       standard group in your component and add another group that contains your 
  5281.       private attribute definitions. 
  5282.  
  5283.      Use detailed description statements to provide as much information about 
  5284.       your attributes as possible. Information such as minimum, maximum, and 
  5285.       default values is also useful. 
  5286.  
  5287.      Designate how an attribute value is to be supplied according to the 
  5288.       stability and nature of the attribute. If the attribute value is static, 
  5289.       the value can be supplied by the MIF database. However, if the attribute 
  5290.       value is likely to change frequently, specify that the value be supplied 
  5291.       by component instrumentation, such as a runtime program or a 
  5292.       direct-interface program. This ensures that the value provided for an 
  5293.       attribute is current. 
  5294.  
  5295.       For example, ProductID and SerialNumber are likely candidates for 
  5296.       database attributes because their values are not likely to change. 
  5297.       However, Available_Bytes_on_Hard_Drive is an attribute that is 
  5298.       appropriate for component instrumentation. 
  5299.  
  5300.  
  5301. ΓòÉΓòÉΓòÉ 7.3. Writing the MIF File ΓòÉΓòÉΓòÉ
  5302.  
  5303. You can write the MIF file with any editor you choose, as long as it is a plain 
  5304. ASCII text file with no embedded formatting commands or control characters. 
  5305. Although the order of group definitions in the MIF file does not affect the way 
  5306. the file is interpreted by the service layer, the structure of the MIF file 
  5307. should be logical and organized for easy maintenance and expansion. Use white 
  5308. space, indentation, and comments to enhance the readability of the file. 
  5309.  
  5310. The conventions and syntax used by the Management Information Format are 
  5311. described in detail in Understanding the MIF. 
  5312.  
  5313. Follow these general steps when writing the MIF file: 
  5314.  
  5315.      Define your groups and specify which are standard and which are private 
  5316.       to the component. Use the ComponentID group as the first group in the 
  5317.       file. 
  5318.  
  5319.       If a group functions as a table template, specify a key value and an ID, 
  5320.       if appropriate. 
  5321.  
  5322.      Define any enumeration definitions that apply to the component as a 
  5323.       whole. 
  5324.  
  5325.      Define the attributes for each group. 
  5326.  
  5327.      Define any table definitions that refer to previously defined templates, 
  5328.       if appropriate. 
  5329.  
  5330.  
  5331. ΓòÉΓòÉΓòÉ 7.4. Writing Instrumentation Code ΓòÉΓòÉΓòÉ
  5332.  
  5333. When a component receives a request from the service layer for an attribute's 
  5334. value, the instrumentation code for the component is invoked to retrieve the 
  5335. value. By providing instrumentation for your component, you ensure that the 
  5336. information that is accessed by management applications is both current and 
  5337. accurate. Without instrumentation, you run the risk of allowing the information 
  5338. in the MIF file to become outdated. 
  5339.  
  5340. You can provide instrumentation for your component in one of two ways: 
  5341.  
  5342.      An overlay program 
  5343.      A direct-interface program 
  5344.  
  5345.  
  5346. ΓòÉΓòÉΓòÉ 7.4.1. Overlay Programs ΓòÉΓòÉΓòÉ
  5347.  
  5348. An overlay program is invoked by the service layer whenever a management 
  5349. application requests to retrieve or set the value of an attribute in the 
  5350. component. The overlay program is loaded into the service layer's process space 
  5351. and enables the service layer to directly access the attribute values through 
  5352. the overlay program's procedures. When the request is completed, the service 
  5353. layer unloads the overlay program. 
  5354.  
  5355. Overlay programs are useful for components that do not already have resident 
  5356. code or for components running in systems with constrained memory. They are 
  5357. also appropriate if they are called infrequently. The data associated with your 
  5358. component is not retained by the overlay program between invocations, unless 
  5359. you specifically designate some storage mechanism for the values. If your 
  5360. component data must always be available, a direct-interface program is more 
  5361. appropriate. 
  5362.  
  5363.  
  5364. ΓòÉΓòÉΓòÉ 7.4.2. Direct-interface Programs ΓòÉΓòÉΓòÉ
  5365.  
  5366. A direct-interface program runs continuously as a separate process in the 
  5367. system. As part of its initialization, the program registers with the service 
  5368. layer and indicates the component with which the program is associated. When 
  5369. the service layer receives requests from management applications for 
  5370. information in that component, the service layer passes the request over to the 
  5371. direct-interface program, which returns the appropriate values. 
  5372.  
  5373. An advantage of the direct-interface program is its ability to maintain 
  5374. up-to-date component information. Because the program is always running, the 
  5375. attribute values for the component are always current and are not discarded 
  5376. between requests. The code for a direct-interface program can be added to the 
  5377. device driver code for the component (if appropriate) or to any other program 
  5378. that is loaded in the background. 
  5379.  
  5380. A disadvantage of the direct-interface program is that it is always loaded and 
  5381. utilizing resources. 
  5382.  
  5383.  
  5384. ΓòÉΓòÉΓòÉ 7.4.3. Coding Considerations ΓòÉΓòÉΓòÉ
  5385.  
  5386. Instrumentation code, whether for an overlay program or a direct-interface 
  5387. program, must be designed to process the following DMI commands: 
  5388.  
  5389.      DmiGetAttributeCmd 
  5390.      DmiSetAttributeCmd 
  5391.      DmiSetReserveAttributeCmd 
  5392.      DmiSetReleaseAttributeCmd 
  5393.      DmiGetRowCmd 
  5394.      DmiGetFirstRowCmd 
  5395.      DmiGetNextRowCmd 
  5396.  
  5397.  These commands are all accessed through the DmiCiInvoke function call, which 
  5398.  is sent from the service layer. In addition to these commands, the 
  5399.  instrumentation code must also issue the pConfirmFunc function call for every 
  5400.  command, including set commands and commands that generate errors. 
  5401.  
  5402.  For the DmiGetFirstRowCmd and DmiGetNextRowCmd commands, the DmiGetRowCnf 
  5403.  structure is generated by the service layer before it issues the DmiCiInvoke 
  5404.  function call. The GroupKeyData structures are also allocated, and the 
  5405.  oGroupKeyList variable in the DmiGetRowCnf structure is supplied. Your 
  5406.  instrumentation code can only modify the confirm buffer and not the DmiInvoke 
  5407.  command buffer. 
  5408.  
  5409.  For a complete description of the commands and structures used by the DMI, 
  5410.  read DMI Command Blocks 
  5411.  
  5412.  The SystemView Agent program also includes the DMI procedures library (DMIAPI) 
  5413.  to simplify the writing of instrumentation code. By using the procedures 
  5414.  provided by the DMI API and by patterning your code after the sample programs 
  5415.  included in the SystemView Agent, many considerations regarding function calls 
  5416.  and DMI commands are resolved for you. For a detailed explanation of the DMI 
  5417.  procedures library, read DMI Procedure Library (DMIAPI). 
  5418.  
  5419.  
  5420. ΓòÉΓòÉΓòÉ 7.4.3.1. Overlay Programs ΓòÉΓòÉΓòÉ
  5421.  
  5422. To enable the service layer to properly access the overlay program for your 
  5423. component, ensure that you do the following when writing your MIF file: 
  5424.  
  5425.      Specify the name of the component instrumentation as part of the path 
  5426.       definition for your component. For example: 
  5427.  
  5428.                start paths
  5429.                      name = "EXPOverlay"
  5430.                      os2  = "names"
  5431.                      unix = "/usr/lpp/sva/bin/names"
  5432.                end paths
  5433.  
  5434.       In this case, the value of the name statement is used in attribute 
  5435.       definitions to refer back to this path definition. The operating system 
  5436.       statement identifies the filename of an OS/2 dynamic link library (DLL) 
  5437.       that functions as the overlay program. 
  5438.  
  5439.      In the definition for any attribute that requires instrumentation to 
  5440.       provide its value, specify the path definition. For example, in the 
  5441.       attribute definition use the following statement: 
  5442.  
  5443.                 value = * "EXPOverlay"
  5444.  
  5445.       This identifies the previous path definition by its name statement and 
  5446.       enables the service layer to load the proper overlay program to retrieve 
  5447.       the attribute's value. 
  5448.  
  5449.  For implementation details specific to the operating environments supported by 
  5450.  SystemView Agent: 
  5451.  
  5452.  Read                          For information about 
  5453.  
  5454.  Implementing DMI on OS/2      OS/2 
  5455.  
  5456.  Implementing DMI on AIX.      AIX 
  5457.  
  5458.  Implementing DMI on Windows NT/Windows 95. Windows NT and Windows 95 
  5459.  
  5460.  
  5461. ΓòÉΓòÉΓòÉ 7.4.3.2. Direct-interface programs ΓòÉΓòÉΓòÉ
  5462.  
  5463. To use a direct-interface program to retrieve attribute values, your component 
  5464. must register with the service layer as a direct-interface component. When it 
  5465. registers, the component passes its entry point to the service layer. This 
  5466. enables the service layer to pass control to the direct-interface program when 
  5467. an attribute's value is required. When the direct-interface program unloads, it 
  5468. unregisters with the service layer. 
  5469.  
  5470. You can indicate that your component relies on a direct-interface program by 
  5471. using the direct-interface keyword in the path definition of the component's 
  5472. MIF file. For example: 
  5473.  
  5474.    start paths
  5475.          name = "NAMES - Direct Interface"
  5476.          os2 = direct-interface
  5477.          unix = direct-interface
  5478.    end paths
  5479.  
  5480. This ensures that the service layer can return an appropriate error if it 
  5481. attempts to access the value for an attribute and the direct-interface program 
  5482. is not running. 
  5483.  
  5484. For implementation details specific to the operating environments supported by 
  5485. SystemView Agent: 
  5486.  
  5487.  Read                          For information about 
  5488.  
  5489.  Implementing DMI on OS/2      OS/2 
  5490.  
  5491.  Implementing DMI on AIX.      AIX 
  5492.  
  5493.  Implementing DMI on Windows NT/Windows 95. Windows NT and Windows 95 
  5494.  
  5495.  
  5496. ΓòÉΓòÉΓòÉ 7.5. Sending Events ΓòÉΓòÉΓòÉ
  5497.  
  5498. When a component encounters an error situation or needs to notify a management 
  5499. application of a status change, for example, the component sends an event to 
  5500. the service layer. If a management application has requested to receive 
  5501. unsolicited notifications from that component, the service layer forwards the 
  5502. event to the management application as an indication. 
  5503.  
  5504. You can use events to enhance the manageability of your component by providing 
  5505. detailed information about the status of the component and by notifying 
  5506. management applications of these changes in a timely manner. Events are 
  5507. especially useful when a serious error or similar change has occurred and the 
  5508. management application must be informed immediately. 
  5509.  
  5510. Events are issued with the DmiIndicate function call. The service layer 
  5511. processes the events as they are received and returns a status value indicating 
  5512. the success or failure of the DmiIndicate call. For more information about the 
  5513. DmiIndicate call and its associated command blocks, read DmiIndicate Command 
  5514. Block. 
  5515.  
  5516.  
  5517. ΓòÉΓòÉΓòÉ 7.6. Installing Components ΓòÉΓòÉΓòÉ
  5518.  
  5519. When you install your component on a system, the installation procedure either 
  5520. incorporates the MIF file for the component into the MIF database or, if the 
  5521. service layer is not running, installs the file in the MIF subdirectory. To 
  5522. accomplish this, you can use the DmiInstall procedure that is included in the 
  5523. DMI procedure library. This procedure handles such tasks as adding the MIF file 
  5524. to the MIF database and determining whether the service layer is running. 
  5525.  
  5526. For a detailed explanation of the DMI procedures library, read DMI Procedure 
  5527. Library (DMIAPI). 
  5528.  
  5529. For implementation details specific to the operating environments supported by 
  5530. SystemView Agent: 
  5531.  
  5532.  Read                          For information about 
  5533.  
  5534.  Implementing DMI on OS/2      OS/2 
  5535.  
  5536.  Implementing DMI on AIX.      AIX 
  5537.  
  5538.  Implementing DMI on Windows NT/Windows 95. Windows NT and Windows 95 
  5539.  
  5540.  
  5541. ΓòÉΓòÉΓòÉ 7.7. Uninstalling Components ΓòÉΓòÉΓòÉ
  5542.  
  5543. The uninstall procedure for your component should do the following: 
  5544.  
  5545.      If the component uses a direct-interface program, ensure that the program 
  5546.       issue a DmiCiUnregister command, if the program is registered to the 
  5547.       service layer and currently running, 
  5548.  
  5549.      Remove the MIF file for the component from the MIF database by issuing a 
  5550.       DmiCiUninstall command. 
  5551.  
  5552.       To issue this command, your uninstall procedure must identify which 
  5553.       component ID in the MIF database corresponds to your component. 
  5554.  
  5555.  
  5556. ΓòÉΓòÉΓòÉ 8. DMI Procedure Library (DMIAPI) ΓòÉΓòÉΓòÉ
  5557.  
  5558. The DMI procedure library provided with the SystemView Agent package is a C 
  5559. library that contains procedures for a specific operation system for developing 
  5560. applications that use the DMI Management Interface and Component Interface 
  5561. entry points. You can use the procedures in the library to simplify the 
  5562. processes of installing components in the MIF database and invoking the service 
  5563. layer's Component Interface. The procedures in the DMI procedure library are 
  5564. used in the example programs provided with the SystemView Agent program. 
  5565.  
  5566.  
  5567. ΓòÉΓòÉΓòÉ 8.1. Library Directories ΓòÉΓòÉΓòÉ
  5568.  
  5569. This tables in this section display the subdirectories in which the files in 
  5570. the DMI procedure library are located, according to the operating system: 
  5571.  
  5572.  Operating system                   Table 
  5573.  OS/2                               DMI Procedure Library Directories for OS/2 
  5574.  AIX                                DMI Procedure Library Directories for AIX 
  5575.  Windows NT/Windows 95              DMI Procedure Library Directories for 
  5576.                                     Windows NT/Windows 95 
  5577.  
  5578.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5579.   Γöé Table 50. DMI Procedure Library Directories for OS/2             Γöé
  5580.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5581.   Γöé FILE                  Γöé DIRECTORY               Γöé
  5582.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5583.   Γöé DMIAPI.H                Γöé "[BOOT DRIVE]:"\INCLUDE        Γöé
  5584.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5585.   Γöé DMI.H                 Γöé "[BOOT DRIVE]:"\INCLUDE        Γöé
  5586.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5587.   Γöé ERROR.H                Γöé "[BOOT DRIVE]:"\INCLUDE        Γöé
  5588.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5589.   Γöé OS_DMI.H                Γöé "[BOOT DRIVE]:"\INCLUDE        Γöé
  5590.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5591.   Γöé DMIAPI.LIB               Γöé "[BOOT DRIVE]:"\LIB          Γöé
  5592.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5593.   Γöé DMIAPI.DLL               Γöé "[BOOT DRIVE]:"\BIN          Γöé
  5594.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5595.   Γöé NOTE:  The DMI.H, ERROR.H, and OS_DMI.H files are all included by DMIAPI.H.  Γöé
  5596.   Γöé The only header file a developer needs to include is DMIAPI.H.        Γöé
  5597.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5598.  
  5599.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5600.   Γöé Table 51. DMI Procedure Library Directories for AIX              Γöé
  5601.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5602.   Γöé FILE           Γöé DIRECTORY                      Γöé
  5603.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5604.   Γöé dmiapi.h         Γöé /usr/lpp/sva/include                Γöé
  5605.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5606.   Γöé dmi.h          Γöé /usr/lpp/sva/include                Γöé
  5607.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5608.   Γöé error.h         Γöé /usr/lpp/sva/include                Γöé
  5609.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5610.   Γöé os_dmi.h         Γöé /usr/lpp/sva/include                Γöé
  5611.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5612.   Γöé libdmisl.a        Γöé /usr/lpp/sva/lib                  Γöé
  5613.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5614.   Γöé libdmiapi.a       Γöé /usr/lpp/sva/lib                  Γöé
  5615.   Γöé             Γöé                           Γöé
  5616.   Γöé (for applications that  Γöé                           Γöé
  5617.   Γöé do not use X-windows)  Γöé                           Γöé
  5618.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5619.   Γöé libdmiapiX.a       Γöé /usr/lpp/sva/lib                  Γöé
  5620.   Γöé             Γöé                           Γöé
  5621.   Γöé (for applications that  Γöé                           Γöé
  5622.   Γöé use X-windows)      Γöé                           Γöé
  5623.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5624.   Γöé NOTE:  dmi.h, error.h, and os_dmi.h are all included by dmiapi.h.  The only  Γöé
  5625.   Γöé header file a developer needs to include is dmiapi.h.             Γöé
  5626.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5627.  
  5628.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5629.   Γöé Table 52. DMI Procedure Library Directories for Windows NT/Windows 95     Γöé
  5630.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5631.   Γöé FILE                  Γöé DIRECTORY               Γöé
  5632.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5633.   Γöé DMI_API.H               Γöé "C:\SVA"\DMI\INCLUDE         Γöé
  5634.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5635.   Γöé DMI.H                 Γöé "C:\SVA"\DMI\INCLUDE         Γöé
  5636.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5637.   Γöé ERROR.H                Γöé "C:\SVA"\DMI\INCLUDE         Γöé
  5638.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5639.   Γöé OS_DMI.H                Γöé "C:\SVA"\DMI\INCLUDE         Γöé
  5640.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5641.   Γöé DMIAPI32.LIB              Γöé "C:\SVA"\DMI\LIB           Γöé
  5642.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5643.   Γöé DMIAPI.DLL               Γöé "C:\SVA"\DMI\LIB           Γöé
  5644.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5645.   Γöé NOTES:                                    Γöé
  5646.   Γöé                                        Γöé
  5647.   Γöé o  "C:\SVA" indicates the default drive and directory where SystemView    Γöé
  5648.   Γöé   Agent is installed.  If you installed the product in a different path,  Γöé
  5649.   Γöé   these file locations will differ accordingly.               Γöé
  5650.   Γöé                                        Γöé
  5651.   Γöé o  The DMI.H, ERROR.H, and OS_DMI.H files are all included by DMI_API.H.   Γöé
  5652.   Γöé   The only header file a developer needs to include is DMI_API.H.      Γöé
  5653.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5654.  
  5655.  
  5656. ΓòÉΓòÉΓòÉ 8.2. Procedures and Data Types ΓòÉΓòÉΓòÉ
  5657.  
  5658. This section describes the procedures and data types that make up the DMI 
  5659. procedure library. The procedures include: 
  5660.  
  5661.      DmiCiProcess() 
  5662.      DmiInstall() 
  5663.      DmiInvoke() 
  5664.      DmiIndicate() 
  5665.  
  5666.  
  5667. ΓòÉΓòÉΓòÉ 8.2.1. DmiCiProcess() ΓòÉΓòÉΓòÉ
  5668.  
  5669. This procedure is called by DmiCiInvoke(). It processes a command through the 
  5670. service layer's Component Interface. 
  5671.  
  5672.  
  5673. ΓòÉΓòÉΓòÉ 8.2.1.1. Syntax ΓòÉΓòÉΓòÉ
  5674.  
  5675. DMI_UNSIGNED DMI_FUNC_ENTRY DmiCiProcess (DmiCiControl_t *Command,
  5676.              void _FAR*dmiCommand);
  5677.  
  5678.  
  5679. ΓòÉΓòÉΓòÉ 8.2.1.2. Parameters ΓòÉΓòÉΓòÉ
  5680.  
  5681.  Command        A pointer to the current Component Interface command block. 
  5682.  
  5683.  dmiCommand     A pointer to the current command block passed by the service 
  5684.                 layer to the program through DmiCiInvoke. 
  5685.  
  5686.  
  5687. ΓòÉΓòÉΓòÉ 8.2.2. DmiInstall() ΓòÉΓòÉΓòÉ
  5688.  
  5689. This procedure allows an application developer writing a product setup or 
  5690. installation program to easily add MIF files to the MIF database. 
  5691.  
  5692.  
  5693. ΓòÉΓòÉΓòÉ 8.2.2.1. Syntax ΓòÉΓòÉΓòÉ
  5694.  
  5695. DmiLibInstallData_t *DMI_FUNC_ENTRYDmiInstall(   int iFileCount,
  5696.                DmiLibFileData_t *dmiLibFileList,
  5697.                DMI_STRING *pDmiDir,
  5698.                int iDefineDmiDir
  5699.                int StatusCall);
  5700.  
  5701.  
  5702. ΓòÉΓòÉΓòÉ 8.2.2.2. Parameters ΓòÉΓòÉΓòÉ
  5703.  
  5704.  iFileCount     The number of files within the dmiFileList structure. 
  5705.  
  5706.  dmiLibFileList An array of structures containing the types and locations of 
  5707.                 the files to install. 
  5708.  
  5709.  pDmiDir        A DMI_STRING pointer to an operating system definition for the 
  5710.                 DMIDIR environment variable. If this field is NIL, the library 
  5711.                 uses the system definition. When this field is specified, the 
  5712.                 library uses this path name in place of the system definition. 
  5713.  
  5714.                 This parameter is ignored by the OS/2 implementation. 
  5715.  
  5716.  iDefineDmiDir  A Boolean value (for which non-zero is true) that directs the 
  5717.                 library to modify the system startup file to include a 
  5718.                 definition for the DMIDIR environment variable. 
  5719.  
  5720.                 If pDmiDir is not NIL, DMIAPI.LIB uses the value of that field 
  5721.                 in the modified system startup file. 
  5722.  
  5723.                 If pDmiDir is NIL, DMIAPI.LIB uses the current value of the 
  5724.                 DMIDIR environment variable. If DMIDIR is not defined, 
  5725.                 DMIAPI.LIB attempts to query the service layer for the path 
  5726.                 name of the DMI directory. If DMIAPI.LIB is unable to determine 
  5727.                 the path name of the DMI directory, DmiInstall() terminates 
  5728.                 with an error. To resolve this condition, the calling program 
  5729.                 must re-issue the DmiInstall() command, with the pDmiDir 
  5730.                 parameter defined. 
  5731.  
  5732.                 If the system startup file already had a definition for DMIDIR, 
  5733.                 then that definition will be removed, and the new definition 
  5734.                 will be added. 
  5735.  
  5736.                 This parameter is ignored by the OS/2 implementation. 
  5737.  
  5738.  StatusCall     A callback entry point that the service layer calls with the 
  5739.                 MIF compiler messages. 
  5740.  
  5741.                 The Component Installation Status window in the DMI browser is 
  5742.                 an example of how you can use this parameter to display 
  5743.                 messages. 
  5744.  
  5745.  
  5746. ΓòÉΓòÉΓòÉ 8.2.3. DmiInvoke() ΓòÉΓòÉΓòÉ
  5747.  
  5748. The DMI Specification describes the MI entry point of the service layer. The 
  5749. entry point is called DmiInvoke(). The DmiInvoke() procedure is used by the 
  5750. calling application to issue commands to the service layer. 
  5751.  
  5752.  
  5753. ΓòÉΓòÉΓòÉ 8.2.3.1. Syntax ΓòÉΓòÉΓòÉ
  5754.  
  5755. DMI_UNSIGNED DMI_FUNC_ENTRY DmiInvoke(void _FAR *dmiMgmtCommand);
  5756.  
  5757.  
  5758. ΓòÉΓòÉΓòÉ 8.2.3.2. Parameters ΓòÉΓòÉΓòÉ
  5759.  
  5760.  dmiMgmtCommand      A pointer to a DMI command 
  5761.  
  5762.  
  5763. ΓòÉΓòÉΓòÉ 8.2.3.3. Notes ΓòÉΓòÉΓòÉ
  5764.  
  5765. If the service layer is not running, an SLERR_SL_INACTIVE error is returned. 
  5766. Otherwise the return value from DmiInvoke() is the value returned by the 
  5767. service layer when the command was issued. Error codes are documented in Status 
  5768. Codes 
  5769.  
  5770.  
  5771. ΓòÉΓòÉΓòÉ 8.2.4. DmiIndicate() ΓòÉΓòÉΓòÉ
  5772.  
  5773. This procedure operates like DmiInvoke but is the indication entry point of the 
  5774. service layer. 
  5775.  
  5776.  
  5777. ΓòÉΓòÉΓòÉ 8.2.4.1. Syntax ΓòÉΓòÉΓòÉ
  5778.  
  5779. DMI_UNSIGNED DMI_FUNC_ENTRY DmiIndicate(DMI_Indicate_t _FAR
  5780.                                                  *dmiIndication);
  5781.  
  5782.  
  5783. ΓòÉΓòÉΓòÉ 8.2.4.2. Parameters ΓòÉΓòÉΓòÉ
  5784.  
  5785.  dmiIndication  A pointer to a DMI indication block. 
  5786.  
  5787.  
  5788. ΓòÉΓòÉΓòÉ 8.2.4.3. Notes ΓòÉΓòÉΓòÉ
  5789.  
  5790. If the service layer is not running, an SLERR_SL_INACTIVE error is returned. 
  5791.  
  5792.  
  5793. ΓòÉΓòÉΓòÉ 8.2.5. Data Types ΓòÉΓòÉΓòÉ
  5794.  
  5795. The data types used by the procedures in the DMI procedure library are 
  5796. described in this section. For each data type, the syntax is given and the 
  5797. parameters are explained. 
  5798.  
  5799.  
  5800. ΓòÉΓòÉΓòÉ 8.2.5.1. DMI_STRING ΓòÉΓòÉΓòÉ
  5801.  
  5802. The syntax for using DMI_STRING is: 
  5803.  
  5804. typedef struct {
  5805.         unsigned long length;
  5806.         char body[1];
  5807. } DMI_STRING;
  5808.  
  5809.  Parameter      Description 
  5810.  
  5811.  length         The length of the string 
  5812.  
  5813.  body           The data for the string.  The string is not null-terminated. 
  5814.                 The 1 in the definition is strictly for ANSI C compliance. The 
  5815.                 actual size will be the size of the string. 
  5816.  
  5817.  
  5818. ΓòÉΓòÉΓòÉ 8.2.5.2. DmiLibBoolean ΓòÉΓòÉΓòÉ
  5819.  
  5820. The syntax for using DmiLibBoolean is: 
  5821.  
  5822. typedef enum {DmiLibFalse, DmiLibTrue} DmiLibBoolean_t;
  5823.  
  5824. DmiLibFalse  0
  5825. DmiLibTrue   1
  5826.  
  5827.  
  5828. ΓòÉΓòÉΓòÉ 8.2.5.3. DmiLibFileType ΓòÉΓòÉΓòÉ
  5829.  
  5830. The syntax for using DmiLibFileType is: 
  5831.  
  5832. typedef enum {MifFileName = 2, MifFilePointer} DmiLibFileType_t;
  5833.  
  5834. MifFileName      2
  5835. MifFilePointer   3
  5836.  
  5837.  
  5838. ΓòÉΓòÉΓòÉ 8.2.5.4. DmiLibFileData ΓòÉΓòÉΓòÉ
  5839.  
  5840. The syntax for using DmiLibFileData is: 
  5841.  
  5842. typedef struct {
  5843.         unsigned long iFileType;
  5844.         DMI_STRING *pFileData;
  5845. } DmiLibFileData_t;
  5846.  
  5847.  Parameter   Description 
  5848.  
  5849.  iFileType   The type of the referenced file: 
  5850.  
  5851.              1         MIF file name 
  5852.              2         MIF file pointer 
  5853.  
  5854.  pFileData   A DMI_STRING pointer to the file data. For type 2, this pointer 
  5855.              references the operating system path name to the file. For type 3, 
  5856.              the pointer references a DMI_STRING object that contains the 
  5857.              actual file data. 
  5858.  
  5859.  
  5860. ΓòÉΓòÉΓòÉ 8.2.5.5. DmiLibInstallData ΓòÉΓòÉΓòÉ
  5861.  
  5862. A pointer to this structure is used as the return value from calling 
  5863. DmiInstall(). The syntax for using DmiLibInstallData is: 
  5864.  
  5865. typedef struct {
  5866.         unsigned long iComponentId;
  5867.         unsigned long iDmiLibStatus;
  5868.         unsigned long iSlStatus;
  5869. } DmiLibInstallData_t;
  5870.  
  5871.  Parameter      Description 
  5872.  
  5873.  iComponentId   The component ID that the service layer assigned to the newly 
  5874.                 installed MIF file. 
  5875.  
  5876.  iDmiLibStatus  The status of the DmiInstall() procedure. Possible status codes 
  5877.                 include: 
  5878.  
  5879.                 DmiLibDirInstallNoError                           0x001 
  5880.                 DmiLibSlInstallNoError                            0x002 
  5881.                 DmiLibIllegalFileType                             0x101 
  5882.                 DmiLibCannotCloseDestinationFile                  0x201 
  5883.                 DmiLibCannotCreateDestinationFile                 0x202 
  5884.                 DmiLibCannotCreateDirectory                       0x203 
  5885.                 DmiLibCannotOpenSourceFile                        0x204 
  5886.                 DmiLibCannotReadSourceFile                        0x205 
  5887.                 DmiLibCannotWriteDestinationFile                  0x206 
  5888.                 DmiLibCannotExecuteInstallCommand                 0x301 
  5889.                 DmiLibCannotRunServiceLayer                       0x302 
  5890.                 DmiLibCannotAllocateMemory                        0x401 
  5891.                 DmiLibCannotSetDmiDirEnvironmentVariable          0x402 
  5892.                 DmiLibDmiDirEnvironmentVariableNotDefined         0x403 
  5893.  
  5894.  iSlStatus      This field is the value of the iStatus field from the result of 
  5895.                 the DmiCiInstallCmd. 
  5896.  
  5897.  
  5898. ΓòÉΓòÉΓòÉ 8.2.5.6. DmiCiControl ΓòÉΓòÉΓòÉ
  5899.  
  5900. The syntax for using DmiCiControl is: 
  5901.  
  5902. typedef struct {
  5903.    union {
  5904.       struct DmiMgmtCommand         dmiMgmtCommand;
  5905.       struct DmiGetAttributeReq     dmiGetAttributeReq;
  5906.       struct DmiSetAttributeReq     dmiSetAttributeReq;
  5907.       struct DmiGetRowReq           dmiGetRowReq;
  5908.       char                          requestBuffer[1];
  5909.    } _FAR                           *pRequestBuffer;
  5910.    union {
  5911.         struct DmiGetAttributeCnf   dmiGetAttributeCnf[1];
  5912.         struct DmiGetRowCnf         dmiGetRowCnf;
  5913.         char                        confirmBuffer[1];
  5914.    } _FAR                *pConfirmBuffer;
  5915.    DMI_FUNC3_OUT          DmiConfirmFunc;
  5916.    enum CiBoolean         ciCancelFlag;
  5917.    struct DmiConfirm      dmiConfirm;
  5918.    DmiCiAttribute_t _FAR *ciKeyList;
  5919.   DMI_UNSIGNED                MaxKeyCount;
  5920.     CI_FUNC_IN1           CiGetAttribute;
  5921.     CI_FUNC_IN1           CiGetNextAttribute;
  5922.     CI_FUNC_IN2           CiReleaseAttribute;
  5923.     CI_FUNC_IN2           CiReserveAttribute;
  5924.     CI_FUNC_IN2           CiSetAttribute;
  5925. } DmiCiControl_t
  5926.  
  5927.  Parameter         Description 
  5928.  
  5929.  pRequestBuffer    A pointer to the request buffer for this Component Interface 
  5930.                    command. 
  5931.  
  5932.  pConfirmBuffer    A pointer to the confirm buffer for this Component Interface 
  5933.                    command 
  5934.  
  5935.  DmiConfirmFunc    The entry point into the service layer for this command's 
  5936.                    confirm function 
  5937.  
  5938.  ciCancelFlag      A flag set when the service layer requests that this command 
  5939.                    be canceled 
  5940.  
  5941.  dmiConfirm        The confirm data block used for this command 
  5942.  
  5943.  These two parameters must be set by the calling program: 
  5944.  
  5945.  ciKeyList      A pointer to the key list array to 
  5946.  
  5947.  MaxKeyCount    The maximum number of keys for in this component, determined by 
  5948.                 the group in your MIF file which has the longest key list 
  5949.  
  5950.  
  5951. ΓòÉΓòÉΓòÉ 9. Implementing DMI on OS/2 ΓòÉΓòÉΓòÉ
  5952.  
  5953. This chapter describes the OS/2 files provided with the SystemView Agent 
  5954. program for use in creating applications and component instrumentation in an 
  5955. OS/2 environment. The following types of files are included: 
  5956.  
  5957.      Program files related to the service layer 
  5958.  
  5959.      Example files for an OS/2 management application and component, including 
  5960.       overlay and direct-interface instrumentation for the component 
  5961.  
  5962.  The chapter also presents any implementation considerations that are specific 
  5963.  to OS/2. 
  5964.  
  5965.  
  5966. ΓòÉΓòÉΓòÉ 9.1. Program Files ΓòÉΓòÉΓòÉ
  5967.  
  5968. OS/2 Program Files displays a list of OS/2 program files provided with the 
  5969. SystemView Agent program. The paths listed here indicate the default drive and 
  5970. subdirectory used during installation. If you installed SystemView Agent in a 
  5971. different drive or directory, adjust the file location accordingly. 
  5972.  
  5973. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5974. Γöé Table 53. OS/2 Program Files                         Γöé
  5975. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5976. Γöé FILE NAME  Γöé LOCATION         Γöé DESCRIPTION              Γöé
  5977. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5978. Γöé DMISL.EXE  Γöé [boot drive]:\OS2     Γöé The service layer executable file.  Γöé
  5979. Γöé       Γöé              Γöé You must start this program before  Γöé
  5980. Γöé       Γöé              Γöé any applications can access the    Γöé
  5981. Γöé       Γöé              Γöé service layer.            Γöé
  5982. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5983. Γöé DMISL.MSG  Γöé [boot drive]:\DMISL\BIN  Γöé The message file containing all mes- Γöé
  5984. Γöé       Γöé              Γöé sages associated with the service   Γöé
  5985. Γöé       Γöé              Γöé layer.                Γöé
  5986. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5987. Γöé DMIAPI.DLL Γöé [boot drive]:\OS2\DLL   Γöé The dynamic link library (DLL) for  Γöé
  5988. Γöé       Γöé              Γöé the DMI procedure library.  The    Γöé
  5989. Γöé       Γöé              Γöé SystemView Agent installation     Γöé
  5990. Γöé       Γöé              Γöé process adds this subdirectory to   Γöé
  5991. Γöé       Γöé              Γöé the LIBPATH statement in your     Γöé
  5992. Γöé       Γöé              Γöé CONFIG.SYS file.           Γöé
  5993. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5994. Γöé DMIPM.EXE  Γöé [boot drive]:\OS2     Γöé The executable file for the DMI MIF  Γöé
  5995. Γöé       Γöé              Γöé browser.               Γöé
  5996. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5997. Γöé DMI.H    Γöé [boot           Γöé The header file for the service    Γöé
  5998. Γöé       Γöé drive]:\DMISL\INCLUDE   Γöé layer.                Γöé
  5999. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6000. Γöé DMIAPI.H  Γöé [boot           Γöé The header file for the DMI proce-  Γöé
  6001. Γöé       Γöé drive]:\DMISL\INCLUDE   Γöé dure library.  Refer to DMI  Proce-  Γöé
  6002. Γöé       Γöé              Γöé dure Library (DMIAPI) for more    Γöé
  6003. Γöé       Γöé              Γöé information about the DMI procedure  Γöé
  6004. Γöé       Γöé              Γöé library.               Γöé
  6005. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6006. Γöé OS_DMI   Γöé [boot           Γöé The header file for the OS/2 oper-  Γöé
  6007. Γöé       Γöé drive]:\DMISL\INCLUDE   Γöé ating system.             Γöé
  6008. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6009. Γöé ERROR.H   Γöé [boot           Γöé The header file for the service    Γöé
  6010. Γöé       Γöé drive]:\DMISL\INCLUDE   Γöé layer's error message file      Γöé
  6011. Γöé       Γöé              Γöé (DMISL.MSG).             Γöé
  6012. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6013. Γöé DMIAPI.LIB Γöé [boot drive]:\DMISL\LIB  Γöé The DMI import library for use with  Γöé
  6014. Γöé       Γöé              Γöé version 2 of the IBM C/C++ Tools   Γöé
  6015. Γöé       Γöé              Γöé product.  Refer to DMI  Procedure   Γöé
  6016. Γöé       Γöé              Γöé Library (DMIAPI) for more informa-  Γöé
  6017. Γöé       Γöé              Γöé tion about the DMI procedure     Γöé
  6018. Γöé       Γöé              Γöé library.               Γöé
  6019. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6020.  
  6021.  
  6022. ΓòÉΓòÉΓòÉ 9.2. Example Files ΓòÉΓòÉΓòÉ
  6023.  
  6024. OS/2 Example Files displays a list of OS/2 example files provided with 
  6025. SystemView Agent. The paths listed here indicate the default drive and 
  6026. subdirectory used during installation. If you installed SystemView Agent in a 
  6027. different drive or directory, adjust the file location accordingly. 
  6028.  
  6029. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6030. Γöé Table 54. OS/2 Example Files                         Γöé
  6031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6032. Γöé FILE NAME    Γöé LOCATION         Γöé DESCRIPTION            Γöé
  6033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6034. Γöé MIEXAMP.C    Γöé [boot           Γöé The source code used by the DMI  Γöé
  6035. Γöé         Γöé drive]:\DMISL\EXAMPLES\MIΓöé MIF browser to interact with the Γöé
  6036. Γöé         Γöé              Γöé Management Interface.       Γöé
  6037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6038. Γöé NAMES.C     Γöé [boot           Γöé The source file for the overlay  Γöé
  6039. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé instrumentation for the sample  Γöé
  6040. Γöé         Γöé              Γöé component.            Γöé
  6041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6042. Γöé NAMES.DEF    Γöé [boot           Γöé The module definition file for  Γöé
  6043. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé use in building the DLL file for Γöé
  6044. Γöé         Γöé              Γöé the overlay instrumentation.   Γöé
  6045. Γöé         Γöé              Γöé The NAMES.DEF file defines the  Γöé
  6046. Γöé         Γöé              Γöé entry points and other charac-  Γöé
  6047. Γöé         Γöé              Γöé teristics of the DLL.       Γöé
  6048. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6049. Γöé NAMES.DEP    Γöé [boot           Γöé The dependency file for use in  Γöé
  6050. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé compiling the NAMES.C file.  You Γöé
  6051. Γöé         Γöé              Γöé might need to modify this file  Γöé
  6052. Γöé         Γöé              Γöé to accommodate path differences  Γöé
  6053. Γöé         Γöé              Γöé in your system.          Γöé
  6054. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6055. Γöé NAMES.MAK    Γöé [boot           Γöé The make file for use in com-   Γöé
  6056. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé piling and linking the sample   Γöé
  6057. Γöé         Γöé              Γöé component instrumentation     Γöé
  6058. Γöé         Γöé              Γöé (NAMES.C).  You can use this   Γöé
  6059. Γöé         Γöé              Γöé make file with the NMAKE utility Γöé
  6060. Γöé         Γöé              Γöé provided by version 2 of the IBM Γöé
  6061. Γöé         Γöé              Γöé C/C++ Tools product.  You might  Γöé
  6062. Γöé         Γöé              Γöé need to modify this file to    Γöé
  6063. Γöé         Γöé              Γöé accommodate path differences in  Γöé
  6064. Γöé         Γöé              Γöé your system.           Γöé
  6065. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6066. Γöé NAMES.MIF    Γöé [boot           Γöé The sample MIF file that defines Γöé
  6067. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé the NAMES component.  You might  Γöé
  6068. Γöé         Γöé              Γöé need to modify the path defi-   Γöé
  6069. Γöé         Γöé              Γöé nition in the file to accommo-  Γöé
  6070. Γöé         Γöé              Γöé date path differences in your   Γöé
  6071. Γöé         Γöé              Γöé system.              Γöé
  6072. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6073. Γöé NAMEDIR.C    Γöé [boot           Γöé The source file for the direct-  Γöé
  6074. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé interface instrumentation for   Γöé
  6075. Γöé         Γöé              Γöé the sample component.       Γöé
  6076. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6077. Γöé NAMEDIR.DEP   Γöé [boot           Γöé The dependency file for use in  Γöé
  6078. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé compiling the NAMEDIR.C file.   Γöé
  6079. Γöé         Γöé              Γöé You might need to modify this   Γöé
  6080. Γöé         Γöé              Γöé file to accommodate path differ- Γöé
  6081. Γöé         Γöé              Γöé ences in your system.       Γöé
  6082. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6083. Γöé NAMEDIR.MAK   Γöé [boot           Γöé The make file for use in com-   Γöé
  6084. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé piling and linking the sample   Γöé
  6085. Γöé         Γöé              Γöé component instrumentation     Γöé
  6086. Γöé         Γöé              Γöé (NAMEDIR.C).  You can use this  Γöé
  6087. Γöé         Γöé              Γöé make file with the NMAKE utility Γöé
  6088. Γöé         Γöé              Γöé provided by version 2 of the IBM Γöé
  6089. Γöé         Γöé              Γöé C/C++ Tools product.  You might  Γöé
  6090. Γöé         Γöé              Γöé need to modify this file to    Γöé
  6091. Γöé         Γöé              Γöé accommodate path differences in  Γöé
  6092. Γöé         Γöé              Γöé your system.           Γöé
  6093. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6094. Γöé NAMEDIR.MIF   Γöé [boot           Γöé The sample MIF file that defines Γöé
  6095. Γöé         Γöé drive]:\DMISL\EXAMPLES\CIΓöé the NAMEDIR component.      Γöé
  6096. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6097.  
  6098.  
  6099. ΓòÉΓòÉΓòÉ 9.3. Implementation Considerations for OS/2 ΓòÉΓòÉΓòÉ
  6100.  
  6101. This section describes characteristics of the service layer that you need to be 
  6102. aware of when developing applications and instrumentation in an OS/2 
  6103. environment. 
  6104.  
  6105.  
  6106. ΓòÉΓòÉΓòÉ 9.3.1. 16-Bit to 32-Bit Thunking ΓòÉΓòÉΓòÉ
  6107.  
  6108. The service layer is a 32-bit application. If you are developing component 
  6109. instrumentation or a management application that is a 16-bit application, 
  6110. ensure that your application supports 16-bit to 32-bit thunking. 
  6111.  
  6112.  
  6113. ΓòÉΓòÉΓòÉ 9.3.2. Callback Threading ΓòÉΓòÉΓòÉ
  6114.  
  6115. The confirm callback that the service layer returns to an application is sent 
  6116. on a separate thread from that used by the application's executable file. The 
  6117. application can post a message directly on the callback. 
  6118.  
  6119. Ensure that your application does not block the callback thread. 
  6120.  
  6121.  
  6122. ΓòÉΓòÉΓòÉ 9.3.3. Synchronous and Asynchronous Components ΓòÉΓòÉΓòÉ
  6123.  
  6124. The example components NAMES and NAMEDIR are both designed to respond to 
  6125. requests in a synchronous manner. The component processes each request as it is 
  6126. received and does not process subsequent requests until the previous request 
  6127. has been answered. 
  6128.  
  6129. You can take a synchronous component and modify it to function asynchronously 
  6130. by doing the following: 
  6131.  
  6132.      Create a thread that is blocked until a command is received from a 
  6133.       management application. 
  6134.  
  6135.      When the command is received, the component instrumentation queues the 
  6136.       command to the waiting thread and returns from the DmiCiInvoke() function 
  6137.       call immediately. The service layer continues operation and does not call 
  6138.       the component again until the first command has completed. 
  6139.  
  6140.      The thread processes the command just as it would in a synchronous 
  6141.       situation, but after the thread issues the callback to the service layer, 
  6142.       it returns to the blocked state or terminates. 
  6143.  
  6144.  This enables the service layer to process other requests. 
  6145.  
  6146.  
  6147. ΓòÉΓòÉΓòÉ 9.3.4. Debugging Overlay Instrumentation ΓòÉΓòÉΓòÉ
  6148.  
  6149. Overlay component instrumentation can be difficult to debug because of its 
  6150. transitory nature. To facilitate this kind of debugging, you can use a debug 
  6151. option when running the service layer. 
  6152.  
  6153. Before you use this option, you must stop the service layer, if it's already 
  6154. running. If you start the service layer automatically when your system starts, 
  6155. do the following: 
  6156.  
  6157.      Comment out the RUN= line in your CONFIG.SYS file that starts the 
  6158.       DMISL.EXE program. 
  6159.  
  6160.      Restart your system. 
  6161.  
  6162.  To start the service layer with the debug option, enter the following command 
  6163.  from an OS/2 command prompt: 
  6164.  
  6165.   DMISL DEBUG
  6166.  
  6167.  If the subdirectory containing the service layer executable file is not in 
  6168.  your PATH statement, enter the appropriate drive and path as part of the 
  6169.  command. 
  6170.  
  6171.  When the service layer is loaded, a debug address is displayed. When you set a 
  6172.  breakpoint at this address, execution stops just before the DmiCiInvoke() 
  6173.  function call is issued. At this point the overlay component DLL is already 
  6174.  loaded, and you can specify breakpoints in the instrumentation wherever you 
  6175.  need them. 
  6176.  
  6177.  
  6178. ΓòÉΓòÉΓòÉ 9.3.5. Service Layer Time-out ΓòÉΓòÉΓòÉ
  6179.  
  6180. If the OS/2 service layer provided with SystemView Agent issues a request to a 
  6181. component and the component takes longer than 15 seconds to respond, the 
  6182. service layer automatically deregisters the component. The service layer then 
  6183. terminates any other outstanding requests to the component. Further requests 
  6184. sent to the component yield an error (RC=1003; CPERR_CI_TERMINATED). 
  6185.  
  6186. The DMI browser continues to display the component icon until the component is 
  6187. deinstalled. If you attempt to expand the icon after the time-out has occurred, 
  6188. the DMI browser returns an error. 
  6189.  
  6190.  
  6191. ΓòÉΓòÉΓòÉ 10. Implementing DMI on AIX ΓòÉΓòÉΓòÉ
  6192.  
  6193. This chapter describes the AIX files provided with the SystemView Agent program 
  6194. for use in creating applications and component instrumentation in an AIX 
  6195. environment. The following types of files are included: 
  6196.  
  6197.      Program files related to the service layer 
  6198.  
  6199.      Example files for an AIX management application and component, including 
  6200.       overlay and direct-interface instrumentation for the component 
  6201.  
  6202.  The chapter also presents any implementation considerations that are specific 
  6203.  to AIX. 
  6204.  
  6205.  
  6206. ΓòÉΓòÉΓòÉ 10.1. Program Files ΓòÉΓòÉΓòÉ
  6207.  
  6208. AIX Program Files displays a list of AIX program files provided with the 
  6209. SystemView Agent program. The subdirectory indicating a file's location is the 
  6210. default subdirectory used during installation. If you installed SystemView 
  6211. Agent in a different directory, adjust the file location accordingly. 
  6212.  
  6213. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6214. Γöé Table 55. AIX Program Files                          Γöé
  6215. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6216. Γöé FILE NAME  Γöé LOCATION         Γöé DESCRIPTION              Γöé
  6217. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6218. Γöé dmisl    Γöé /usr/lpp/sva/bin     Γöé The service layer executable file.  Γöé
  6219. Γöé       Γöé              Γöé You must start this program before  Γöé
  6220. Γöé       Γöé              Γöé any applications can access the    Γöé
  6221. Γöé       Γöé              Γöé service layer.            Γöé
  6222. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6223. Γöé dmisl.cat  Γöé /usr/lpp/sva/nls/en_US  Γöé The message file containing all mes- Γöé
  6224. Γöé       Γöé              Γöé sages associated with the service   Γöé
  6225. Γöé       Γöé              Γöé layer.                Γöé
  6226. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6227. Γöé dmix.cat  Γöé /usr/lpp/sva/nls/en_US  Γöé The message file containing the mes- Γöé
  6228. Γöé       Γöé              Γöé sages associated with the DMI     Γöé
  6229. Γöé       Γöé              Γöé browser.               Γöé
  6230. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6231. Γöé dmi.base.smΓöét/usr/lpp/sva/nls/en_US  Γöé The message file containing the mes- Γöé
  6232. Γöé       Γöé              Γöé sages associated with SMIT.      Γöé
  6233. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6234. Γöé dmix    Γöé /usr/lpp/sva/bin     Γöé The executable file for the DMI MIF  Γöé
  6235. Γöé       Γöé              Γöé browser.               Γöé
  6236. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6237. Γöé dmi.h    Γöé /usr/lpp/sva/include   Γöé The header file for the service    Γöé
  6238. Γöé       Γöé              Γöé layer.                Γöé
  6239. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6240. Γöé dmiapi.h  Γöé /usr/lpp/sva/include   Γöé The header file for the DMI proce-  Γöé
  6241. Γöé       Γöé              Γöé dure library.  Refer to DMI  Proce-  Γöé
  6242. Γöé       Γöé              Γöé dure Library (DMIAPI) for more    Γöé
  6243. Γöé       Γöé              Γöé information about the DMI procedure  Γöé
  6244. Γöé       Γöé              Γöé library.               Γöé
  6245. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6246. Γöé os_dmi.h  Γöé /usr/lpp/sva/include   Γöé The header file for the AIX oper-   Γöé
  6247. Γöé       Γöé              Γöé ating system.             Γöé
  6248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6249. Γöé error.h   Γöé /usr/lpp/sva/include   Γöé The header file for the service    Γöé
  6250. Γöé       Γöé              Γöé layer's error message file      Γöé
  6251. Γöé       Γöé              Γöé (dmisl.cat).             Γöé
  6252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6253. Γöé libdmisl.a Γöé /usr/lpp/sva/lib     Γöé DMI import library for use when com- Γöé
  6254. Γöé       Γöé              Γöé piling applications.  Refer to DMI  Γöé
  6255. Γöé       Γöé              Γöé Procedure Library (DMIAPI) for more  Γöé
  6256. Γöé       Γöé              Γöé information about the DMI procedure  Γöé
  6257. Γöé       Γöé              Γöé library.               Γöé
  6258. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6259. Γöé libdmiapi.aΓöé /usr/lpp/sva/lib     Γöé DMI import library for use when com- Γöé
  6260. Γöé       Γöé              Γöé piling applications that are not   Γöé
  6261. Γöé       Γöé              Γöé X-Windows applications.  Refer to   Γöé
  6262. Γöé       Γöé              Γöé DMI  Procedure Library (DMIAPI) for  Γöé
  6263. Γöé       Γöé              Γöé more information about the DMI pro-  Γöé
  6264. Γöé       Γöé              Γöé cedure library.            Γöé
  6265. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6266. Γöé libdmiapiX.Γöé /usr/lpp/sva/lib     Γöé The DMI import library for use when  Γöé
  6267. Γöé       Γöé              Γöé compiling applications that are    Γöé
  6268. Γöé       Γöé              Γöé X-Windows applications.  Refer to   Γöé
  6269. Γöé       Γöé              Γöé DMI  Procedure Library (DMIAPI) for  Γöé
  6270. Γöé       Γöé              Γöé more information about the DMI pro-  Γöé
  6271. Γöé       Γöé              Γöé cedure library.            Γöé
  6272. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6273.  
  6274.  
  6275. ΓòÉΓòÉΓòÉ 10.2. Example Files ΓòÉΓòÉΓòÉ
  6276.  
  6277. AIX Example Files displays a list of AIX example files provided with SystemView 
  6278. Agent. The subdirectory indicating a file's location is the default 
  6279. subdirectory used during installation. If you installed SystemView Agent in a 
  6280. different directory, adjust the file location accordingly. 
  6281.  
  6282. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6283. Γöé Table 56. AIX Example Files                          Γöé
  6284. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6285. Γöé FILE NAME    Γöé LOCATION         Γöé DESCRIPTION            Γöé
  6286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6287. Γöé miexamp.c    Γöé /usr/lpp/sva/samples   Γöé The source code used by the DMI  Γöé
  6288. Γöé         Γöé              Γöé MIF browser to interact with the Γöé
  6289. Γöé         Γöé              Γöé Management Interface.       Γöé
  6290. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6291. Γöé names.c     Γöé /usr/lpp/sva/samples   Γöé The source file for the overlay  Γöé
  6292. Γöé         Γöé              Γöé instrumentation for the sample  Γöé
  6293. Γöé         Γöé              Γöé component.            Γöé
  6294. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6295. Γöé Makefile.sampleΓöé /usr/lpp/sva/samples   Γöé The make file for use in com-   Γöé
  6296. Γöé         Γöé              Γöé piling and linking the sample   Γöé
  6297. Γöé         Γöé              Γöé component instrumentation     Γöé
  6298. Γöé         Γöé              Γöé (names.c).  You might need to   Γöé
  6299. Γöé         Γöé              Γöé modify this file to accommodate  Γöé
  6300. Γöé         Γöé              Γöé path differences in your system. Γöé
  6301. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6302. Γöé names.mif    Γöé /usr/lpp/sva/samples   Γöé The sample MIF file that defines Γöé
  6303. Γöé         Γöé              Γöé the NAMES component.  You might  Γöé
  6304. Γöé         Γöé              Γöé need to modify the path defi-   Γöé
  6305. Γöé         Γöé              Γöé nition in the file to accommo-  Γöé
  6306. Γöé         Γöé              Γöé date path differences in your   Γöé
  6307. Γöé         Γöé              Γöé system.              Γöé
  6308. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6309. Γöé namedir.c    Γöé /usr/lpp/sva/samples   Γöé The source file for the direct-  Γöé
  6310. Γöé         Γöé              Γöé interface instrumentation for   Γöé
  6311. Γöé         Γöé              Γöé the sample component.       Γöé
  6312. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6313. Γöé namedir.mif   Γöé /usr/lpp/sva/samples   Γöé The sample MIF file that defines Γöé
  6314. Γöé         Γöé              Γöé the NAMEDIR component.      Γöé
  6315. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6316.  
  6317.  
  6318. ΓòÉΓòÉΓòÉ 10.3. Implementation Considerations for AIX ΓòÉΓòÉΓòÉ
  6319.  
  6320. This section describes characteristics of the service layer that you need to be 
  6321. aware of when developing applications and instrumentation in an AIX 
  6322. environment. 
  6323.  
  6324.  
  6325. ΓòÉΓòÉΓòÉ 10.3.1. Synchronous and Asynchronous Components ΓòÉΓòÉΓòÉ
  6326.  
  6327. The example components NAMES and NAMEDIR are both designed to respond to 
  6328. requests in a synchronous manner. The component processes each request as it is 
  6329. received and does not process subsequent requests until the previous request 
  6330. has been answered. 
  6331.  
  6332. You can take a synchronous component and modify it to function asynchronously 
  6333. by doing the following: 
  6334.  
  6335.      Create a thread that is blocked until a command is received from a 
  6336.       management application. 
  6337.  
  6338.      When the command is received, the component instrumentation queues the 
  6339.       command to the waiting thread and returns from the DmiCiInvoke() function 
  6340.       call immediately. The service layer continues operation and does not call 
  6341.       the component again until the first command has completed. 
  6342.  
  6343.      The thread processes the command just as it would in a synchronous 
  6344.       situation, but after the thread issues the callback to the service layer, 
  6345.       it returns to the blocked state or terminates. 
  6346.  
  6347.  This enables the service layer to process other requests. 
  6348.  
  6349.  
  6350. ΓòÉΓòÉΓòÉ 10.3.2. Service Layer Time-out ΓòÉΓòÉΓòÉ
  6351.  
  6352. If the AIX service layer provided with SystemView Agent issues a request to a 
  6353. component and the component takes longer than 15 seconds to respond, the 
  6354. service layer automatically deregisters the component. The service layer then 
  6355. terminates any other outstanding requests to the component. Further requests 
  6356. sent to the component yield an error (RC=1003; CPERR_CI_TERMINATED). 
  6357.  
  6358. The DMI browser continues to display the component icon until the component is 
  6359. deinstalled. If you attempt to expand the icon after the time-out has occurred, 
  6360. the DMI browser returns an error. 
  6361.  
  6362.  
  6363. ΓòÉΓòÉΓòÉ 10.3.3. Compiling Overlay Components ΓòÉΓòÉΓòÉ
  6364.  
  6365. If you are developing an overlay component in AIX, use the -e DmiCiEntryPoint 
  6366. option when linking the program. This flag changes the entry point of the 
  6367. component from "main" to "DmiCiEntryPoint". DmiCiEntryPoint is a function that 
  6368. provides the service layer with the function addresses of DmiCiInvoke() and 
  6369. DmiCiCancel(). The service layer needs these addresses to communicate with the 
  6370. overlay component and requires DmiCiEntryPoint to be the entry point of the 
  6371. overlay component because of programming considerations in AIX. 
  6372.  
  6373. The following example indicates how these flags can be used in an AIX makefile: 
  6374.  
  6375.  names:  names.o Makefile $(SLLIBS)
  6376.         $(CCC) -o $@ -e DmiCiEntryPoint names.o $(LINKLIBDIR) $(LIBS)
  6377.  
  6378.  
  6379. ΓòÉΓòÉΓòÉ 10.3.4. Security Considerations with Overlay Components ΓòÉΓòÉΓòÉ
  6380.  
  6381. Because overlay component instrumentation code runs as part of the service 
  6382. layer and is executed with root privileges, these components must be installed 
  6383. in the /usr/lpp/sva/overlay directory. You must have root privileges to write 
  6384. to this directory. 
  6385.  
  6386. Changing the privileges of the /usr/lpp/sva/overlay directory could allow a 
  6387. non-root user to install a component that would then run with root privileges, 
  6388. creating a potential security exposure. For this reason, it is important that 
  6389. you ensure that the /usr/lpp/sva/overlay directory is only writeable by those 
  6390. with root privileges. 
  6391.  
  6392.  
  6393. ΓòÉΓòÉΓòÉ 11. Implementing DMI on Windows NT/Windows 95 ΓòÉΓòÉΓòÉ
  6394.  
  6395. This chapter describes the Win32 files provided with the SystemView Agent 
  6396. program for use in creating applications and component instrumentation in a 
  6397. Windows NT or Windows 95 environment. The following types of files are 
  6398. included: 
  6399.  
  6400.      Program files related to the service layer 
  6401.  
  6402.      Example files for a Windows NT/Windows 95 management application and 
  6403.       component, including overlay and direct-interface instrumentation for the 
  6404.       component 
  6405.  
  6406.  The chapter also presents any implementation considerations that are specific 
  6407.  to Windows NT/Windows 95. 
  6408.  
  6409.  
  6410. ΓòÉΓòÉΓòÉ 11.1. Program Files ΓòÉΓòÉΓòÉ
  6411.  
  6412. Windows NT/Windows 95 Program Files displays a list of Windows NT/Windows 95 
  6413. program files provided with the SystemView Agent program. C:\SVA is the default 
  6414. subdirectory used during installation. If you installed SystemView Agent in a 
  6415. different drive or directory, adjust the file location accordingly. 
  6416.  
  6417. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6418. Γöé Table 57. Windows NT/Windows 95 Program Files                 Γöé
  6419. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6420. Γöé FILE NAME  Γöé LOCATION         Γöé DESCRIPTION              Γöé
  6421. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6422. Γöé DMISLSRV.EXΓöé "C:\SVA"\DMI\BIN     Γöé The service layer executable file   Γöé
  6423. Γöé       Γöé              Γöé for Window NT.  You must start this  Γöé
  6424. Γöé       Γöé              Γöé program before any applications can  Γöé
  6425. Γöé       Γöé              Γöé access the service layer.       Γöé
  6426. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6427. Γöé DMISLAPP.EXΓöé "C:\SVA"\DMI\BIN     Γöé The service layer executable file   Γöé
  6428. Γöé       Γöé              Γöé for Window 95.  You must start this  Γöé
  6429. Γöé       Γöé              Γöé program before any applications can  Γöé
  6430. Γöé       Γöé              Γöé access the service layer.       Γöé
  6431. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6432. Γöé DMIAPI32.DLΓöé "C:\SVA"\DMI\BIN     Γöé The dynamic link library (DLL) for  Γöé
  6433. Γöé       Γöé              Γöé the DMI procedure library.  The    Γöé
  6434. Γöé       Γöé              Γöé SystemView Agent installation     Γöé
  6435. Γöé       Γöé              Γöé process adds this subdirectory to   Γöé
  6436. Γöé       Γöé              Γöé the PATH statement.          Γöé
  6437. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6438. Γöé DMIWIN32.EXΓöé "C:\SVA"\DMI\BIN     Γöé The executable file for the DMI MIF  Γöé
  6439. Γöé       Γöé              Γöé browser.               Γöé
  6440. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6441. Γöé DMI.H    Γöé "C:\SVA"\DMI\INCLUDE   Γöé The header file for the service    Γöé
  6442. Γöé       Γöé              Γöé layer.                Γöé
  6443. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6444. Γöé DMI_API.H  Γöé "C:\SVA"\DMI\INCLUDE   Γöé The header file for the DMI proce-  Γöé
  6445. Γöé       Γöé              Γöé dure library.  Refer to DMI  Proce-  Γöé
  6446. Γöé       Γöé              Γöé dure Library (DMIAPI) for more    Γöé
  6447. Γöé       Γöé              Γöé information about the DMI procedure  Γöé
  6448. Γöé       Γöé              Γöé library.               Γöé
  6449. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6450. Γöé OS_DMI.H  Γöé "C:\SVA"\DMI\INCLUDE   Γöé The header file for the Windows NT  Γöé
  6451. Γöé       Γöé              Γöé and Windows 95 operating systems.   Γöé
  6452. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6453. Γöé ERROR.H   Γöé "C:\SVA"\DMI\INCLUDE   Γöé The header file for the service    Γöé
  6454. Γöé       Γöé              Γöé layer's error messages.        Γöé
  6455. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6456. Γöé DMIAPI32.LIΓöé "C:\SVA"\DMI\LIB     Γöé The DMI import library for use with  Γöé
  6457. Γöé       Γöé              Γöé version 2.0 of the Microsoft Visual  Γöé
  6458. Γöé       Γöé              Γöé C++ product.  Refer to DMI  Proce-  Γöé
  6459. Γöé       Γöé              Γöé dure Library (DMIAPI) for more    Γöé
  6460. Γöé       Γöé              Γöé information about the DMI procedure  Γöé
  6461. Γöé       Γöé              Γöé library.               Γöé
  6462. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6463.  
  6464.  
  6465. ΓòÉΓòÉΓòÉ 11.2. Example Files ΓòÉΓòÉΓòÉ
  6466.  
  6467. Windows NT/Windows 95 Example Files displays a list of Windows NT/Windows 95 
  6468. example files provided with SystemView Agent. C:\SVA is the default 
  6469. subdirectory used during installation. If you installed SystemView Agent in a 
  6470. different drive or directory, adjust the file location accordingly. 
  6471.  
  6472. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6473. Γöé Table 58. Windows NT/Windows 95 Example Files                 Γöé
  6474. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6475. Γöé FILE NAME    Γöé LOCATION         Γöé DESCRIPTION            Γöé
  6476. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6477. Γöé DMI32.C     Γöé "C:\SVA"\DMI\EXAMPLES\MI Γöé The source code used by the DMI  Γöé
  6478. Γöé         Γöé              Γöé MIF browser to interact with the Γöé
  6479. Γöé         Γöé              Γöé Management Interface.       Γöé
  6480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6481. Γöé NAMES.C     Γöé "C:\SVA"\DMI\EXAMPLES\CI Γöé The source file for the overlay  Γöé
  6482. Γöé         Γöé              Γöé instrumentation for the sample  Γöé
  6483. Γöé         Γöé              Γöé component.            Γöé
  6484. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6485. Γöé NAMES.DEF    Γöé "C:\SVA"\DMI\EXAMPLES\CI Γöé The module definition file for  Γöé
  6486. Γöé         Γöé              Γöé use in building the DLL file for Γöé
  6487. Γöé         Γöé              Γöé the overlay instrumentation.   Γöé
  6488. Γöé         Γöé              Γöé The NAMES.DEF file defines the  Γöé
  6489. Γöé         Γöé              Γöé entry points and other charac-  Γöé
  6490. Γöé         Γöé              Γöé teristics of the DLL.       Γöé
  6491. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6492. Γöé NAMES.MAK    Γöé "C:\SVA"\DMI\EXAMPLES\CI Γöé The make file for use in com-   Γöé
  6493. Γöé         Γöé              Γöé piling and linking the sample   Γöé
  6494. Γöé         Γöé              Γöé component instrumentation     Γöé
  6495. Γöé         Γöé              Γöé (NAMES.C).  You can use this   Γöé
  6496. Γöé         Γöé              Γöé make file with version 2.0 of   Γöé
  6497. Γöé         Γöé              Γöé the Microsoft Visual C++     Γöé
  6498. Γöé         Γöé              Γöé product.  You might need to    Γöé
  6499. Γöé         Γöé              Γöé modify this file to accommodate  Γöé
  6500. Γöé         Γöé              Γöé path differences in your system. Γöé
  6501. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6502. Γöé NAMES.MIF    Γöé "C:\SVA"\DMI\EXAMPLES\CI Γöé The sample MIF file that defines Γöé
  6503. Γöé         Γöé              Γöé the NAMES component.  You might  Γöé
  6504. Γöé         Γöé              Γöé need to modify the path defi-   Γöé
  6505. Γöé         Γöé              Γöé nition in the file to accommo-  Γöé
  6506. Γöé         Γöé              Γöé date path differences in your   Γöé
  6507. Γöé         Γöé              Γöé system.              Γöé
  6508. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6509. Γöé NAMEDIR.C    Γöé "C:\SVA"\DMI\EXAMPLES\CI Γöé The source file for the direct-  Γöé
  6510. Γöé         Γöé              Γöé interface instrumentation for   Γöé
  6511. Γöé         Γöé              Γöé the sample component.       Γöé
  6512. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6513. Γöé NAMEDIR.MAK   Γöé "C:\SVA"\DMI\EXAMPLES\CI Γöé The make file for use in com-   Γöé
  6514. Γöé         Γöé              Γöé piling and linking the sample   Γöé
  6515. Γöé         Γöé              Γöé component instrumentation     Γöé
  6516. Γöé         Γöé              Γöé (NAMEDIR.C).  You can use this  Γöé
  6517. Γöé         Γöé              Γöé make file with version 2.0 of   Γöé
  6518. Γöé         Γöé              Γöé the Microsoft Visual C++     Γöé
  6519. Γöé         Γöé              Γöé product.  You might need to    Γöé
  6520. Γöé         Γöé              Γöé modify this file to accommodate  Γöé
  6521. Γöé         Γöé              Γöé path differences in your system. Γöé
  6522. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6523. Γöé NAMEDIR.MIF   Γöé "C:\SVA"\DMI\EXAMPLES\CI Γöé The sample MIF file that defines Γöé
  6524. Γöé         Γöé              Γöé the NAMEDIR component.      Γöé
  6525. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6526.  
  6527.  
  6528. ΓòÉΓòÉΓòÉ 11.3. Implementation Considerations for Windows NT/Windows 95 ΓòÉΓòÉΓòÉ
  6529.  
  6530. This section describes characteristics of the service layer that you need to be 
  6531. aware of when developing applications and instrumentation in a Windows 
  6532. NT/Windows 95 environment. 
  6533.  
  6534.  
  6535. ΓòÉΓòÉΓòÉ 11.3.1. 16-Bit to 32-Bit Thunking ΓòÉΓòÉΓòÉ
  6536.  
  6537. The service layer is a 32-bit application. If you are developing component 
  6538. instrumentation or a management application that is a 16-bit application, 
  6539. ensure that your application supports 16-bit to 32-bit thunking. 
  6540.  
  6541.  
  6542. ΓòÉΓòÉΓòÉ 11.3.2. Callback Threading ΓòÉΓòÉΓòÉ
  6543.  
  6544. The confirm callback that the service layer returns to an application is sent 
  6545. on a separate thread from that used by the application's executable file. The 
  6546. application can post a message directly on the callback. 
  6547.  
  6548. Ensure that your application does not block the callback thread. 
  6549.  
  6550.  
  6551. ΓòÉΓòÉΓòÉ 11.3.3. Synchronous and Asynchronous Components ΓòÉΓòÉΓòÉ
  6552.  
  6553. The example components NAMES and NAMEDIR are both designed to respond to 
  6554. requests in a synchronous manner. The component processes each request as it is 
  6555. received and does not process subsequent requests until the previous request 
  6556. has been answered. 
  6557.  
  6558. You can take a synchronous component and modify it to function asynchronously 
  6559. by doing the following: 
  6560.  
  6561.      Create a thread that is blocked until a command is received from a 
  6562.       management application. 
  6563.  
  6564.      When the command is received, the component instrumentation queues the 
  6565.       command to the waiting thread and returns from the DmiCiInvoke() function 
  6566.       call immediately. The service layer continues operation and does not call 
  6567.       the component again until the first command has completed. 
  6568.  
  6569.      The thread processes the command just as it would in a synchronous 
  6570.       situation, but after the thread issues the callback to the service layer, 
  6571.       it returns to the blocked state or terminates. 
  6572.  
  6573.  This enables the service layer to process other requests. 
  6574.  
  6575.  
  6576. ΓòÉΓòÉΓòÉ 11.3.4. Debugging Overlay Instrumentation on Windows NT ΓòÉΓòÉΓòÉ
  6577.  
  6578. Overlay component instrumentation can be difficult to debug because of its 
  6579. transitory nature. To facilitate this kind of debugging, you can use a debug 
  6580. option when running the service layer on Windows NT. Refer to the SystemView 
  6581. Agent for Win32 User's Guide for information on how to stop the service layer. 
  6582.  
  6583. Because the service layer normally runs as a background process, you must stop 
  6584. the service layer (if it's already running) before you use this option. 
  6585.  
  6586. To start the service layer with the debug option, enter the following command 
  6587. from a DOS command prompt: 
  6588.  
  6589. START DMISLSRV DEBUG
  6590.  
  6591. If the subdirectory containing the service layer executable file is not in your 
  6592. PATH statement, enter the appropriate drive and path as part of the command. 
  6593.  
  6594. When the service layer is loaded, a debug address is displayed. When you set a 
  6595. breakpoint at this address, execution stops just before the DmiCiInvoke() 
  6596. function call is issued. At this point the overlay component DLL is already 
  6597. loaded, and you can specify breakpoints in the instrumentation wherever you 
  6598. need them. 
  6599.  
  6600. You can display the version of the service layer on Windows NT by issuing the 
  6601. following from a DOS command prompt: 
  6602.  
  6603. DMISLSRV VERSION
  6604.  
  6605. This displays version information without starting the service layer. You can 
  6606. issue this command while the service layer is running. 
  6607.  
  6608.  
  6609. ΓòÉΓòÉΓòÉ 11.3.5. Service Layer Time-out ΓòÉΓòÉΓòÉ
  6610.  
  6611. If the Windows NT/Windows 95 service layer provided with SystemView Agent 
  6612. issues a request to a component and the component takes longer than 15 seconds 
  6613. to respond, the service layer automatically deregisters the component. The 
  6614. service layer then terminates any other outstanding requests to the component. 
  6615. Further requests sent to the component yield an error (RC=1003; 
  6616. CPERR_CI_TERMINATED). 
  6617.  
  6618. The DMI browser continues to display the component icon until the component is 
  6619. deinstalled. If you attempt to expand the icon after the time-out has occurred, 
  6620. the DMI browser returns an error. 
  6621.  
  6622.  
  6623. ΓòÉΓòÉΓòÉ 12. Notices ΓòÉΓòÉΓòÉ
  6624.  
  6625. Second Edition (September 1996) 
  6626.  
  6627. The following paragraph does not apply to the United Kingdom or any country 
  6628. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  6629. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  6630. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  6631. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  6632. do not allow disclaimer of express or implied warranties in certain 
  6633. transactions, therefore, this statement may not apply to you. 
  6634.  
  6635. This publication could include technical inaccuracies or typographical errors. 
  6636. Changes are periodically made to the information herein; these changes will be 
  6637. incorporated in new editions of the publication. IBM may make improvements 
  6638. and/or changes in the product(s) and/or the program(s) described in this 
  6639. publication at any time. 
  6640.  
  6641. It is possible that this publication may contain reference to, or information 
  6642. about, IBM products (machines and programs), programming, or services that are 
  6643. not announced in your country.  Such references or information must not be 
  6644. construed to mean that IBM intends to announce such IBM products, programming, 
  6645. or services in your country. 
  6646.  
  6647. Requests for technical information about IBM products should be made to your 
  6648. IBM reseller or IBM marketing representative. 
  6649.  
  6650.  
  6651. ΓòÉΓòÉΓòÉ 12.1. Copyright Notices ΓòÉΓòÉΓòÉ
  6652.  
  6653. COPYRIGHT LICENSE: This publication contains printed sample application 
  6654. programs in source language, which illustrate OS/2 programming techniques. You 
  6655. may copy, modify, and distribute these sample programs in any form without 
  6656. payment to IBM, for the purposes of developing, using, marketing or 
  6657. distributing application programs conforming to the OS/2 application 
  6658. programming interface. 
  6659.  
  6660. Each copy of any portion of these sample programs or any derivative work, which 
  6661. is distributed to others, must include a copyright notice as follows: "(C) 
  6662. (your company name) (year).  All rights reserved." 
  6663.  
  6664. (C)Copyright International Business Machines Corporation 1995, 1996.  All 
  6665. rights reserved. 
  6666. Note to U.S. Government Users - Documentation related to restricted rights - 
  6667. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  6668. Schedule Contract with IBM Corp. 
  6669.  
  6670.  
  6671. ΓòÉΓòÉΓòÉ 12.2. Disclaimers ΓòÉΓòÉΓòÉ
  6672.  
  6673. References in this publication to IBM products, programs, or services do not 
  6674. imply that IBM intends to make these available in all countries in which IBM 
  6675. operates. Any reference to an IBM product, program or service is not intended 
  6676. to state or imply that only that IBM product, program, or service may be used. 
  6677. Subject to IBM's valid intellectual property or other legally protectable 
  6678. rights, any functionally equivalent product, program, or service may be used 
  6679. instead of the IBM product, program, or service. The evaluation and 
  6680. verification of operation in conjunction with other products, except those 
  6681. expressly designated by IBM, are the responsibility of the user. 
  6682.  
  6683. IBM may have patents or pending patent applications covering subject matter in 
  6684. this document. The furnishing of this document does not give you any license to 
  6685. these patents. You can send license inquiries, in writing, to: 
  6686.  
  6687.       IBM Director of Licensing 
  6688.       IBM Corporation 
  6689.       500 Columbus Avenue 
  6690.       Thornwood, NY  10594 
  6691.       U.S.A. 
  6692.  
  6693.  Asia-Pacific users can inquire, in writing, to the IBM Director of 
  6694.  Intellectual Property and Licensing, IBM World Trade Asia Corporation, 2-31 
  6695.  Roppongi 3-chome, Minato-ku, Tokyo 106, Japan. 
  6696.  
  6697.  Licensees of this program who wish to have information about it for the 
  6698.  purpose of enabling: (i) the exchange of information between independently 
  6699.  created programs and other programs (including this one) and (ii) the mutual 
  6700.  use of the information which has been exchanged, should contact IBM 
  6701.  Corporation, Department LZKS, 11400 Burnet Road, Austin, TX 78758 U.S.A.  Such 
  6702.  information may be available, subject to appropriate terms and conditions, 
  6703.  including in some cases, payment of a fee. 
  6704.  
  6705.  
  6706. ΓòÉΓòÉΓòÉ 12.3. Trademarks ΓòÉΓòÉΓòÉ
  6707.  
  6708. The following terms are trademarks of the IBM Corporation in the United States 
  6709. or other countries or both: 
  6710.  
  6711. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6712. Γöé Common User Access           Γöé DB2/2                 Γöé
  6713. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6714. Γöé DATABASE 2               Γöé FFST/2                Γöé
  6715. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6716. Γöé First Failure Support Technology/2   Γöé IBM                  Γöé
  6717. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6718. Γöé Operating System/2           Γöé OS/2                 Γöé
  6719. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6720. Γöé SystemView               Γöé                    Γöé
  6721. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6722.  
  6723. The following terms are trademarks of other companies: 
  6724.  
  6725.  Term              Trademark of 
  6726.  DMI               Desktop Management Task Force 
  6727.  DMTF              Desktop Management Task Force 
  6728.  Windows NT        Microsoft Corporation 
  6729.  Win32             Microsoft Corporation 
  6730.  X-Windows         Massachusetts Institute of Technology 
  6731.  
  6732.  Microsoft, Windows and the Windows 95 Logo are trademarks of Microsoft 
  6733.  Corporation. 
  6734.  
  6735.  Other company, product, and service names, which may be denoted by a double 
  6736.  asterisk (**), may be trademarks or service marks of others. 
  6737.  
  6738.  
  6739. ΓòÉΓòÉΓòÉ 13. Glossary ΓòÉΓòÉΓòÉ
  6740.  
  6741. This glossary includes terms and definitions from: 
  6742.  
  6743.      The American National Standard Dictionary for Information Systems, ANSI 
  6744.       X3.172-1990, copyright 1990 by the American National Standards Institute 
  6745.       (ANSI). Copies may be purchased from the American National Standards 
  6746.       Institute, 11 West 42nd Street, New York, New York  10036. Definitions 
  6747.       are identified by the symbol (A) after the definition. 
  6748.  
  6749.      The ANSI/EIA Standard-440-A, Fiber Optic Terminology. Copies may be 
  6750.       purchased from the Electronic Industries Association, 2001 Pennsylvania 
  6751.       Avenue, N.W., Washington, DC 20006. Definitions are identified by the 
  6752.       symbol (E) after the definition. 
  6753.  
  6754.      The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  6755.       Technical Committee 1, of the International Organization for 
  6756.       Standardization and the International Electrotechnical Commission 
  6757.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  6758.       identified by the symbol (I) after the definition; definitions taken from 
  6759.       draft international standards, committee drafts, and working papers being 
  6760.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  6761.       definition, indicating that final agreement has not yet been reached 
  6762.       among the participating National Bodies of SC1. 
  6763.  
  6764.      The IBM Dictionary of Computing, New York: McGraw-Hill, 1994. 
  6765.  
  6766.      Internet Request for Comments: 1208, Glossary of Networking Terms. 
  6767.  
  6768.      Internet Request for Comments: 1392, Internet Users' Glossary. 
  6769.  
  6770.      The Object-Oriented Interface Design: IBM Common User Access Guidelines, 
  6771.       Carmel, Indiana: Que, 1992. 
  6772.  
  6773.  The following cross-references are used in this glossary: 
  6774.  
  6775.  Contrast with: This refers to a term that has an opposed or substantively 
  6776.            different meaning. 
  6777.  
  6778.  Synonym for: This indicates that the term has the same meaning as a preferred 
  6779.            term, which is defined in its proper place in the glossary. 
  6780.  
  6781.  Synonymous with: This is a backward reference from a defined term to all other 
  6782.            terms that have the same meaning. 
  6783.  
  6784.  See:      This refers the reader to multiple-word terms that have the same 
  6785.            last word. 
  6786.  
  6787.  See also: This refers the reader to terms that have a related, but not 
  6788.            synonymous, meaning. 
  6789.  
  6790.  Deprecated term for: This indicates that the term should not be used. It 
  6791.            refers to a preferred term, which is defined in its proper place in 
  6792.            the glossary. 
  6793.  
  6794.  
  6795. ΓòÉΓòÉΓòÉ 13.1. A ΓòÉΓòÉΓòÉ
  6796.  
  6797.  
  6798. ΓòÉΓòÉΓòÉ 13.1.1. agent ΓòÉΓòÉΓòÉ
  6799.  
  6800. agent 
  6801.  
  6802.    1. As defined in the SNMP architecture, an agent or an SNMP server is 
  6803.       responsible for performing the network management functions requested by 
  6804.       the network management stations. 
  6805.  
  6806.    2. A role that management programs can assume when dealing with managed 
  6807.       objects. A management program assuming an agent role receives requests 
  6808.       from and sends notifications to managers (management application 
  6809.       programs) or other agents. 
  6810.  
  6811.    3. A system that assumes such a role.  System here can mean an operating 
  6812.       system or some other programming hardware, or microcode (including 
  6813.       licensed internal code) support that represents a set of resources. 
  6814.  
  6815.    4. A management program that represents one or more managed objects.  An 
  6816.       agent receives and services requests for operations and attributes, which 
  6817.       are defined for the managed objects it represents.  Also, an agent is 
  6818.       responsible for emitting notifications (special messages) when it detects 
  6819.       conditions in the managed object that require attention. 
  6820.  
  6821.    5. In the TCP/IP environment, a process running on a network node that 
  6822.       responds to requests and sends information. 
  6823.  
  6824.  
  6825. ΓòÉΓòÉΓòÉ 13.1.2. attribute ΓòÉΓòÉΓòÉ
  6826.  
  6827. attribute 
  6828.  
  6829. In the DMI, the smallest descriptive element of the Management Information 
  6830. Format. An attribute describes a single characteristic of a component. 
  6831.  
  6832.  
  6833. ΓòÉΓòÉΓòÉ 13.2. C ΓòÉΓòÉΓòÉ
  6834.  
  6835.  
  6836. ΓòÉΓòÉΓòÉ 13.2.1. component ΓòÉΓòÉΓòÉ
  6837.  
  6838. component 
  6839.  
  6840. In the DMI, a physical or logical element of a system, such as a piece of 
  6841. hardware or software. 
  6842.  
  6843.  
  6844. ΓòÉΓòÉΓòÉ 13.2.2. component instrumentation ΓòÉΓòÉΓòÉ
  6845.  
  6846. component instrumentation 
  6847.  
  6848. In the DMI, the executable code that provides the values for attributes in a 
  6849. component MIF file. Instrumentation can take one of two forms: 
  6850.  
  6851.      Runtime programs that are run by the service layer at the time a 
  6852.       management application makes a request 
  6853.  
  6854.      Direct-interface programs that run continuously and link to the service 
  6855.       layer when a management application makes a request 
  6856.  
  6857.  
  6858. ΓòÉΓòÉΓòÉ 13.2.3. CONFIG.SYS file ΓòÉΓòÉΓòÉ
  6859.  
  6860. CONFIG.SYS file 
  6861.  
  6862. A file that contains configuration options for an OS/2 program installed on a 
  6863. workstation. 
  6864.  
  6865.  
  6866. ΓòÉΓòÉΓòÉ 13.3. D ΓòÉΓòÉΓòÉ
  6867.  
  6868.  
  6869. ΓòÉΓòÉΓòÉ 13.3.1. Desktop Management Interface (DMI) ΓòÉΓòÉΓòÉ
  6870.  
  6871. Desktop Management Interface (DMI) 
  6872.  
  6873. A protocol-independent set of interfaces defined by the Desktop Management Task 
  6874. Force (DMTF) to provide management applications with standardized access to 
  6875. information about hardware and software in a system. 
  6876.  
  6877.  
  6878. ΓòÉΓòÉΓòÉ 13.3.2. Desktop Management Task Force ΓòÉΓòÉΓòÉ
  6879.  
  6880. Desktop Management Task Force 
  6881.  
  6882. The Desktop Management Task Force (DMTF) is a vendor alliance which was 
  6883. convened to streamline the management of diverse operating systems commonly 
  6884. found in an enterprise.  The DMTF includes industry-wide workgroups, which are 
  6885. actively identifying the pieces of information which are necessary to manage 
  6886. specific categories of devices. 
  6887.  
  6888.  
  6889. ΓòÉΓòÉΓòÉ 13.3.3. DMI ΓòÉΓòÉΓòÉ
  6890.  
  6891. DMI 
  6892.  
  6893. Desktop Management Interface. 
  6894.  
  6895.  
  6896. ΓòÉΓòÉΓòÉ 13.3.4. DMTF ΓòÉΓòÉΓòÉ
  6897.  
  6898. DMTF 
  6899.  
  6900. Desktop Management Task Force. 
  6901.  
  6902.  
  6903. ΓòÉΓòÉΓòÉ 13.3.5. discovery ΓòÉΓòÉΓòÉ
  6904.  
  6905. discovery 
  6906.  
  6907. The automatic detection of network topology change, for example, new and 
  6908. deleted nodes or interfaces. 
  6909.  
  6910.  
  6911. ΓòÉΓòÉΓòÉ 13.3.6. drive ΓòÉΓòÉΓòÉ
  6912.  
  6913. drive 
  6914.  
  6915. The device used to read and write data on disks or diskettes. 
  6916.  
  6917.  
  6918. ΓòÉΓòÉΓòÉ 13.4. E ΓòÉΓòÉΓòÉ
  6919.  
  6920.  
  6921. ΓòÉΓòÉΓòÉ 13.4.1. event ΓòÉΓòÉΓòÉ
  6922.  
  6923. event 
  6924.  
  6925. In the DMI, an unsolicited notification sent from a component to the service 
  6926. layer. For example, an event can indicate that an error has occurred or that a 
  6927. new version of a software product has been installed. Events that are forwarded 
  6928. through the service layer to management applications are referred to as 
  6929. indications. 
  6930.  
  6931.  
  6932. ΓòÉΓòÉΓòÉ 13.5. G ΓòÉΓòÉΓòÉ
  6933.  
  6934.  
  6935. ΓòÉΓòÉΓòÉ 13.5.1. group ΓòÉΓòÉΓòÉ
  6936.  
  6937. group 
  6938.  
  6939. In the Management Information Format of the DMI, a group is a set of related 
  6940. attributes used in describing a component. 
  6941.  
  6942.  
  6943. ΓòÉΓòÉΓòÉ 13.6. H ΓòÉΓòÉΓòÉ
  6944.  
  6945.  
  6946. ΓòÉΓòÉΓòÉ 13.6.1. host name ΓòÉΓòÉΓòÉ
  6947.  
  6948. host name 
  6949.  
  6950. A unique name, set at the management protocol level, that identifies a node. 
  6951.  
  6952.  
  6953. ΓòÉΓòÉΓòÉ 13.7. I ΓòÉΓòÉΓòÉ
  6954.  
  6955.  
  6956. ΓòÉΓòÉΓòÉ 13.7.1. IBM Operating System/2 ΓòÉΓòÉΓòÉ
  6957.  
  6958. IBM Operating System/2 
  6959.  
  6960. The base operating system for OS/2 programs. 
  6961.  
  6962.  
  6963. ΓòÉΓòÉΓòÉ 13.7.2. ID ΓòÉΓòÉΓòÉ
  6964.  
  6965. ID 
  6966.  
  6967. Identification; identifier. 
  6968.  
  6969.  
  6970. ΓòÉΓòÉΓòÉ 13.7.3. instrumentation ΓòÉΓòÉΓòÉ
  6971.  
  6972. instrumentation 
  6973.  
  6974. In the DMI, the program code that carries out management actions for a 
  6975. component. 
  6976.  
  6977.  
  6978. ΓòÉΓòÉΓòÉ 13.8. K ΓòÉΓòÉΓòÉ
  6979.  
  6980.  
  6981. ΓòÉΓòÉΓòÉ 13.8.1. key attribute ΓòÉΓòÉΓòÉ
  6982.  
  6983. key attribute 
  6984.  
  6985. In the DMI, the attribute whose identifier (ID) is used as an index into a 
  6986. table. The group to which the key attribute belongs represents a row (or 
  6987. instance) of the table. 
  6988.  
  6989.  
  6990. ΓòÉΓòÉΓòÉ 13.9. L ΓòÉΓòÉΓòÉ
  6991.  
  6992.  
  6993. ΓòÉΓòÉΓòÉ 13.9.1. load ΓòÉΓòÉΓòÉ
  6994.  
  6995. load 
  6996.  
  6997. To move data or programs into memory. 
  6998.  
  6999.  
  7000. ΓòÉΓòÉΓòÉ 13.10. M ΓòÉΓòÉΓòÉ
  7001.  
  7002.  
  7003. ΓòÉΓòÉΓòÉ 13.10.1. management application program ΓòÉΓòÉΓòÉ
  7004.  
  7005. management application program 
  7006.  
  7007. A program that manages some aspects of a distributed system by using management 
  7008. protocols to converse with remote systems. 
  7009.  
  7010.  
  7011. ΓòÉΓòÉΓòÉ 13.10.2. management information ΓòÉΓòÉΓòÉ
  7012.  
  7013. management information 
  7014.  
  7015. Information within an open system that can be transferred by network management 
  7016. protocols. 
  7017.  
  7018.  
  7019. ΓòÉΓòÉΓòÉ 13.10.3. management information base (MIB) ΓòÉΓòÉΓòÉ
  7020.  
  7021. management information base (MIB) 
  7022.  
  7023.    1. A standard used to define SNMP objects, such as packet counts and routing 
  7024.       tables, that are in a TCP/IP environment. 
  7025.  
  7026.    2. All of the accessible information on a managed network. 
  7027.  
  7028.    3. A collection of managed-object definitions. 
  7029.  
  7030.    4. A set of variable bindings that reflect the current state of an SNMP 
  7031.       agent. Extensions to the MIB can be added by a business enterprise. 
  7032.  
  7033.  
  7034. ΓòÉΓòÉΓòÉ 13.10.4. Management Information Format ΓòÉΓòÉΓòÉ
  7035.  
  7036. Management Information Format 
  7037.  
  7038. The format specified by the DMI for defining the aspects of a component that 
  7039. can be managed. Text files that conform to the MIF format are referred to as 
  7040. MIF files. 
  7041.  
  7042.  
  7043. ΓòÉΓòÉΓòÉ 13.10.5. MIB ΓòÉΓòÉΓòÉ
  7044.  
  7045. MIB 
  7046.  
  7047. Management information base. 
  7048.  
  7049.  
  7050. ΓòÉΓòÉΓòÉ 13.10.6. MIF ΓòÉΓòÉΓòÉ
  7051.  
  7052. MIF 
  7053.  
  7054. Management Information Format 
  7055.  
  7056.  
  7057. ΓòÉΓòÉΓòÉ 13.10.7. MIF file ΓòÉΓòÉΓòÉ
  7058.  
  7059. MIF file 
  7060.  
  7061. In the DMI, a text file that conforms to the format of the MIF and describes 
  7062. all aspects of a component that can be managed. 
  7063.  
  7064.  
  7065. ΓòÉΓòÉΓòÉ 13.11. O ΓòÉΓòÉΓòÉ
  7066.  
  7067.  
  7068. ΓòÉΓòÉΓòÉ 13.11.1. object ID (OID) ΓòÉΓòÉΓòÉ
  7069.  
  7070. object ID (OID) 
  7071.  
  7072. The unique name identification of a management information base object. 
  7073.  
  7074.  
  7075. ΓòÉΓòÉΓòÉ 13.11.2. OID ΓòÉΓòÉΓòÉ
  7076.  
  7077. OID 
  7078.  
  7079. Object ID. 
  7080.  
  7081.  
  7082. ΓòÉΓòÉΓòÉ 13.12. P ΓòÉΓòÉΓòÉ
  7083.  
  7084.  
  7085. ΓòÉΓòÉΓòÉ 13.12.1. process ΓòÉΓòÉΓòÉ
  7086.  
  7087. process 
  7088.  
  7089.    1. A unique, finite course of events defined by its purpose or by its 
  7090.       effect, achieved under defined conditions. 
  7091.  
  7092.    2. Any operation or combination of operations on data. 
  7093.  
  7094.    3. A function being performed or waiting to be performed. 
  7095.  
  7096.    4. A program in operation; for example, a daemon is a system process that is 
  7097.       always running on the system. 
  7098.  
  7099.    5. An address space, one or more threads of control that run within that 
  7100.       address space, and the required system resources. 
  7101.  
  7102.    6. A collection of system resources that include one or more threads of 
  7103.       execution that perform a task. 
  7104.  
  7105.  
  7106. ΓòÉΓòÉΓòÉ 13.12.2. protocol ΓòÉΓòÉΓòÉ
  7107.  
  7108. protocol 
  7109.  
  7110.    1. A set of semantic and syntactic rules that determines the behavior of 
  7111.       functional units in achieving communication. (I) Protocols can determine 
  7112.       low-level details of machine-to-machine interfaces, such as the order in 
  7113.       which bits from a byte are sent; they can also determine high-level 
  7114.       exchanges between application programs, such as file transfer. 
  7115.  
  7116.    2. A set of rules governing the operation of functional units of a 
  7117.       communication system that must be followed if communication is to take 
  7118.       place. 
  7119.  
  7120.    3. In Open Systems Interconnection architecture, a set of semantic and 
  7121.       syntactic rules that determine the behavior of entities in the same layer 
  7122.       in performing communication functions. (T) 
  7123.  
  7124.  
  7125. ΓòÉΓòÉΓòÉ 13.12.3. Request For Comments (RFC) ΓòÉΓòÉΓòÉ
  7126.  
  7127. Request For Comments (RFC) 
  7128.  
  7129. A series of documents that covers a broad range of topics affecting 
  7130. internetwork communication. Some RFCs are established as Internet standards. 
  7131.  
  7132.  
  7133. ΓòÉΓòÉΓòÉ 13.12.4. RFC ΓòÉΓòÉΓòÉ
  7134.  
  7135. RFC 
  7136.  
  7137. Request for Comments 
  7138.  
  7139.  
  7140. ΓòÉΓòÉΓòÉ 13.13. S ΓòÉΓòÉΓòÉ
  7141.  
  7142.  
  7143. ΓòÉΓòÉΓòÉ 13.13.1. Simple Network Management Protocol (SNMP) ΓòÉΓòÉΓòÉ
  7144.  
  7145. Simple Network Management Protocol (SNMP) 
  7146.  
  7147.    1. A protocol that allows network management by elements, such as gateways, 
  7148.       routers, and hosts. This protocol provides a means of communication 
  7149.       between network elements regarding network resources. 
  7150.  
  7151.    2. A protocol running above TCP/IP that is used to exchange management 
  7152.       information. 
  7153.  
  7154.    3. A protocol running above the User Datagram Protocol (UDP) used to 
  7155.       exchange network management information. 
  7156.  
  7157.  
  7158. ΓòÉΓòÉΓòÉ 13.13.2. SNMP ΓòÉΓòÉΓòÉ
  7159.  
  7160. SNMP 
  7161.  
  7162. Simple Network Management Protocol. 
  7163.  
  7164.  
  7165. ΓòÉΓòÉΓòÉ 13.13.3. system ΓòÉΓòÉΓòÉ
  7166.  
  7167. system 
  7168.  
  7169.    1. A computer and its associated devices and programs. 
  7170.  
  7171.    2. An end point of a communications link or a junction common to two or more 
  7172.       links in a network.  Systems can be processors, communication 
  7173.       controllers, cluster controllers, terminals, workstations, clients, 
  7174.       requesters, or servers. 
  7175.  
  7176.  
  7177. ΓòÉΓòÉΓòÉ 13.14. T ΓòÉΓòÉΓòÉ
  7178.  
  7179.  
  7180. ΓòÉΓòÉΓòÉ 13.14.1. TCP/IP ΓòÉΓòÉΓòÉ
  7181.  
  7182. TCP/IP 
  7183.  
  7184. Transmission Control Protocol/Internet Protocol. 
  7185.  
  7186.  
  7187. ΓòÉΓòÉΓòÉ 13.14.2. topology ΓòÉΓòÉΓòÉ
  7188.  
  7189. topology 
  7190.  
  7191. The schematic arrangement of the links and nodes of a network. 
  7192.  
  7193.  
  7194. ΓòÉΓòÉΓòÉ 13.14.3. Transmission Control Protocol/Internet Protocol (TCP/IP) ΓòÉΓòÉΓòÉ
  7195.  
  7196. Transmission Control Protocol/Internet Protocol (TCP/IP) 
  7197.  
  7198. A set of communication protocols that supports peer-to-peer connectivity 
  7199. functions for both local and wide-area networks. 
  7200.  
  7201.  
  7202. ΓòÉΓòÉΓòÉ 13.14.4. trap ΓòÉΓòÉΓòÉ
  7203.  
  7204. trap 
  7205.  
  7206.    1. An unprogrammed conditional jump to a specified address that is 
  7207.       automatically activated by hardware.  A recording is made of the location 
  7208.       from which the jump occurred. (I) 
  7209.  
  7210.    2. An unsolicited event generated by an agent and forwarded to a manager. 
  7211.       Traps inform the manager of changes that occur in the network. 
  7212.  
  7213.  
  7214. ΓòÉΓòÉΓòÉ 13.15. U ΓòÉΓòÉΓòÉ
  7215.  
  7216.  
  7217. ΓòÉΓòÉΓòÉ 13.15.1. UDP ΓòÉΓòÉΓòÉ
  7218.  
  7219. UDP 
  7220.  
  7221. User Datagram Protocol. 
  7222.  
  7223.  
  7224. ΓòÉΓòÉΓòÉ 13.15.2. User Datagram Protocol (UDP) ΓòÉΓòÉΓòÉ
  7225.  
  7226. User Datagram Protocol (UDP) 
  7227.  
  7228. In IP, a packet-level protocol built directly on the Internet protocol layer. 
  7229. UDP is used under SNMP for application-to-application programs between IP host 
  7230. systems. 
  7231.  
  7232.  
  7233. ΓòÉΓòÉΓòÉ 14. Bibliography ΓòÉΓòÉΓòÉ
  7234.  
  7235. This bibliography contains a list of publications pertaining to the product and 
  7236. related subjects. 
  7237.  
  7238.  
  7239. ΓòÉΓòÉΓòÉ 14.1. SystemView Agent Publications ΓòÉΓòÉΓòÉ
  7240.  
  7241. The following paragraphs briefly describe the library for Version 1 of the 
  7242. SystemView Agent program: 
  7243.  
  7244. SystemView Agent User's Guide (SVAG-USR2) 
  7245.  
  7246. This book provides instructions for installing the SystemView Agent package and 
  7247. using the MIF browser and describes communication with SNMP management 
  7248. applications. 
  7249.  
  7250. SystemView Agent DMI Programmer's Guide (SVAG-DMIP) 
  7251.  
  7252. This books describes the operation of the DMI, including the command blocks and 
  7253. the conventions of the MIF. The book also discusses how to enable components 
  7254. for DMI access and how DMI information is made available to SNMP management 
  7255. applications. 
  7256.  
  7257. SystemView Agent DPI Programmer's Guide (SVAG-DPIP) 
  7258.  
  7259. This book describes the distributed protocol interface (DPI), including 
  7260. programming concepts, basic API functions, and examples. 
  7261.  
  7262.  
  7263. ΓòÉΓòÉΓòÉ 14.2. Desktop Management Task Force Publications ΓòÉΓòÉΓòÉ
  7264.  
  7265. The following publications are available from the Desktop Management Task 
  7266. Force: 
  7267.  
  7268. Desktop Management Interface Specification, Version 1.1 
  7269.  
  7270.  
  7271. ΓòÉΓòÉΓòÉ 14.3. Internet Request for Comments Documents ΓòÉΓòÉΓòÉ
  7272.  
  7273. The Internet protocol suite is still evolving through Requests for Comments 
  7274. (RFCs).  New protocols are being designed and implemented by researchers and 
  7275. are brought to the attention of the Internet community in the form of RFCs. 
  7276.  
  7277. As networks have grown in size and complexity, SNMP has emerged as the Internet 
  7278. network management standard. The following RFCs provide information relevant to 
  7279. SNMP and related to SystemView Agent: 
  7280.  
  7281. RFC 1155: Structure and Identification of Management Information for 
  7282. TCP/IP-based Internets 
  7283.  
  7284. This RFC provides a set of rules used to define and identify MIB objects. 
  7285.  
  7286. RFC 1157:  A Simple Network Management Protocol (SNMP) 
  7287.  
  7288. This RFC defines the protocol used to manage objects defined in a MIB. 
  7289.  
  7290. RFC 1212:  Concise MIB Definitions 
  7291.  
  7292. RFC 1213:  Management Information Base for Network Management of TCP/IP-based 
  7293. Internets:  MIB-II 
  7294.  
  7295. This RFC defines a base set of managed objects to be provided in a MIB. 
  7296.  
  7297. RFC 1592, SNMP Distributed Protocol Interface (DPI), Version 2.0 
  7298.  
  7299. This RFC describes the protocol to allow an SNMP agent to communicate with a 
  7300. subagent. This allows users to dynamically add, delete, or replace MIB objects 
  7301. without recompiling the SNMP agent. 
  7302.  
  7303. RFC 1901, Introduction to Community-based SNMPv2 
  7304.  
  7305. RFC 1902, Structure of Management Information for Version 2 of the Simple 
  7306. Network Management Protocol (SNMPv2) 
  7307.  
  7308. RFC 1903, Textual  Conventions for Version 2 of the Simple Network Management 
  7309. Protocol (SNMPv2) 
  7310.  
  7311. RFC 1904, Conformance  Statements for Version 2 of the Simple Network 
  7312. Management Protocol (SNMPv2) 
  7313.  
  7314. RFC 1905, Protocol Operations for Version 2 of the Simple Network Management 
  7315. Protocol (SNMPv2) 
  7316.  
  7317. RFC 1906, Transport Mappings for Version 2 of the Simple Network Management 
  7318. Protocol (SNMPv2) 
  7319.  
  7320. RFC 1907, Management Information Base for Version 2 of the Simple Network 
  7321. Management Protocol (SNMPv2) 
  7322.  
  7323. RFC 1908, Coexistence between Version 1 and Version 2 of the Internet-standard 
  7324. Network Management Framework 
  7325.  
  7326. RFC 1909, An Administrative Infrastructure for SNMPv2 
  7327.  
  7328. RFC 1910, User-based Security Model for SNMPv2