home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v1.zip / DDKX86 / BOOK / GRADD.INF (.txt) < prev    next >
OS/2 Help File  |  1995-04-18  |  403KB  |  13,882 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. About this Book ΓòÉΓòÉΓòÉ
  3.  
  4. The Graphics Adapter Device Driver Reference for OS/2 Warp, Version 3, PowerPC 
  5. Edition describes the Graphics Adapter Device Driver (GRADD) Model design, how 
  6. the components work together, and why GRADDs are a valuable addition to OS/2 
  7. Warp, PowerPC Edition device-driver support. 
  8.  
  9. Note: 
  10.  
  11. THE INFORMATION IN THIS DOCUMENT IS A PRELIMINARY VERSION AND IS SUBJECT TO 
  12. CHANGE. 
  13.  
  14. Detailed descriptions of control structures, data structures, and I/O formats 
  15. have been included to help you understand and use the interfaces. 
  16.  
  17. Knowledge of a programming language (such as C or assembler) that is used for 
  18. writing OS/2 applications is necessary, and you must be familiar with the 
  19. workings of the OS/2 operating system. 
  20.  
  21. This book consists of seven chapters, with supporting appendixes, as follows: 
  22.  
  23. Introduction to Graphics Adapter Device Drivers 
  24.           This chapter briefly describes the design philosophy of the Graphics 
  25.           Adapter Device Driver (GRADD) Model. 
  26.  
  27. GRADD Model Components 
  28.           This chapter provides details on each of the components and how they 
  29.           work together within the GRADD Model. 
  30.  
  31. Video Manager 
  32.           This chapter contains a list of the Video Manager Interface 
  33.           functions, as well as a detailed description of each. 
  34.  
  35. Graphics Adapter Device Drivers 
  36.           This chapter describes the device driver interface (DDI) for a GRADD, 
  37.           as well as how and when adding extensions is useful. Also included is 
  38.           a list of the Graphics Hardware Interface functions and a detailed 
  39.           description of each. In addition, this chapter describes the Enhanced 
  40.           Direct Interface Video Extension (EnDIVE) functions. 
  41.  
  42. VIDEOPMI DLL Exported Functions 
  43.           This chapter describes the format and syntax of the file used to 
  44.           define the data necessary to set a video mode while in OS/2 Protect 
  45.           Mode. 
  46.  
  47. VIDEO Protect-Mode Interface 
  48.           This chapter discusses the purpose of the VIDEO Protect-Mode 
  49.           Interface (PMI) used in OS/2 Warp, PowerPC Edition. It is an 
  50.           extension of the VESA SVPMI standard currently in use by the 
  51.           operating system's base and virtual video subsystems. The PMI 
  52.           provides a means of setting Super VGA video modes while in Protect 
  53.           Mode and of enabling their virtualization in multiple DOS sessions. 
  54.  
  55. Video Installation and Configuration 
  56.           This chapter details the Video Configuration Manager (VCMAN), 
  57.           including the functions used to install and configure video adapters 
  58.           and monitors. 
  59.  
  60. Appendixes 
  61.  
  62. Appendix A. Syntax Conventions 
  63.           This appendix shows the conventions that have been used for the 
  64.           parameter names found in the data types included in Appendix B. 
  65.  
  66. Appendix B. Data Types 
  67.           This appendix contains a description of the parameters for all the 
  68.           data types called by the Video Manager Interface, the Graphics 
  69.           Hardware Interface, the Video Configuration Manager, or the 
  70.           Protect-Mode Interface. 
  71.  
  72. Appendix C. Notices 
  73.           This appendix contains legal notices. 
  74.  
  75. Miscellaneous 
  76.           A glossary and an index are included. 
  77.  
  78.  
  79. ΓòÉΓòÉΓòÉ 2. Notices ΓòÉΓòÉΓòÉ
  80.  
  81. First Edition (April 1995) 
  82.  
  83. The following paragraph does not apply to the United Kingdom or any country 
  84. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  85. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  86. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  87. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  88. do not allow disclaimer of express or implied warranties in certain 
  89. transactions, therefore, this statement may not apply to you. 
  90.  
  91. This publication could include technical inaccuracies or typographical errors. 
  92. Changes are periodically made to the information herein; these changes will be 
  93. incorporated in new editions of the publication. IBM may make improvements 
  94. and/or changes in the product(s) and/or the program(s) described in this 
  95. publication at any time. 
  96.  
  97. It is possible that this publication may contain reference to, or information 
  98. about, IBM products (machines and programs), programming, or services that are 
  99. not announced in your country.  Such references or information must not be 
  100. construed to mean that IBM intends to announce such IBM products, programming, 
  101. or services in your country. 
  102.  
  103. Requests for technical information about IBM products should be made to your 
  104. IBM authorized reseller or IBM marketing representative. 
  105.  
  106.  
  107. ΓòÉΓòÉΓòÉ 2.1. Copyright Notices ΓòÉΓòÉΓòÉ
  108.  
  109. COPYRIGHT LICENSE: This publication contains printed sample application 
  110. programs in source language, which illustrate OS/2 programming techniques. You 
  111. may copy, modify, and distribute these sample programs in any form without 
  112. payment to IBM, for the purposes of developing, using, marketing or 
  113. distributing application programs conforming to the OS/2 application 
  114. programming interface. 
  115.  
  116. Each copy of any portion of these sample programs or any derivative work, which 
  117. is distributed to others, must include a copyright notice as follows: "(C) 
  118. (your company name) (year).  All rights reserved." 
  119.  
  120. (C) Copyright International Business Machines Corporation 1995. All rights 
  121. reserved. 
  122. Note to U.S. Government Users - Documentation related to restricted rights - 
  123. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  124. Schedule Contract with IBM Corp. 
  125.  
  126.  
  127. ΓòÉΓòÉΓòÉ 2.2. Disclaimers ΓòÉΓòÉΓòÉ
  128.  
  129. References in this publication to IBM products, programs, or services do not 
  130. imply that IBM intends to make these available in all countries in which IBM 
  131. operates. Any reference to an IBM product, program or service is not intended 
  132. to state or imply that only IBM's product, program, or service may be used. Any 
  133. functionally equivalent product, program, or service that does not infringe any 
  134. of IBM's intellectual property rights or other legally protectable rights may 
  135. be used instead of the IBM product, program, or service. Evaluation and 
  136. verification of operation in conjunction with other products, programs, or 
  137. services, except those expressly designated by IBM, are the user's 
  138. responsibility. 
  139.  
  140. IBM may have patents or pending patent applications covering subject matter in 
  141. this document. The furnishing of this document does not give you any license to 
  142. these patents. You can send license inquiries, in writing, to the IBM Director 
  143. of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood NY 10594, U.S.A. 
  144.  
  145.  
  146. ΓòÉΓòÉΓòÉ 2.3. Trademarks ΓòÉΓòÉΓòÉ
  147.  
  148. The following terms are trademarks of the IBM Corporation in the United States 
  149. or other countries: 
  150.  
  151. Common User Access
  152. CUA
  153. IBM
  154. Multimedia Presentation Manager/2
  155. OS/2
  156. OS/2 Warp
  157. Personal System/2
  158. Presentation Manager
  159. SAA
  160. Systems Application Architecture
  161. WIN-OS/2
  162. Workplace Shell
  163. XGA
  164.  
  165. The following terms are trademarks of other companies: 
  166.  
  167. Trademark   Owner 
  168. ATI         ATI Technologies, Inc. 
  169. Cirrus Logic Cirrus Logic, Inc. 
  170. MASM        Microsoft Corporation 
  171. PCMCIA      Personal Computer Memory Card International Association 
  172. S3          S3 Incorporated 
  173. SVPMI       Super VGA Protect Mode Interface 
  174. VDM         Geographics Systems, Ltd. 
  175. VESA        Video Electronics Standards Association 
  176. Viper VLB   Diamond Computer Systems, Inc. 
  177. Weitek      Weitek Corporation 
  178.  
  179. Windows is a trademark of Microsoft Corporation 
  180.  
  181. Other company, product, and service names, which may be denoted by a double 
  182. asterisk (**), may be trademarks or service marks of others. 
  183.  
  184.  
  185. ΓòÉΓòÉΓòÉ 3. Introduction to Graphics Adapter Device Drivers ΓòÉΓòÉΓòÉ
  186.  
  187. This chapter briefly describes the design and intent of the Graphics Adapter 
  188. Device Driver (GRADD) Model. Details on specific components of the GRADD Model 
  189. are located in GRADD Model Components. 
  190.  
  191. The GRADD Model is divided into several components that work together to 
  192. support a variety of operating system services for OS/2 Warp, Version 3, 
  193. PowerPC Edition on the same desktop. (Operating system services are defined as 
  194. "different operating systems running on top of the IBM Microkernel.") GRADD 
  195. components include the following: 
  196.  
  197.   o  Video Manager and the Video Manager Interface (VMI) protocol 
  198.  
  199.   o  Translation layers, one for each operating system service in OS/2 Warp, 
  200.      PowerPC Edition 
  201.  
  202.   o  SOFTDRAW for default software simulation of graphics functions 
  203.  
  204.   o  Graphics Adapter Device Drivers (GRADDs) and the Graphics Hardware 
  205.      Interface (GHI) protocol 
  206.  
  207. Video display device drivers in OS/2 Warp, PowerPC Edition are referred to as 
  208. GRADDs (Graphics Adapter Device Drivers). GRADDs provide video support to all 
  209. the graphics subsystems (operating system services) that can run on OS/2 Warp, 
  210. PowerPC Edition. A GRADD contains only the hardware-dependent code needed to do 
  211. graphic functions that are common among the different graphics subsystems. 
  212. These common functions are designed to act as a small set of building blocks 
  213. for the larger, more complex operations that are typically required by a 
  214. graphics engine. Translation layers exist between the graphics subsystems and 
  215. the components of the GRADD Model, providing access to the GRADD building 
  216. blocks. Each translation layer converts the more complex function calls given 
  217. by its graphics subsystem into the protocol required by the GRADD Model. 
  218.  
  219. The GRADD Model makes the development of video display drivers much easier and 
  220. faster than it was for OS/2 Releases 2.0 and earlier. This more efficient 
  221. development cycle is a result of the reduced set of mandatory functions within 
  222. a GRADD. Initialization, returning capabilities, returning mode information, 
  223. setting the mode, and setting the palette (if using 256 colors) are the only 
  224. mandatory GHI functions required for a GRADD Model device driver. 
  225.  
  226. If the graphics adapter supports direct access to video memory, all other GHI 
  227. functions are not mandatory. The GRADD Model provides a way to simulate the 
  228. drawing functions using a software library called SOFTDRAW. The simulated 
  229. functions include drawing bit maps and lines and handling pointer support. 
  230. Software simulation allows a developer to write a driver, in incremental 
  231. stages, that takes advantage of hardware acceleration, rather than forcing the 
  232. developer to write the entire driver at once. After the mandatory functions are 
  233. completed, a developer can invoke the software simulation for those optional 
  234. functions that have not yet been written to use the accelerated features of the 
  235. hardware. When an optional function is handled by a GRADD, the results can be 
  236. compared with the results of the software simulation. This comparison gives 
  237. developers a way to ensure that their GRADDs are producing correct output. 
  238.  
  239. For most developers, writing code based on the GRADD Model will be confined 
  240. exclusively to writing a GRADD. The other components handle commonly used 
  241. functions that do not need direct access to the hardware and, therefore, do not 
  242. need to be located in the GRADD. This design allows GRADDs to maintain a clean 
  243. and simple architecture so that developers can write device drivers easily and 
  244. quickly. 
  245.  
  246.  
  247. ΓòÉΓòÉΓòÉ 4. GRADD Model Components ΓòÉΓòÉΓòÉ
  248.  
  249. This chapter describes the individual components of the Graphics Adapter Device 
  250. Driver (GRADD) Model used for developing device drivers. 
  251.  
  252. The GRADD Model is made up of several components that coordinate the 
  253. communication between each of the running operating system services (graphic 
  254. subsystems) and the available graphics hardware. The components include the 
  255. following: 
  256.  
  257.   o  Video Manager (VMAN), the main component that ties all the components 
  258.      together in the GRADD model 
  259.  
  260.   o  Translation layers, each representing an OS/2 Warp, Version 3, PowerPC 
  261.      Edition operating system service 
  262.  
  263.   o  SOFTDRAW, which acts as a graphics library for VMAN and the system 
  264.  
  265.   o  One or more GRADDs that, together, represent the available video hardware 
  266.  
  267. Video Manager (VMAN):  The main job of VMAN is to synchronize the communication 
  268. between translation layers and a GRADD. VMAN also manages the graphics pointer. 
  269.  
  270. When an operating system service requests a graphics operation, the associated 
  271. translation layer sends one of the defined Video Manager Interface (VMI) 
  272. commands to VMAN. Upon receiving a VMI command, VMAN will either handle the 
  273. request or send it down to the appropriate GRADD. 
  274.  
  275. Translation Layers:  The translation layers convert function calls, made by the 
  276. graphics engines of the various operating system services, to the VMI protocol 
  277. required by VMAN. 
  278.  
  279. SOFTDRAW:  When a GRADD requests that a drawing operation be simulated in 
  280. software, VMAN can default to SOFTDRAW for the operation. 
  281.  
  282. Graphics Adapter Device Driver:  Executes the requested operation or returns it 
  283. for simulation. 
  284.  
  285. When a GRADD receives a GHI function call from VMAN that is not mandatory, the 
  286. GRADD has the option of performing the requested operation or returning the 
  287. request to VMAN with a return code of RC_SIMULATE. The RC_SIMULATE return code 
  288. informs VMAN that the operation needs to be simulated in software. 
  289.  
  290. The following figure graphically illustrates the components of the GRADD Model. 
  291.  
  292.  
  293. ΓòÉΓòÉΓòÉ 4.1. Video Manager (VMAN) ΓòÉΓòÉΓòÉ
  294.  
  295. This section describes the Video Manager (VMAN) component and how it fits into 
  296. the GRADD Model. 
  297.  
  298. When VMAN is initialized, a series of components is loaded and initialized. 
  299. These components include SOFTDRAW and the GRADDs that are needed for the 
  300. available graphics adapters. Each graphics adapter is not limited to a single 
  301. GRADD, however. 
  302.  
  303. The GRADD Model supports multiple GRADDs. If a developer wishes to extend the 
  304. GRADD Model or filter out operations, a filter GRADD can be placed between VMAN 
  305. and the main GRADD running the hardware. This form of linking GRADDs is called 
  306. chaining and provides a way of modifying a GRADD's behavior without rewriting 
  307. and recompiling the GRADD. "Adding Extensions" in Graphics Adapter Device 
  308. Drivers, discusses the specifics involved when extending the GRADD 
  309. architecture. 
  310.  
  311.  
  312. ΓòÉΓòÉΓòÉ 4.1.1. Video Manager Interface (VMI) ΓòÉΓòÉΓòÉ
  313.  
  314. The VMAN component relies on a special protocol to receive requests from the 
  315. translation layers. The VMAN protocol is called the Video Manager Interface 
  316. (VMI) and consists of a small set of operations, each of which is identified by 
  317. a unique function number. Separate function numbers are needed for each 
  318. operation because VMAN exports only one entry point for the translation layers 
  319. to communicate with VMAN. The exported function is called "VMIEntry." It 
  320. expects four parameters from each function call it receives from a translation 
  321. layer, as follows: 
  322.  
  323.  
  324. ULONG  VMIENTRY(GID gid, ULONG ulFunction, PVOID pIn, PVOID pOut);
  325.  
  326. Because the VMIEntry function receives many different types of requests from 
  327. the translation layers, the gid parameter is always the ID number of the GRADD 
  328. to receive the operation. The ulFunction parameter is the function number that 
  329. identifies the operation being requested. The last two parameters (pIn, pOut) 
  330. are pointers to input and output data structures that are unique to each VMI 
  331. function. 
  332.  
  333. Most of the operations VMAN receives from a translation layer are passed 
  334. directly to the appropriate GRADD. Each GRADD has its own exported function 
  335. called "HWEntry," which is the same function type as VMIEntry. The differences 
  336. between the VMAN protocol (VMI) and the protocol for the GRADDs (GHI) include 
  337. the following: 
  338.  
  339.   o  The VMI is a super set of the GHI. 
  340.  
  341.   o  The ulFunction parameter value changes to the appropriate VMI_CMD_ 
  342.      function name. 
  343.  
  344.  
  345. ΓòÉΓòÉΓòÉ 4.1.2. Pointer Management in the Video Manager ΓòÉΓòÉΓòÉ
  346.  
  347. VMAN is responsible for pointer management. When a pointer movement occurs, 
  348. VMAN is notified via the VMI_CMD_MOVEPTR function. VMAN will call down the 
  349. GRADD chain for the pointer update. The GRADD can either update the pointer or 
  350. return to VMAN for simulation. If RC_SIMULATE is returned, VMAN will simulate 
  351. the pointer movement by using the regular bitblit command. 
  352.  
  353. VMAN keeps information about the current state of the pointer. When a drawing 
  354. operation arrives, VMAN will check to see if the pointer needs to be removed 
  355. around the call. This situation typically arises when a software pointer is in 
  356. use. All drawing VMI commands that affect the display surface must include the 
  357. areas of the screen being updated by the primitive. VMAN uses this information 
  358. to determine if the pointer needs to be hidden before passing the drawing 
  359. command down the GRADD chain. Upon return from the drawing command, VMAN will 
  360. restore the pointer if it was previously taken down. 
  361.  
  362.  
  363. ΓòÉΓòÉΓòÉ 4.1.3. Video Helper Functions ΓòÉΓòÉΓòÉ
  364.  
  365. VMAN exports two helper services for operations that are common across all 
  366. GRADDs. These helper functions are described below. 
  367.  
  368. VHAllocMem:  This helper returns a 32-bit pointer to a piece of memory. The 
  369. caller of this function supplies the byte count required. The function 
  370. prototype is displayed below: 
  371.  
  372.  
  373.  PVOID VHAllocMem( ULONG );
  374.  
  375. VHFreeMem:  This helper frees memory that has been allocated via the VHAllocMem 
  376. helper. The function prototype is displayed below: 
  377.  
  378.  
  379.  ULONG VHFreeMem( PVOID );
  380.  
  381.  By using video helpers, a GRADD can be written without using calls that are 
  382. operating-system specific. 
  383.  
  384.  
  385. ΓòÉΓòÉΓòÉ 4.2. Translation Layers ΓòÉΓòÉΓòÉ
  386.  
  387. This section describes the translation layers, which gain access to the 
  388. hardware capabilities and available modes via the CHAININFO structure. The 
  389. CHAININFO structure is returned from the VMI_CMD_QUERYCHAININFO function. 
  390.  
  391. When the VMIEntry function receives an operation from a translation layer, VMAN 
  392. checks the function number and either handles the operation or forwards it to 
  393. the appropriate GRADD. VMAN will handle the operation if the GRADD returns an 
  394. RC_SIMULATE. The GRADD Model diagram shows how the VMAN component handles 
  395. communication among the various components and the paths that commands can take 
  396. during processing. 
  397.  
  398.  
  399. ΓòÉΓòÉΓòÉ 4.2.1. Translation Layer between OS/2 Graphics Engine and VMAN ΓòÉΓòÉΓòÉ
  400.  
  401. The translation layer for the OS/2 Graphics Engine (GRE) is called GRE2VMAN. 
  402. For a system that uses OS/2 as the dominant operating system service, GRE2VMAN 
  403. is the first translation layer and the first component of the GRADD model to be 
  404. loaded. When GRE2VMAN is loaded, it calls VMAN's VMIEntry function with a 
  405. VMI_CMD_INIT command. When VMAN receives a VMI_CMD_INIT for the first time, it 
  406. loads the other GRADD model components. 
  407.  
  408.  
  409. ΓòÉΓòÉΓòÉ 4.2.2. Virtual VMI Video Device Driver (VVMI) ΓòÉΓòÉΓòÉ
  410.  
  411. The virtual VMI video device driver, referred to as VVMI, provides a mechanism 
  412. for GDI2VMAN to call the video manager (VMAN). GDI2VMAN calls the VVMI by using 
  413. the VMI protocol. The VVMI then calls VMAN directly on behalf of GDI2VMAN. 
  414. VMAN, a shared library, exports a single entry point called VMIEntry. The VVMI 
  415. imports VMIEntry and calls VMAN directly. 
  416.  
  417.  
  418. ΓòÉΓòÉΓòÉ 4.2.3. Future Translation Layers ΓòÉΓòÉΓòÉ
  419.  
  420. In the future, other graphics subsystems can be adapted to work in the OS/2 
  421. Warp, Version 3, PowerPC Edition operating system. In order to accomplish this, 
  422. a translation layer must be provided (shown as 'n2VMAN' in the GRADD Model 
  423. diagram. This translation layer must map the graphics primitives of the 
  424. graphics subsystem to the appropriate VMI_CMD_ functions. 
  425.  
  426.  
  427. ΓòÉΓòÉΓòÉ 4.2.4. Translation Layer for Extensions ΓòÉΓòÉΓòÉ
  428.  
  429. The GRADD Model can be extended using the VMI extension protocol. Using this 
  430. protocol, a translation layer directs extension functions to a GRADD via the 
  431. VMI_CMD_EXTENSION function. In order to accomplish this, a translation layer 
  432. must be provided (shown as 'EXT2VMAN' in the GRADD Model diagram. 
  433.  
  434. See Adding Extensions for more information. 
  435.  
  436.  
  437. ΓòÉΓòÉΓòÉ 4.3. SOFTDRAW ΓòÉΓòÉΓòÉ
  438.  
  439. This section describes the SOFTDRAW component. SOFTDRAW is the default for any 
  440. simulated graphics functions for nonaccelerated graphics operations. 
  441.  
  442. SOFTDRAW exports base drawing functions (SDBitBlt and SDLINE) that are used by 
  443. VMAN to simulate graphics operations. SOFTDRAW provides a generic graphics 
  444. library. Given a pointer to a linear address (a VRAM bit map or system-memory 
  445. bit map), SOFTDRAW can draw the bits directly into the bit map. 
  446.  
  447.  
  448. ΓòÉΓòÉΓòÉ 4.4. Graphics Adapter Device Driver (GRADD) ΓòÉΓòÉΓòÉ
  449.  
  450. This section describes the Graphics Adapter Device Driver component and how 
  451. GRADDs interface with VMAN. 
  452.  
  453.  
  454. ΓòÉΓòÉΓòÉ 4.4.1. Graphics Hardware Interface (GHI) ΓòÉΓòÉΓòÉ
  455.  
  456. The entry point and functions supported by a GRADD are referred to as the 
  457. Graphics Hardware Interface (GHI). The differences between the VMAN protocol 
  458. (VMI) and the protocol for the GRADDs (GHI) include the following: 
  459.  
  460.   o  The GHI is a subset of the VMI. 
  461.  
  462.   o  The ulFunction parameter value changes to the appropriate GHI_CMD_ 
  463.      function name. 
  464.  
  465. Each GRADD has an exported function called "HWEntry," which is the same 
  466. function type as VMIEntry in VMAN. 
  467.  
  468.  
  469. ULONG  HWENTRY(GID gid, ULONG ulFunction, PVOID pIn, PVOID pOut);
  470.  
  471. HWEntry receives all of the operations from VMAN. 
  472.  
  473. For most systems, the GRADDs are the only components that access the video 
  474. hardware. A GRADD contains the code that uses the accelerated features of a 
  475. graphics adapter. If a GRADD returns RC_SIMULATE for a graphics operation, the 
  476. GRADD is giving permission for the SOFTDRAW component to draw directly to the 
  477. video memory of the hardware. The serialization of video memory is handled by 
  478. the Video Manager via the GHI_CMD_REQUESTHW function. 
  479.  
  480. Each GRADD must process the following GHI_CMD_ functions: 
  481.  
  482.   o  GHI_CMD_INIT 
  483.  
  484.   o  GHI_CMD_QUERYCAPS 
  485.  
  486.   o  GHI_CMD_QUERYMODES 
  487.  
  488.   o  GHI_CMD_SETMODE 
  489.  
  490.   o  GHI_CMD_PALETTE * 
  491.  
  492.      * This function is mandatory only when a 256-color mode has been chosen. 
  493.  
  494. The following GHI functions can return RC_SIMULATE and let VMAN handle the 
  495. operations: 
  496.  
  497.   o  GHI_CMD_BITBLT 
  498.  
  499.   o  GHI_CMD_LINE 
  500.  
  501.   o  GHI_CMD_SETPTR 
  502.  
  503.   o  GHI_CMD_MOVEPTR 
  504.  
  505.   o  GHI_CMD_SHOWPTR 
  506.  
  507. The GHI function numbers are assigned in such a way that they can be used as a 
  508. zero-based index into a function jump table. 
  509.  
  510.  
  511. ΓòÉΓòÉΓòÉ 4.4.2. Systems Management (RAS) ΓòÉΓòÉΓòÉ
  512.  
  513. Due to the performance-critical nature of the video graphics subsystem, all 
  514. systems management and RAS hooks should be placed in a filter GRADD. This will 
  515. ensure that the majority of users, who do not need this support, will not 
  516. experience the performance degradations caused by the addition of trace points 
  517. and hooks. 
  518.  
  519.  
  520. ΓòÉΓòÉΓòÉ 5. Video Manager ΓòÉΓòÉΓòÉ
  521.  
  522. This chapter describes the functions, called by the Video Manager, that are 
  523. designated by the prefix VMI_CMD_. The following table lists those functions 
  524. that have corresponding GHI_CMD_ functions in the Graphics Hardware Interface. 
  525.  
  526. Next, the Video Helper functions are listed; following that, in alphabetic 
  527. order, each function is described in detail. 
  528.  
  529.  
  530. ΓòÉΓòÉΓòÉ 5.1. VMI_CMD_xx Functions Identical to GHI_CMD_xx Functions ΓòÉΓòÉΓòÉ
  531.  
  532. There are only a few differences between the VMAN protocol, Video Manager 
  533. Interface (VMI), and the GRADD protocol, Graphics Hardware Interface (GHI). In 
  534. fact, the majority of the functions are identical, with only the prefix (VMI or 
  535. GHI) indicating to which component the function belongs. 
  536.  
  537. The common functions are as follows: 
  538.  
  539. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  540. ΓöéVideo Manager Interface (VMI) ΓöéGraphics Hardware Interface   Γöé
  541. Γöé                              Γöé(GHI)                         Γöé
  542. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  543. ΓöéVMI_CMD_BITBLT                ΓöéGHI_CMD_BITBLT                Γöé
  544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  545. ΓöéVMI_CMD_EVENT                 ΓöéGHI_CMD_EVENT                 Γöé
  546. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  547. ΓöéVMI_CMD_EXTENSION             ΓöéGHI_CMD_EXTENSION             Γöé
  548. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  549. ΓöéVMI_CMD_INIT                  ΓöéGHI_CMD_INIT                  Γöé
  550. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  551. ΓöéVMI_CMD_INITPROC              ΓöéGHI_CMD_INITPROC              Γöé
  552. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  553. ΓöéVMI_CMD_LINE                  ΓöéGHI_CMD_LINE                  Γöé
  554. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  555. ΓöéVMI_CMD_MOVEPTR               ΓöéGHI_CMD_MOVEPTR               Γöé
  556. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  557. ΓöéVMI_CMD_PALETTE               ΓöéGHI_CMD_PALETTE               Γöé
  558. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  559. ΓöéVMI_CMD_QUERYCAPS             ΓöéGHI_CMD_QUERYCAPS             Γöé
  560. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  561. ΓöéVMI_CMD_QUERYMODES            ΓöéGHI_CMD_QUERYMODES            Γöé
  562. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  563. ΓöéVMI_CMD_REQUESTHW             ΓöéGHI_CMD_REQUESTHW             Γöé
  564. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  565. ΓöéVMI_CMD_SETMODE               ΓöéGHI_CMD_SETMODE               Γöé
  566. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  567. ΓöéVMI_CMD_SETPTR                ΓöéGHI_CMD_SETPTR                Γöé
  568. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  569. ΓöéVMI_CMD_SHOWPTR               ΓöéGHI_CMD_SHOWPTR               Γöé
  570. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  571. ΓöéVMI_CMD_TERM                  ΓöéGHI_CMD_TERM                  Γöé
  572. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  573. ΓöéVMI_CMD_TERMPROC              ΓöéGHI_CMD_TERMPROC              Γöé
  574. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  575. ΓöéVMI_CMD_VRAM                  ΓöéGHI_CMD_VRAM                  Γöé
  576. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  577.  
  578. The only difference between the two types of functions (VMI_ and GHI_) is that 
  579. the ulFunction parameter in VMIEntry and HWEntry points to the respective VMI_ 
  580. or GHI_ function name. The Video Manager Interface functions are described in 
  581. this chapter. Refer to Graphics Adapter Device Drivers for descriptions of the 
  582. Graphics Hardware Interface functions and the EnDIVE functions. 
  583.  
  584. There is one function that is unique to VMAN and has no corresponding GHI 
  585. function: VMI_CMD_QUERYCHAININFO. 
  586.  
  587.  
  588. ΓòÉΓòÉΓòÉ 5.2. Video Helper Functions ΓòÉΓòÉΓòÉ
  589.  
  590. The video helper functions are listed below: 
  591.  
  592.   o  VHAllocMem 
  593.  
  594.   o  VHFreeMem 
  595.  
  596. The remainder of this chapter contains a detailed description of each of the 
  597. Video Helper and VMI functions. The functions are in alphabetic order by 
  598. function name. 
  599.  
  600.  
  601. ΓòÉΓòÉΓòÉ 5.3. VHAllocMem ΓòÉΓòÉΓòÉ
  602.  
  603.  
  604. ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Syntax ΓòÉΓòÉΓòÉ
  605.  
  606. /*******************************************/
  607. /* Description:  VHAllocMem returns a      */
  608. /* 32-bit pointer to a piece of memory.    */
  609. /* The caller of this function supplies    */
  610. /* the byte count required. This function  */
  611. /* is a helper service for operations that */
  612. /* are common across all GRADDs.           */
  613. /*******************************************/
  614. #include <ddi.h>
  615.  
  616. ULONG    cBytes;  /*  Number of bytes of memory required. */
  617. PVOID    rc;      /*  Return codes. */
  618.  
  619. rc = VHAllocMem(cBytes);
  620.  
  621.  
  622. ΓòÉΓòÉΓòÉ <hidden> VHAllocMem Parameter - cBytes ΓòÉΓòÉΓòÉ
  623.  
  624. cBytes (ULONG) - input 
  625.    Number of bytes of memory required. 
  626.  
  627.    Indicates the number of bytes of memory required for this allocation 
  628.    request. 
  629.  
  630.  
  631. ΓòÉΓòÉΓòÉ <hidden> VHAllocMem Return Value - rc ΓòÉΓòÉΓòÉ
  632.  
  633. rc (PVOID) - returns 
  634.    Return codes. 
  635.  
  636.      RC_SUCCESS     Returns pointer to allocated memory. 
  637.      RC_ERROR       Returns NULL pointer. 
  638.  
  639.  
  640. ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Parameters ΓòÉΓòÉΓòÉ
  641.  
  642. cBytes (ULONG) - input 
  643.    Number of bytes of memory required. 
  644.  
  645.    Indicates the number of bytes of memory required for this allocation 
  646.    request. 
  647.  
  648. rc (PVOID) - returns 
  649.    Return codes. 
  650.  
  651.      RC_SUCCESS     Returns pointer to allocated memory. 
  652.      RC_ERROR       Returns NULL pointer. 
  653.  
  654.  
  655. ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Remarks ΓòÉΓòÉΓòÉ
  656.  
  657. Memory is valid across all processes. 
  658.  
  659.  
  660. ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Topics ΓòÉΓòÉΓòÉ
  661.  
  662. Select an item: 
  663.  
  664. Syntax
  665. Parameters
  666. Returns
  667. Remarks
  668. Glossary
  669.  
  670.  
  671. ΓòÉΓòÉΓòÉ 5.4. VHFreeMem ΓòÉΓòÉΓòÉ
  672.  
  673.  
  674. ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Syntax ΓòÉΓòÉΓòÉ
  675.  
  676. /*******************************************/
  677. /* Description:  VHFreeMem frees memory    */
  678. /* that has been allocated via the         */
  679. /* VHAllocMem helper. This function is a   */
  680. /* helper service for operations that are  */
  681. /* common across all GRADDs.               */
  682. /*******************************************/
  683. #include <ddi.h>
  684.  
  685. PVOID    cBytes;  /*  Pointer to previous memory allocation. */
  686. ULONG    rc;      /*  Return codes. */
  687.  
  688. rc = VHFreeMem(cBytes);
  689.  
  690.  
  691. ΓòÉΓòÉΓòÉ <hidden> VHFreeMem Parameter - cBytes ΓòÉΓòÉΓòÉ
  692.  
  693. cBytes (PVOID) - input 
  694.    Pointer to previous memory allocation. 
  695.  
  696.    Pointer to memory previously allocated via VHAllocMem. 
  697.  
  698.  
  699. ΓòÉΓòÉΓòÉ <hidden> VHFreeMem Return Value - rc ΓòÉΓòÉΓòÉ
  700.  
  701. rc (ULONG) - returns 
  702.    Return codes. 
  703.  
  704.      RC_SUCCESS 
  705.      RC_ERROR 
  706.  
  707.  
  708. ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Parameters ΓòÉΓòÉΓòÉ
  709.  
  710. cBytes (PVOID) - input 
  711.    Pointer to previous memory allocation. 
  712.  
  713.    Pointer to memory previously allocated via VHAllocMem. 
  714.  
  715. rc (ULONG) - returns 
  716.    Return codes. 
  717.  
  718.      RC_SUCCESS 
  719.      RC_ERROR 
  720.  
  721.  
  722. ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Remarks ΓòÉΓòÉΓòÉ
  723.  
  724. None. 
  725.  
  726.  
  727. ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Topics ΓòÉΓòÉΓòÉ
  728.  
  729. Select an item: 
  730.  
  731. Syntax
  732. Parameters
  733. Returns
  734. Remarks
  735. Glossary
  736.  
  737.  
  738. ΓòÉΓòÉΓòÉ 5.5. VMI_CMD_BITBLT ΓòÉΓòÉΓòÉ
  739.  
  740.  
  741. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Syntax ΓòÉΓòÉΓòÉ
  742.  
  743. /*******************************************/
  744. /* Description:  VMI_CMD_BITBLT is called  */
  745. /* to blit a rectangle or series of        */
  746. /* rectangles to or from the video         */
  747. /* display. VMAN passes this command       */
  748. /* directly to the GRADD chain identified  */
  749. /* by the GRADD ID provided by the caller. */
  750. /*******************************************/
  751. #include <ddi.h>
  752.  
  753. GID      gid;         /*  ID of the GRADD. */
  754. ULONG    ulFunction;  /*  Set equal to VMI_CMD_BITBLT. */
  755. PVOID    pIn;         /*  Pointer to a BITBLTINFO data structure. */
  756. PVOID    pOut;        /*  Null; no output structure needed. */
  757. ULONG    rc;          /*  Return codes. */
  758.  
  759. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  760.  
  761.  
  762. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - gid ΓòÉΓòÉΓòÉ
  763.  
  764. gid (GID) - input 
  765.    ID of the GRADD. 
  766.  
  767.  
  768. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  769.  
  770. ulFunction (ULONG) - input 
  771.    Set equal to VMI_CMD_BITBLT. 
  772.  
  773.  
  774. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - pIn ΓòÉΓòÉΓòÉ
  775.  
  776. pIn (PVOID) - input 
  777.    Pointer to a BITBLTINFO data structure. 
  778.  
  779.  
  780. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - pOut ΓòÉΓòÉΓòÉ
  781.  
  782. pOut (PVOID) - output 
  783.    Null; no output structure needed. 
  784.  
  785.  
  786. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Return Value - rc ΓòÉΓòÉΓòÉ
  787.  
  788. rc (ULONG) - returns 
  789.    Return codes. 
  790.  
  791.      RC_SUCCESS 
  792.      RC_ERROR 
  793.  
  794.  
  795. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Parameters ΓòÉΓòÉΓòÉ
  796.  
  797. gid (GID) - input 
  798.    ID of the GRADD. 
  799.  
  800. ulFunction (ULONG) - input 
  801.    Set equal to VMI_CMD_BITBLT. 
  802.  
  803. pIn (PVOID) - input 
  804.    Pointer to a BITBLTINFO data structure. 
  805.  
  806. pOut (PVOID) - output 
  807.    Null; no output structure needed. 
  808.  
  809. rc (ULONG) - returns 
  810.    Return codes. 
  811.  
  812.      RC_SUCCESS 
  813.      RC_ERROR 
  814.  
  815.  
  816. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Remarks ΓòÉΓòÉΓòÉ
  817.  
  818. None. 
  819.  
  820.  
  821. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Topics ΓòÉΓòÉΓòÉ
  822.  
  823. Select an item: 
  824.  
  825. Syntax
  826. Parameters
  827. Returns
  828. Remarks
  829. Glossary
  830.  
  831.  
  832. ΓòÉΓòÉΓòÉ 5.6. VMI_CMD_EVENT ΓòÉΓòÉΓòÉ
  833.  
  834.  
  835. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Syntax ΓòÉΓòÉΓòÉ
  836.  
  837. /*******************************************/
  838. /* Description:  VMI_CMD_EVENT is called   */
  839. /* to notify a GRADD of specific events.   */
  840. /* VMAN sends this command directly to the */
  841. /* GRADD chain identified by the GRADD ID. */
  842. /*******************************************/
  843. #include <ddi.h>
  844.  
  845. GID      gid;         /*  ID of the GRADD. */
  846. ULONG    ulFunction;  /*  Set equal to VMI_CMD_EVENT. */
  847. PVOID    pIn;         /*  Pointer to an HWEVENTIN data structure. */
  848. PVOID    pOut;        /*  NULL; no output structure needed. */
  849. ULONG    rc;          /*  Return codes. */
  850.  
  851. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  852.  
  853.  
  854. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - gid ΓòÉΓòÉΓòÉ
  855.  
  856. gid (GID) - input 
  857.    ID of the GRADD. 
  858.  
  859.  
  860. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  861.  
  862. ulFunction (ULONG) - input 
  863.    Set equal to VMI_CMD_EVENT. 
  864.  
  865.  
  866. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - pIn ΓòÉΓòÉΓòÉ
  867.  
  868. pIn (PVOID) - input 
  869.    Pointer to an HWEVENTIN data structure. 
  870.  
  871.  
  872. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - pOut ΓòÉΓòÉΓòÉ
  873.  
  874. pOut (PVOID) - output 
  875.    NULL; no output structure needed. 
  876.  
  877.  
  878. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Return Value - rc ΓòÉΓòÉΓòÉ
  879.  
  880. rc (ULONG) - returns 
  881.    Return codes. 
  882.  
  883.      RC_UNSUPPORTED 
  884.      RC_SUCCESS 
  885.  
  886.  
  887. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Parameters ΓòÉΓòÉΓòÉ
  888.  
  889. gid (GID) - input 
  890.    ID of the GRADD. 
  891.  
  892. ulFunction (ULONG) - input 
  893.    Set equal to VMI_CMD_EVENT. 
  894.  
  895. pIn (PVOID) - input 
  896.    Pointer to an HWEVENTIN data structure. 
  897.  
  898. pOut (PVOID) - output 
  899.    NULL; no output structure needed. 
  900.  
  901. rc (ULONG) - returns 
  902.    Return codes. 
  903.  
  904.      RC_UNSUPPORTED 
  905.      RC_SUCCESS 
  906.  
  907.  
  908. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Remarks ΓòÉΓòÉΓòÉ
  909.  
  910. None. 
  911.  
  912.  
  913. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Topics ΓòÉΓòÉΓòÉ
  914.  
  915. Select an item: 
  916.  
  917. Syntax
  918. Parameters
  919. Returns
  920. Remarks
  921. Glossary
  922.  
  923.  
  924. ΓòÉΓòÉΓòÉ 5.7. VMI_CMD_EXTENSION ΓòÉΓòÉΓòÉ
  925.  
  926.  
  927. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Syntax ΓòÉΓòÉΓòÉ
  928.  
  929. /*******************************************/
  930. /* Description:  VMI_CMD_EXTENSION is      */
  931. /* called to send an extension command to  */
  932. /* a GRADD. VMAN sends this command        */
  933. /* directly to the GRADD chain identified  */
  934. /* by the GRADD ID provided by the caller. */
  935. /*******************************************/
  936. #include <ddi.h>
  937.  
  938. GID      gid;         /*  ID of the GRADD. */
  939. ULONG    ulFunction;  /*  Set equal to VMI_CMD_EXTENSION. */
  940. PVOID    pIn;         /*  Pointer to an HWEXTENSION data structure. */
  941. PVOID    pOut;        /*  Pointer to an extension-specific output structure. */
  942. ULONG    rc;          /*  Return codes. */
  943.  
  944. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  945.  
  946.  
  947. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - gid ΓòÉΓòÉΓòÉ
  948.  
  949. gid (GID) - input 
  950.    ID of the GRADD. 
  951.  
  952.  
  953. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - ulFunction ΓòÉΓòÉΓòÉ
  954.  
  955. ulFunction (ULONG) - input 
  956.    Set equal to VMI_CMD_EXTENSION. 
  957.  
  958.  
  959. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - pIn ΓòÉΓòÉΓòÉ
  960.  
  961. pIn (PVOID) - input 
  962.    Pointer to an HWEXTENSION data structure. 
  963.  
  964.  
  965. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - pOut ΓòÉΓòÉΓòÉ
  966.  
  967. pOut (PVOID) - output 
  968.    Pointer to an extension-specific output structure. 
  969.  
  970.  
  971. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Return Value - rc ΓòÉΓòÉΓòÉ
  972.  
  973. rc (ULONG) - returns 
  974.    Return codes. 
  975.  
  976.      RC_UNSUPPORTED 
  977.      RC_SUCCESS 
  978.      RC_ERROR 
  979.  
  980.  
  981. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Parameters ΓòÉΓòÉΓòÉ
  982.  
  983. gid (GID) - input 
  984.    ID of the GRADD. 
  985.  
  986. ulFunction (ULONG) - input 
  987.    Set equal to VMI_CMD_EXTENSION. 
  988.  
  989. pIn (PVOID) - input 
  990.    Pointer to an HWEXTENSION data structure. 
  991.  
  992. pOut (PVOID) - output 
  993.    Pointer to an extension-specific output structure. 
  994.  
  995. rc (ULONG) - returns 
  996.    Return codes. 
  997.  
  998.      RC_UNSUPPORTED 
  999.      RC_SUCCESS 
  1000.      RC_ERROR 
  1001.  
  1002.  
  1003. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Remarks ΓòÉΓòÉΓòÉ
  1004.  
  1005. None. 
  1006.  
  1007.  
  1008. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Topics ΓòÉΓòÉΓòÉ
  1009.  
  1010. Select an item: 
  1011.  
  1012. Syntax
  1013. Parameters
  1014. Returns
  1015. Remarks
  1016. Glossary
  1017.  
  1018.  
  1019. ΓòÉΓòÉΓòÉ 5.8. VMI_CMD_INIT ΓòÉΓòÉΓòÉ
  1020.  
  1021.  
  1022. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Syntax ΓòÉΓòÉΓòÉ
  1023.  
  1024. /*******************************************/
  1025. /* Description:  VMI_CMD_INIT informs the  */
  1026. /* Video Manager (VMAN) that a translation */
  1027. /* layer has been loaded and that VMAN may */
  1028. /* need to be  initialized. VMAN           */
  1029. /* initializes itself once only;           */
  1030. /* subsequent VMI_CMD_INIT calls are       */
  1031. /* ignored.  During the first              */
  1032. /* initialization, VMAN loads SOFTDRAW and */
  1033. /* all of the GRADDs specified by the      */
  1034. /* environment variables.                  */
  1035. /*******************************************/
  1036. #include <ddi.h>
  1037.  
  1038. GID      gid;         /*  NULL. */
  1039. ULONG    ulFunction;  /*  Set equal to VMI_CMD_INIT. */
  1040. PVOID    pIn;         /*  NULL. */
  1041. PVOID    pOut;        /*  NULL. */
  1042. ULONG    rc;          /*  Return codes. */
  1043.  
  1044. rc = VMIEntry(gid, ulFunction, pIn, pOut);
  1045.  
  1046.  
  1047. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - gid ΓòÉΓòÉΓòÉ
  1048.  
  1049. gid (GID) - input 
  1050.    NULL. 
  1051.  
  1052.  
  1053. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1054.  
  1055. ulFunction (ULONG) - input 
  1056.    Set equal to VMI_CMD_INIT. 
  1057.  
  1058.  
  1059. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - pIn ΓòÉΓòÉΓòÉ
  1060.  
  1061. pIn (PVOID) - input 
  1062.    NULL. 
  1063.  
  1064.  
  1065. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - pOut ΓòÉΓòÉΓòÉ
  1066.  
  1067. pOut (PVOID) - output 
  1068.    NULL. 
  1069.  
  1070.  
  1071. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Return Value - rc ΓòÉΓòÉΓòÉ
  1072.  
  1073. rc (ULONG) - returns 
  1074.    Return codes. 
  1075.  
  1076.      RC_SUCCESS 
  1077.      RC_ERROR 
  1078.  
  1079.  
  1080. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Parameters ΓòÉΓòÉΓòÉ
  1081.  
  1082. gid (GID) - input 
  1083.    NULL. 
  1084.  
  1085. ulFunction (ULONG) - input 
  1086.    Set equal to VMI_CMD_INIT. 
  1087.  
  1088. pIn (PVOID) - input 
  1089.    NULL. 
  1090.  
  1091. pOut (PVOID) - output 
  1092.    NULL. 
  1093.  
  1094. rc (ULONG) - returns 
  1095.    Return codes. 
  1096.  
  1097.      RC_SUCCESS 
  1098.      RC_ERROR 
  1099.  
  1100.  
  1101. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Remarks ΓòÉΓòÉΓòÉ
  1102.  
  1103. None. 
  1104.  
  1105.  
  1106. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Topics ΓòÉΓòÉΓòÉ
  1107.  
  1108. Select an item: 
  1109.  
  1110. Syntax
  1111. Parameters
  1112. Returns
  1113. Remarks
  1114. Glossary
  1115.  
  1116.  
  1117. ΓòÉΓòÉΓòÉ 5.9. VMI_CMD_INITPROC ΓòÉΓòÉΓòÉ
  1118.  
  1119.  
  1120. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Syntax ΓòÉΓòÉΓòÉ
  1121.  
  1122. /*******************************************/
  1123. /* Description:  VMI_CMD_INITPROC informs  */
  1124. /* VMAN that a new process is being        */
  1125. /* initialized. It indicates that this new */
  1126. /* process intends to be a client of the   */
  1127. /* VMAN component.  VMAN ensures that all  */
  1128. /* data and code is valid under this new   */
  1129. /* process.                                */
  1130. /*******************************************/
  1131. #include <ddi.h>
  1132.  
  1133. GID      gid;         /*  NULL. */
  1134. ULONG    ulFunction;  /*  Set equal to VMI_CMD_INITPROC. */
  1135. PVOID    pIn;         /*  NULL. */
  1136. PVOID    pOut;        /*  Pointer to an INITPROCOUT data structure. */
  1137. ULONG    rc;          /*  Return codes. */
  1138.  
  1139. rc = VMIEntry(gid, ulFunction, pIn, pOut);
  1140.  
  1141.  
  1142. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - gid ΓòÉΓòÉΓòÉ
  1143.  
  1144. gid (GID) - input 
  1145.    NULL. 
  1146.  
  1147.  
  1148. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1149.  
  1150. ulFunction (ULONG) - input 
  1151.    Set equal to VMI_CMD_INITPROC. 
  1152.  
  1153.  
  1154. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - pIn ΓòÉΓòÉΓòÉ
  1155.  
  1156. pIn (PVOID) - input 
  1157.    NULL. 
  1158.  
  1159.  
  1160. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - pOut ΓòÉΓòÉΓòÉ
  1161.  
  1162. pOut (PVOID) - output 
  1163.    Pointer to an INITPROCOUT data structure. 
  1164.  
  1165.  
  1166. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Return Value - rc ΓòÉΓòÉΓòÉ
  1167.  
  1168. rc (ULONG) - returns 
  1169.    Return codes. 
  1170.  
  1171.      RC_SUCCESS 
  1172.      RC_ERROR 
  1173.  
  1174.  
  1175. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Parameters ΓòÉΓòÉΓòÉ
  1176.  
  1177. gid (GID) - input 
  1178.    NULL. 
  1179.  
  1180. ulFunction (ULONG) - input 
  1181.    Set equal to VMI_CMD_INITPROC. 
  1182.  
  1183. pIn (PVOID) - input 
  1184.    NULL. 
  1185.  
  1186. pOut (PVOID) - output 
  1187.    Pointer to an INITPROCOUT data structure. 
  1188.  
  1189. rc (ULONG) - returns 
  1190.    Return codes. 
  1191.  
  1192.      RC_SUCCESS 
  1193.      RC_ERROR 
  1194.  
  1195.  
  1196. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Remarks ΓòÉΓòÉΓòÉ
  1197.  
  1198. None. 
  1199.  
  1200.  
  1201. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Topics ΓòÉΓòÉΓòÉ
  1202.  
  1203. Select an item: 
  1204.  
  1205. Syntax
  1206. Parameters
  1207. Returns
  1208. Remarks
  1209. Glossary
  1210.  
  1211.  
  1212. ΓòÉΓòÉΓòÉ 5.10. VMI_CMD_LINE ΓòÉΓòÉΓòÉ
  1213.  
  1214.  
  1215. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Syntax ΓòÉΓòÉΓòÉ
  1216.  
  1217. /*******************************************/
  1218. /* Description:  VMI_CMD_LINE is called to */
  1219. /* draw a line to the video display. VMAN  */
  1220. /* sends this command directly to the      */
  1221. /* GRADD chain identified by the GRADD ID  */
  1222. /* provided by the caller.                 */
  1223. /*******************************************/
  1224. #include <ddi.h>
  1225.  
  1226. GID      gid;         /*  ID of the GRADD. */
  1227. ULONG    ulFunction;  /*  Set equal to VMI_CMD_LINE. */
  1228. PVOID    pIn;         /*  Pointer to a LINEINFO data structure. */
  1229. PVOID    pOut;        /*  NULL; no output structure is needed. */
  1230. ULONG    rc;          /*  Return codes. */
  1231.  
  1232. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  1233.  
  1234.  
  1235. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - gid ΓòÉΓòÉΓòÉ
  1236.  
  1237. gid (GID) - input 
  1238.    ID of the GRADD. 
  1239.  
  1240.  
  1241. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1242.  
  1243. ulFunction (ULONG) - input 
  1244.    Set equal to VMI_CMD_LINE. 
  1245.  
  1246.  
  1247. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - pIn ΓòÉΓòÉΓòÉ
  1248.  
  1249. pIn (PVOID) - input 
  1250.    Pointer to a LINEINFO data structure. 
  1251.  
  1252.  
  1253. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - pOut ΓòÉΓòÉΓòÉ
  1254.  
  1255. pOut (PVOID) - output 
  1256.    NULL; no output structure is needed. 
  1257.  
  1258.  
  1259. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Return Value - rc ΓòÉΓòÉΓòÉ
  1260.  
  1261. rc (ULONG) - returns 
  1262.    Return codes. 
  1263.  
  1264.      RC_SUCCESS 
  1265.      RC_ERROR 
  1266.  
  1267.  
  1268. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Parameters ΓòÉΓòÉΓòÉ
  1269.  
  1270. gid (GID) - input 
  1271.    ID of the GRADD. 
  1272.  
  1273. ulFunction (ULONG) - input 
  1274.    Set equal to VMI_CMD_LINE. 
  1275.  
  1276. pIn (PVOID) - input 
  1277.    Pointer to a LINEINFO data structure. 
  1278.  
  1279. pOut (PVOID) - output 
  1280.    NULL; no output structure is needed. 
  1281.  
  1282. rc (ULONG) - returns 
  1283.    Return codes. 
  1284.  
  1285.      RC_SUCCESS 
  1286.      RC_ERROR 
  1287.  
  1288.  
  1289. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Remarks ΓòÉΓòÉΓòÉ
  1290.  
  1291. None. 
  1292.  
  1293.  
  1294. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Topics ΓòÉΓòÉΓòÉ
  1295.  
  1296. Select an item: 
  1297.  
  1298. Syntax
  1299. Parameters
  1300. Returns
  1301. Remarks
  1302. Glossary
  1303.  
  1304.  
  1305. ΓòÉΓòÉΓòÉ 5.11. VMI_CMD_MOVPTR ΓòÉΓòÉΓòÉ
  1306.  
  1307.  
  1308. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Syntax ΓòÉΓòÉΓòÉ
  1309.  
  1310. /*******************************************/
  1311. /* Description:  VMI_CMD_MOVPTR is called  */
  1312. /* to change the position of the pointer   */
  1313. /* hot spot. VMAN sends this command       */
  1314. /* directly to the GRADD chain identified  */
  1315. /* by the GRADD ID provided by the caller. */
  1316. /*******************************************/
  1317. #include <ddi.h>
  1318.  
  1319. GID      gid;         /*  ID of the GRADD. */
  1320. ULONG    ulFunction;  /*  Set equal to VMI_CMD_MOVPTR. */
  1321. PVOID    pIn;         /*  Pointer to an HWMOVEPTRIN data structure. */
  1322. PVOID    pOut;        /*  NULL; no output structure is needed. */
  1323. ULONG    rc;          /*  Return codes. */
  1324.  
  1325. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  1326.  
  1327.  
  1328. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - gid ΓòÉΓòÉΓòÉ
  1329.  
  1330. gid (GID) - input 
  1331.    ID of the GRADD. 
  1332.  
  1333.  
  1334. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1335.  
  1336. ulFunction (ULONG) - input 
  1337.    Set equal to VMI_CMD_MOVPTR. 
  1338.  
  1339.  
  1340. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - pIn ΓòÉΓòÉΓòÉ
  1341.  
  1342. pIn (PVOID) - input 
  1343.    Pointer to an HWMOVEPTRIN data structure. 
  1344.  
  1345.  
  1346. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - pOut ΓòÉΓòÉΓòÉ
  1347.  
  1348. pOut (PVOID) - output 
  1349.    NULL; no output structure is needed. 
  1350.  
  1351.  
  1352. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Return Value - rc ΓòÉΓòÉΓòÉ
  1353.  
  1354. rc (ULONG) - returns 
  1355.    Return codes. 
  1356.  
  1357.      RC_SUCCESS 
  1358.      RC_ERROR 
  1359.  
  1360.  
  1361. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Parameters ΓòÉΓòÉΓòÉ
  1362.  
  1363. gid (GID) - input 
  1364.    ID of the GRADD. 
  1365.  
  1366. ulFunction (ULONG) - input 
  1367.    Set equal to VMI_CMD_MOVPTR. 
  1368.  
  1369. pIn (PVOID) - input 
  1370.    Pointer to an HWMOVEPTRIN data structure. 
  1371.  
  1372. pOut (PVOID) - output 
  1373.    NULL; no output structure is needed. 
  1374.  
  1375. rc (ULONG) - returns 
  1376.    Return codes. 
  1377.  
  1378.      RC_SUCCESS 
  1379.      RC_ERROR 
  1380.  
  1381.  
  1382. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Remarks ΓòÉΓòÉΓòÉ
  1383.  
  1384. None. 
  1385.  
  1386.  
  1387. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Topics ΓòÉΓòÉΓòÉ
  1388.  
  1389. Select an item: 
  1390.  
  1391. Syntax
  1392. Parameters
  1393. Returns
  1394. Remarks
  1395. Glossary
  1396.  
  1397.  
  1398. ΓòÉΓòÉΓòÉ 5.12. VMI_CMD_PALETTE ΓòÉΓòÉΓòÉ
  1399.  
  1400.  
  1401. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Syntax ΓòÉΓòÉΓòÉ
  1402.  
  1403. /*******************************************/
  1404. /* Description:  VMI_CMD_PALETTE is        */
  1405. /* mandatory if the device supports        */
  1406. /* 256-color mode.  This function is       */
  1407. /* called to query or set the hardware     */
  1408. /* color palette.  VMAN sends this command */
  1409. /* directly to the GRADD chain identified  */
  1410. /* by the  GRADD ID provided by the        */
  1411. /* caller.  The GRADD is expected to       */
  1412. /* respond by describing the palettte in a */
  1413. /* given array or by using the palette     */
  1414. /* given in the array. The GRADD is always */
  1415. /* given an HWPALETTEINFO structure with   */
  1416. /* either the PALETTE_GET or PALETTE_SET   */
  1417. /* flag to specifiy the operation to       */
  1418. /* perform.                                */
  1419. /*******************************************/
  1420. #include <ddi.h>
  1421.  
  1422. GID      gid;         /*  ID of the GRADD. */
  1423. ULONG    ulFunction;  /*  Set equal to VMI_CMD_PALETTE. */
  1424. PVOID    pIn;         /*  Pointer to an HWPALETTEINFO data structure. */
  1425. PVOID    pOut;        /*  Depends on value of pIn. */
  1426. ULONG    rc;          /*  Return codes. */
  1427.  
  1428. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  1429.  
  1430.  
  1431. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - gid ΓòÉΓòÉΓòÉ
  1432.  
  1433. gid (GID) - input 
  1434.    ID of the GRADD. 
  1435.  
  1436.  
  1437. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1438.  
  1439. ulFunction (ULONG) - input 
  1440.    Set equal to VMI_CMD_PALETTE. 
  1441.  
  1442.  
  1443. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - pIn ΓòÉΓòÉΓòÉ
  1444.  
  1445. pIn (PVOID) - input 
  1446.    Pointer to an HWPALETTEINFO data structure. 
  1447.  
  1448.  
  1449. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - pOut ΓòÉΓòÉΓòÉ
  1450.  
  1451. pOut (PVOID) - output 
  1452.    Depends on value of pIn. 
  1453.  
  1454.    If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a 
  1455.    pointer to an HWPALETTEINFO data structure. 
  1456.  
  1457.  
  1458. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Return Value - rc ΓòÉΓòÉΓòÉ
  1459.  
  1460. rc (ULONG) - returns 
  1461.    Return codes. 
  1462.  
  1463.      RC_SUCCESS 
  1464.      RC_ERROR 
  1465.  
  1466.  
  1467. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Parameters ΓòÉΓòÉΓòÉ
  1468.  
  1469. gid (GID) - input 
  1470.    ID of the GRADD. 
  1471.  
  1472. ulFunction (ULONG) - input 
  1473.    Set equal to VMI_CMD_PALETTE. 
  1474.  
  1475. pIn (PVOID) - input 
  1476.    Pointer to an HWPALETTEINFO data structure. 
  1477.  
  1478. pOut (PVOID) - output 
  1479.    Depends on value of pIn. 
  1480.  
  1481.    If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a 
  1482.    pointer to an HWPALETTEINFO data structure. 
  1483.  
  1484. rc (ULONG) - returns 
  1485.    Return codes. 
  1486.  
  1487.      RC_SUCCESS 
  1488.      RC_ERROR 
  1489.  
  1490.  
  1491. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Remarks ΓòÉΓòÉΓòÉ
  1492.  
  1493. None. 
  1494.  
  1495.  
  1496. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Topics ΓòÉΓòÉΓòÉ
  1497.  
  1498. Select an item: 
  1499.  
  1500. Syntax
  1501. Parameters
  1502. Returns
  1503. Remarks
  1504. Glossary
  1505.  
  1506.  
  1507. ΓòÉΓòÉΓòÉ 5.13. VMI_CMD_QUERYCAPS ΓòÉΓòÉΓòÉ
  1508.  
  1509.  
  1510. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Syntax ΓòÉΓòÉΓòÉ
  1511.  
  1512. /*******************************************/
  1513. /* Description:  VMI_CMD_QUERYCAPS returns */
  1514. /* the capabilities of a  particular       */
  1515. /* GRADD. VMAN sends this command directly */
  1516. /* to the GRADD chain identified by the    */
  1517. /* GRADD ID provided by the caller.        */
  1518. /* VMI_CMD_QUERYCAPS is not typically used */
  1519. /* by translation layers  because the      */
  1520. /* VMI_CMD_QUERYCHAININFO function returns */
  1521. /* the capabilities of all GRADDs, as      */
  1522. /* opposed to just one.                    */
  1523. /* VMI_CMD_QUERYCHAININFO is the           */
  1524. /* recommended way of querying the         */
  1525. /* capabilities of all GRADDs in the       */
  1526. /* system.                                 */
  1527. /*******************************************/
  1528. #include <ddi.h>
  1529.  
  1530. GID      gid;         /*  ID of the GRADD. */
  1531. ULONG    ulFunction;  /*  Set equal to VMI_CMD_QUERYCAPS. */
  1532. PVOID    pIn;         /*  NULL. */
  1533. PVOID    pOut;        /*  Pointer to a VMIQCI data structure. */
  1534. ULONG    rc;          /*  Return codes. */
  1535.  
  1536. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  1537.  
  1538.  
  1539. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - gid ΓòÉΓòÉΓòÉ
  1540.  
  1541. gid (GID) - input 
  1542.    ID of the GRADD. 
  1543.  
  1544.  
  1545. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1546.  
  1547. ulFunction (ULONG) - input 
  1548.    Set equal to VMI_CMD_QUERYCAPS. 
  1549.  
  1550.  
  1551. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - pIn ΓòÉΓòÉΓòÉ
  1552.  
  1553. pIn (PVOID) - input 
  1554.    NULL. 
  1555.  
  1556.  
  1557. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - pOut ΓòÉΓòÉΓòÉ
  1558.  
  1559. pOut (PVOID) - output 
  1560.    Pointer to a VMIQCI data structure. 
  1561.  
  1562.  
  1563. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Return Value - rc ΓòÉΓòÉΓòÉ
  1564.  
  1565. rc (ULONG) - returns 
  1566.    Return codes. 
  1567.  
  1568.      RC_SUCCESS 
  1569.      RC_ERROR 
  1570.  
  1571.  
  1572. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Parameters ΓòÉΓòÉΓòÉ
  1573.  
  1574. gid (GID) - input 
  1575.    ID of the GRADD. 
  1576.  
  1577. ulFunction (ULONG) - input 
  1578.    Set equal to VMI_CMD_QUERYCAPS. 
  1579.  
  1580. pIn (PVOID) - input 
  1581.    NULL. 
  1582.  
  1583. pOut (PVOID) - output 
  1584.    Pointer to a VMIQCI data structure. 
  1585.  
  1586. rc (ULONG) - returns 
  1587.    Return codes. 
  1588.  
  1589.      RC_SUCCESS 
  1590.      RC_ERROR 
  1591.  
  1592.  
  1593. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Remarks ΓòÉΓòÉΓòÉ
  1594.  
  1595. None. 
  1596.  
  1597.  
  1598. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Topics ΓòÉΓòÉΓòÉ
  1599.  
  1600. Select an item: 
  1601.  
  1602. Syntax
  1603. Parameters
  1604. Returns
  1605. Remarks
  1606. Glossary
  1607.  
  1608.  
  1609. ΓòÉΓòÉΓòÉ 5.14. VMI_CMD_QUERYCHAININFO ΓòÉΓòÉΓòÉ
  1610.  
  1611.  
  1612. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Syntax ΓòÉΓòÉΓòÉ
  1613.  
  1614. /*******************************************/
  1615. /* Description:  VMI_CMD_QUERYCHAININFO is */
  1616. /* unique to VMAN (there is no             */
  1617. /* corresponding function in the Graphics  */
  1618. /* Hardware Interface). This function is   */
  1619. /* called to obtain a pointer to the video */
  1620. /* chain information, which contains       */
  1621. /* information about every GRADD currently */
  1622. /* loaded.  Each GRADDINFO structure       */
  1623. /* contains information, such as           */
  1624. /* capabilities and mode information, for  */
  1625. /* a single GRADD. The CHAININFO structure */
  1626. /* contains a pointer to a linked list of  */
  1627. /* GRADDINFO structures. If multiple GRADD */
  1628. /* chains are in use, the head CHAININFO   */
  1629. /* structure contains a pointer to the     */
  1630. /* next CHAININFO structure.               */
  1631. /*******************************************/
  1632. #include <ddi.h>
  1633.  
  1634. GID      gid;         /*  NULL. */
  1635. ULONG    ulFunction;  /*  Set equal to VMI_CMD_QUERYCHAININFO. */
  1636. PVOID    pIn;         /*  NULL. */
  1637. PVOID    pOut;        /*  Pointer to a VMIQCI data structure. */
  1638. ULONG    rc;          /*  Return codes. */
  1639.  
  1640. rc = VMIEntry(gid, ulFunction, pIn, pOut);
  1641.  
  1642.  
  1643. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - gid ΓòÉΓòÉΓòÉ
  1644.  
  1645. gid (GID) - input 
  1646.    NULL. 
  1647.  
  1648.  
  1649. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1650.  
  1651. ulFunction (ULONG) - input 
  1652.    Set equal to VMI_CMD_QUERYCHAININFO. 
  1653.  
  1654.  
  1655. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - pIn ΓòÉΓòÉΓòÉ
  1656.  
  1657. pIn (PVOID) - input 
  1658.    NULL. 
  1659.  
  1660.  
  1661. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - pOut ΓòÉΓòÉΓòÉ
  1662.  
  1663. pOut (PVOID) - output 
  1664.    Pointer to a VMIQCI data structure. 
  1665.  
  1666.  
  1667. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Return Value - rc ΓòÉΓòÉΓòÉ
  1668.  
  1669. rc (ULONG) - returns 
  1670.    Return codes. 
  1671.  
  1672.      RC_SUCCESS 
  1673.      RC_ERROR 
  1674.  
  1675.  
  1676. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Parameters ΓòÉΓòÉΓòÉ
  1677.  
  1678. gid (GID) - input 
  1679.    NULL. 
  1680.  
  1681. ulFunction (ULONG) - input 
  1682.    Set equal to VMI_CMD_QUERYCHAININFO. 
  1683.  
  1684. pIn (PVOID) - input 
  1685.    NULL. 
  1686.  
  1687. pOut (PVOID) - output 
  1688.    Pointer to a VMIQCI data structure. 
  1689.  
  1690. rc (ULONG) - returns 
  1691.    Return codes. 
  1692.  
  1693.      RC_SUCCESS 
  1694.      RC_ERROR 
  1695.  
  1696.  
  1697. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Remarks ΓòÉΓòÉΓòÉ
  1698.  
  1699. None. 
  1700.  
  1701.  
  1702. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Topics ΓòÉΓòÉΓòÉ
  1703.  
  1704. Select an item: 
  1705.  
  1706. Syntax
  1707. Parameters
  1708. Returns
  1709. Remarks
  1710. Glossary
  1711.  
  1712.  
  1713. ΓòÉΓòÉΓòÉ 5.15. VMI_CMD_QUERYMODES ΓòÉΓòÉΓòÉ
  1714.  
  1715.  
  1716. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Syntax ΓòÉΓòÉΓòÉ
  1717.  
  1718. /*******************************************/
  1719. /* Description:  VMI_CMD_QUERYMODES        */
  1720. /* returns video mode information for a    */
  1721. /* particular GRADD. VMAN passes this      */
  1722. /* command directly to the GRADD chain     */
  1723. /* identified by the GRADD ID provided by  */
  1724. /* the caller.  VMI_CMD_QUERYMODES is not  */
  1725. /* typically used by translation layers    */
  1726. /* because the VMI_CMD_QUERYCHAININFO      */
  1727. /* function returns the capabilities of    */
  1728. /* all GRADDs, as opposed to just one.     */
  1729. /* VMI_CMD_QUERYCHAININFO is the           */
  1730. /* recommended way of querying the         */
  1731. /* available modes of all GRADDs in the    */
  1732. /* system.                                 */
  1733. /*******************************************/
  1734. #include <ddi.h>
  1735.  
  1736. GID      gid;         /*  ID of the GRADD. */
  1737. ULONG    ulFunction;  /*  Set equal to VMI_CMD_QUERYMODES. */
  1738. PVOID    pIn;         /*  Pointer that identifies a QUERYMODE operation. */
  1739. PVOID    pOut;        /*  Pointer to the pIn operation. */
  1740. ULONG    rc;          /*  Return codes. */
  1741.  
  1742. rc = VMIEntry(gid, ulFunction, pIn, pOut);
  1743.  
  1744.  
  1745. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - gid ΓòÉΓòÉΓòÉ
  1746.  
  1747. gid (GID) - input 
  1748.    ID of the GRADD. 
  1749.  
  1750.  
  1751. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1752.  
  1753. ulFunction (ULONG) - input 
  1754.    Set equal to VMI_CMD_QUERYMODES. 
  1755.  
  1756.  
  1757. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - pIn ΓòÉΓòÉΓòÉ
  1758.  
  1759. pIn (PVOID) - input 
  1760.    Pointer that identifies a QUERYMODE operation. 
  1761.  
  1762.    This pointer identifies one of the following operations: 
  1763.  
  1764.      QUERYMODE_NUM_MODES 
  1765.      QUERYMODE_MODE_DATA 
  1766.  
  1767.  
  1768. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - pOut ΓòÉΓòÉΓòÉ
  1769.  
  1770. pOut (PVOID) - output 
  1771.    Pointer to the pIn operation. 
  1772.  
  1773.    This pointer indicates one of the following, depending on the value of pIn: 
  1774.  
  1775.      QUERYMODE_NUM_MODES 
  1776.                     Indicates a pointer to a ULONG containing the number of 
  1777.                     supported modes. 
  1778.      QUERYMODE_MODE_DATA 
  1779.                     Indicates a pointer to an array of GDDMODEINFO structures 
  1780.                     large enough for the number of supported modes. 
  1781.  
  1782.  
  1783. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Return Value - rc ΓòÉΓòÉΓòÉ
  1784.  
  1785. rc (ULONG) - returns 
  1786.    Return codes. 
  1787.  
  1788.      RC_SUCCESS 
  1789.      RC_ERROR 
  1790.  
  1791.  
  1792. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Parameters ΓòÉΓòÉΓòÉ
  1793.  
  1794. gid (GID) - input 
  1795.    ID of the GRADD. 
  1796.  
  1797. ulFunction (ULONG) - input 
  1798.    Set equal to VMI_CMD_QUERYMODES. 
  1799.  
  1800. pIn (PVOID) - input 
  1801.    Pointer that identifies a QUERYMODE operation. 
  1802.  
  1803.    This pointer identifies one of the following operations: 
  1804.  
  1805.      QUERYMODE_NUM_MODES 
  1806.      QUERYMODE_MODE_DATA 
  1807.  
  1808. pOut (PVOID) - output 
  1809.    Pointer to the pIn operation. 
  1810.  
  1811.    This pointer indicates one of the following, depending on the value of pIn: 
  1812.  
  1813.      QUERYMODE_NUM_MODES 
  1814.                     Indicates a pointer to a ULONG containing the number of 
  1815.                     supported modes. 
  1816.      QUERYMODE_MODE_DATA 
  1817.                     Indicates a pointer to an array of GDDMODEINFO structures 
  1818.                     large enough for the number of supported modes. 
  1819.  
  1820. rc (ULONG) - returns 
  1821.    Return codes. 
  1822.  
  1823.      RC_SUCCESS 
  1824.      RC_ERROR 
  1825.  
  1826.  
  1827. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Remarks ΓòÉΓòÉΓòÉ
  1828.  
  1829. None. 
  1830.  
  1831.  
  1832. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Topics ΓòÉΓòÉΓòÉ
  1833.  
  1834. Select an item: 
  1835.  
  1836. Syntax
  1837. Parameters
  1838. Returns
  1839. Remarks
  1840. Glossary
  1841.  
  1842.  
  1843. ΓòÉΓòÉΓòÉ 5.16. VMI_CMD_REQUESTHW ΓòÉΓòÉΓòÉ
  1844.  
  1845.  
  1846. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Syntax ΓòÉΓòÉΓòÉ
  1847.  
  1848. /*******************************************/
  1849. /* Description:  VMI_CMD_REQUESTHW is      */
  1850. /* called to request access to the  video  */
  1851. /* hardware. VMAN processes this command   */
  1852. /* and sends a GHI_CMD_REQUESTHW  call to  */
  1853. /* the GRADD chain identified by the GRADD */
  1854. /* ID provided by the caller.              */
  1855. /*******************************************/
  1856. #include <ddi.h>
  1857.  
  1858. GID      gid;         /*  ID of the GRADD. */
  1859. ULONG    ulFunction;  /*  Set equal to VMI_CMD_REQUESTHW. */
  1860. PVOID    pIn;         /*  Pointer to an HWREQIN data structure. */
  1861. PVOID    pOut;        /*  NULL; no output structure is needed. */
  1862. ULONG    rc;          /*  Return codes. */
  1863.  
  1864. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  1865.  
  1866.  
  1867. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - gid ΓòÉΓòÉΓòÉ
  1868.  
  1869. gid (GID) - input 
  1870.    ID of the GRADD. 
  1871.  
  1872.  
  1873. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1874.  
  1875. ulFunction (ULONG) - input 
  1876.    Set equal to VMI_CMD_REQUESTHW. 
  1877.  
  1878.  
  1879. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - pIn ΓòÉΓòÉΓòÉ
  1880.  
  1881. pIn (PVOID) - input 
  1882.    Pointer to an HWREQIN data structure. 
  1883.  
  1884.  
  1885. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - pOut ΓòÉΓòÉΓòÉ
  1886.  
  1887. pOut (PVOID) - output 
  1888.    NULL; no output structure is needed. 
  1889.  
  1890.  
  1891. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Return Value - rc ΓòÉΓòÉΓòÉ
  1892.  
  1893. rc (ULONG) - returns 
  1894.    Return codes. 
  1895.  
  1896.      RC_SUCCESS 
  1897.      RC_ERROR 
  1898.  
  1899.  
  1900. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Parameters ΓòÉΓòÉΓòÉ
  1901.  
  1902. gid (GID) - input 
  1903.    ID of the GRADD. 
  1904.  
  1905. ulFunction (ULONG) - input 
  1906.    Set equal to VMI_CMD_REQUESTHW. 
  1907.  
  1908. pIn (PVOID) - input 
  1909.    Pointer to an HWREQIN data structure. 
  1910.  
  1911. pOut (PVOID) - output 
  1912.    NULL; no output structure is needed. 
  1913.  
  1914. rc (ULONG) - returns 
  1915.    Return codes. 
  1916.  
  1917.      RC_SUCCESS 
  1918.      RC_ERROR 
  1919.  
  1920.  
  1921. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Remarks ΓòÉΓòÉΓòÉ
  1922.  
  1923. None. 
  1924.  
  1925.  
  1926. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Topics ΓòÉΓòÉΓòÉ
  1927.  
  1928. Select an item: 
  1929.  
  1930. Syntax
  1931. Parameters
  1932. Returns
  1933. Remarks
  1934. Glossary
  1935.  
  1936.  
  1937. ΓòÉΓòÉΓòÉ 5.17. VMI_CMD_SETMODE ΓòÉΓòÉΓòÉ
  1938.  
  1939.  
  1940. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Syntax ΓòÉΓòÉΓòÉ
  1941.  
  1942. /*******************************************/
  1943. /* Description:  VMI_CMD_SETMODE sets the  */
  1944. /* video display adapter to a given mode.  */
  1945. /* VMAN passes this command directly to    */
  1946. /* the GRADD chain identified by the GRADD */
  1947. /* ID provided by the caller. The GRADD is */
  1948. /* expected to set the video mode, given   */
  1949. /* an ID of the chosen mode.               */
  1950. /*******************************************/
  1951. #include <ddi.h>
  1952.  
  1953. GID      gid;         /*  ID of the GRADD. */
  1954. ULONG    ulFunction;  /*  Set equal to VMI_CMD_SETMODE. */
  1955. PVOID    pIn;         /*  Pointer to PULONG containing the ID of the requested mode. */
  1956. PVOID    pOut;        /*  NULL. */
  1957. ULONG    rc;          /*  Return codes. */
  1958.  
  1959. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  1960.  
  1961.  
  1962. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - gid ΓòÉΓòÉΓòÉ
  1963.  
  1964. gid (GID) - input 
  1965.    ID of the GRADD. 
  1966.  
  1967.  
  1968. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - ulFunction ΓòÉΓòÉΓòÉ
  1969.  
  1970. ulFunction (ULONG) - input 
  1971.    Set equal to VMI_CMD_SETMODE. 
  1972.  
  1973.  
  1974. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - pIn ΓòÉΓòÉΓòÉ
  1975.  
  1976. pIn (PVOID) - input 
  1977.    Pointer to PULONG containing the ID of the requested mode. 
  1978.  
  1979.  
  1980. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - pOut ΓòÉΓòÉΓòÉ
  1981.  
  1982. pOut (PVOID) - output 
  1983.    NULL. 
  1984.  
  1985.  
  1986. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Return Value - rc ΓòÉΓòÉΓòÉ
  1987.  
  1988. rc (ULONG) - returns 
  1989.    Return codes. 
  1990.  
  1991.      RC_SUCCESS 
  1992.      RC_ERROR 
  1993.  
  1994.  
  1995. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Parameters ΓòÉΓòÉΓòÉ
  1996.  
  1997. gid (GID) - input 
  1998.    ID of the GRADD. 
  1999.  
  2000. ulFunction (ULONG) - input 
  2001.    Set equal to VMI_CMD_SETMODE. 
  2002.  
  2003. pIn (PVOID) - input 
  2004.    Pointer to PULONG containing the ID of the requested mode. 
  2005.  
  2006. pOut (PVOID) - output 
  2007.    NULL. 
  2008.  
  2009. rc (ULONG) - returns 
  2010.    Return codes. 
  2011.  
  2012.      RC_SUCCESS 
  2013.      RC_ERROR 
  2014.  
  2015.  
  2016. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Remarks ΓòÉΓòÉΓòÉ
  2017.  
  2018. None. 
  2019.  
  2020.  
  2021. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Topics ΓòÉΓòÉΓòÉ
  2022.  
  2023. Select an item: 
  2024.  
  2025. Syntax
  2026. Parameters
  2027. Returns
  2028. Remarks
  2029. Glossary
  2030.  
  2031.  
  2032. ΓòÉΓòÉΓòÉ 5.18. VMI_CMD_SETPTR ΓòÉΓòÉΓòÉ
  2033.  
  2034.  
  2035. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Syntax ΓòÉΓòÉΓòÉ
  2036.  
  2037. /*******************************************/
  2038. /* Description:  VMI_CMD_SETPTR sets the   */
  2039. /* pointer AND,XOR masks. VMAN sends this  */
  2040. /* command to the GRADD chain identified   */
  2041. /* by the GRADD ID provided by the caller. */
  2042. /*******************************************/
  2043. #include <ddi.h>
  2044.  
  2045. GID      gid;         /*  ID of the GRADD. */
  2046. ULONG    ulFunction;  /*  Set equal to VMI_CMD_SETPTR. */
  2047. PVOID    pIn;         /*  Pointer to an HWSETPTRIN data structure. */
  2048. PVOID    pOut;        /*  Pointer to an HWSETPTROUT data structure. */
  2049. ULONG    rc;          /*  Return codes. */
  2050.  
  2051. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  2052.  
  2053.  
  2054. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - gid ΓòÉΓòÉΓòÉ
  2055.  
  2056. gid (GID) - input 
  2057.    ID of the GRADD. 
  2058.  
  2059.  
  2060. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2061.  
  2062. ulFunction (ULONG) - input 
  2063.    Set equal to VMI_CMD_SETPTR. 
  2064.  
  2065.  
  2066. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - pIn ΓòÉΓòÉΓòÉ
  2067.  
  2068. pIn (PVOID) - input 
  2069.    Pointer to an HWSETPTRIN data structure. 
  2070.  
  2071.  
  2072. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - pOut ΓòÉΓòÉΓòÉ
  2073.  
  2074. pOut (PVOID) - output 
  2075.    Pointer to an HWSETPTROUT data structure. 
  2076.  
  2077.  
  2078. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Return Value - rc ΓòÉΓòÉΓòÉ
  2079.  
  2080. rc (ULONG) - returns 
  2081.    Return codes. 
  2082.  
  2083.      RC_SUCCESS 
  2084.      RC_ERROR 
  2085.  
  2086.  
  2087. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Parameters ΓòÉΓòÉΓòÉ
  2088.  
  2089. gid (GID) - input 
  2090.    ID of the GRADD. 
  2091.  
  2092. ulFunction (ULONG) - input 
  2093.    Set equal to VMI_CMD_SETPTR. 
  2094.  
  2095. pIn (PVOID) - input 
  2096.    Pointer to an HWSETPTRIN data structure. 
  2097.  
  2098. pOut (PVOID) - output 
  2099.    Pointer to an HWSETPTROUT data structure. 
  2100.  
  2101. rc (ULONG) - returns 
  2102.    Return codes. 
  2103.  
  2104.      RC_SUCCESS 
  2105.      RC_ERROR 
  2106.  
  2107.  
  2108. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Remarks ΓòÉΓòÉΓòÉ
  2109.  
  2110. None. 
  2111.  
  2112.  
  2113. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Topics ΓòÉΓòÉΓòÉ
  2114.  
  2115. Select an item: 
  2116.  
  2117. Syntax
  2118. Parameters
  2119. Returns
  2120. Remarks
  2121. Glossary
  2122.  
  2123.  
  2124. ΓòÉΓòÉΓòÉ 5.19. VMI_CMD_SHOWPTR ΓòÉΓòÉΓòÉ
  2125.  
  2126.  
  2127. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Syntax ΓòÉΓòÉΓòÉ
  2128.  
  2129. /*******************************************/
  2130. /* Description:  VMI_CMD_SHOWPTR sets the  */
  2131. /* visibility state of the pointer. VMAN   */
  2132. /* sends this command to the GRADD chain   */
  2133. /* identified by the GRADD ID provided by  */
  2134. /* the caller.                             */
  2135. /*******************************************/
  2136. #include <ddi.h>
  2137.  
  2138. GID      gid;         /*  ID of the GRADD. */
  2139. ULONG    ulFunction;  /*  Set equal to VMI_CMD_SHOWPTR. */
  2140. PVOID    pIn;         /*  Pointer to an HWSHOWPTRIN data structure. */
  2141. PVOID    pOut;        /*  NULL; no output structure needed. */
  2142. ULONG    rc;          /*  Return codes. */
  2143.  
  2144. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  2145.  
  2146.  
  2147. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - gid ΓòÉΓòÉΓòÉ
  2148.  
  2149. gid (GID) - input 
  2150.    ID of the GRADD. 
  2151.  
  2152.  
  2153. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2154.  
  2155. ulFunction (ULONG) - input 
  2156.    Set equal to VMI_CMD_SHOWPTR. 
  2157.  
  2158.  
  2159. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - pIn ΓòÉΓòÉΓòÉ
  2160.  
  2161. pIn (PVOID) - input 
  2162.    Pointer to an HWSHOWPTRIN data structure. 
  2163.  
  2164.  
  2165. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - pOut ΓòÉΓòÉΓòÉ
  2166.  
  2167. pOut (PVOID) - output 
  2168.    NULL; no output structure needed. 
  2169.  
  2170.  
  2171. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Return Value - rc ΓòÉΓòÉΓòÉ
  2172.  
  2173. rc (ULONG) - returns 
  2174.    Return codes. 
  2175.  
  2176.      RC_SUCCESS 
  2177.      RC_ERROR 
  2178.  
  2179.  
  2180. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Parameters ΓòÉΓòÉΓòÉ
  2181.  
  2182. gid (GID) - input 
  2183.    ID of the GRADD. 
  2184.  
  2185. ulFunction (ULONG) - input 
  2186.    Set equal to VMI_CMD_SHOWPTR. 
  2187.  
  2188. pIn (PVOID) - input 
  2189.    Pointer to an HWSHOWPTRIN data structure. 
  2190.  
  2191. pOut (PVOID) - output 
  2192.    NULL; no output structure needed. 
  2193.  
  2194. rc (ULONG) - returns 
  2195.    Return codes. 
  2196.  
  2197.      RC_SUCCESS 
  2198.      RC_ERROR 
  2199.  
  2200.  
  2201. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Remarks ΓòÉΓòÉΓòÉ
  2202.  
  2203. None. 
  2204.  
  2205.  
  2206. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Topics ΓòÉΓòÉΓòÉ
  2207.  
  2208. Select an item: 
  2209.  
  2210. Syntax
  2211. Parameters
  2212. Returns
  2213. Remarks
  2214. Glossary
  2215.  
  2216.  
  2217. ΓòÉΓòÉΓòÉ 5.20. VMI_CMD_TERM ΓòÉΓòÉΓòÉ
  2218.  
  2219.  
  2220. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Syntax ΓòÉΓòÉΓòÉ
  2221.  
  2222. /*******************************************/
  2223. /* Description:  VMI_CMD_TERM informs VMAN */
  2224. /* that an existing client  process is     */
  2225. /* being terminated.                       */
  2226. /*******************************************/
  2227. #include <ddi.h>
  2228.  
  2229. GID      gid;         /*  NULL; parameter ignored by VMAN. */
  2230. ULONG    ulFunction;  /*  Set equal to VMI_CMD_TERM. */
  2231. PVOID    pIn;         /*  NULL. */
  2232. PVOID    pOut;        /*  NULL. */
  2233. ULONG    rc;          /*  Return codes. */
  2234.  
  2235. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  2236.  
  2237.  
  2238. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - gid ΓòÉΓòÉΓòÉ
  2239.  
  2240. gid (GID) - input 
  2241.    NULL; parameter ignored by VMAN. 
  2242.  
  2243.  
  2244. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2245.  
  2246. ulFunction (ULONG) - input 
  2247.    Set equal to VMI_CMD_TERM. 
  2248.  
  2249.  
  2250. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - pIn ΓòÉΓòÉΓòÉ
  2251.  
  2252. pIn (PVOID) - input 
  2253.    NULL. 
  2254.  
  2255.  
  2256. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - pOut ΓòÉΓòÉΓòÉ
  2257.  
  2258. pOut (PVOID) - output 
  2259.    NULL. 
  2260.  
  2261.  
  2262. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Return Value - rc ΓòÉΓòÉΓòÉ
  2263.  
  2264. rc (ULONG) - returns 
  2265.    Return codes. 
  2266.  
  2267.      RC_SUCCESS 
  2268.      RC_ERROR 
  2269.  
  2270.  
  2271. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Parameters ΓòÉΓòÉΓòÉ
  2272.  
  2273. gid (GID) - input 
  2274.    NULL; parameter ignored by VMAN. 
  2275.  
  2276. ulFunction (ULONG) - input 
  2277.    Set equal to VMI_CMD_TERM. 
  2278.  
  2279. pIn (PVOID) - input 
  2280.    NULL. 
  2281.  
  2282. pOut (PVOID) - output 
  2283.    NULL. 
  2284.  
  2285. rc (ULONG) - returns 
  2286.    Return codes. 
  2287.  
  2288.      RC_SUCCESS 
  2289.      RC_ERROR 
  2290.  
  2291.  
  2292. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Remarks ΓòÉΓòÉΓòÉ
  2293.  
  2294. None. 
  2295.  
  2296.  
  2297. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Topics ΓòÉΓòÉΓòÉ
  2298.  
  2299. Select an item: 
  2300.  
  2301. Syntax
  2302. Parameters
  2303. Returns
  2304. Remarks
  2305. Glossary
  2306.  
  2307.  
  2308. ΓòÉΓòÉΓòÉ 5.21. VMI_CMD_TERMPROC ΓòÉΓòÉΓòÉ
  2309.  
  2310.  
  2311. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Syntax ΓòÉΓòÉΓòÉ
  2312.  
  2313. /*******************************************/
  2314. /* Description:  VMI_CMD_TERMPROC is       */
  2315. /* mandatory and informs VMAN that an      */
  2316. /* existing client process is being        */
  2317. /* terminated. VMAN cleans up all          */
  2318. /* resources owned by this process. VMAN   */
  2319. /* passes this command directly to the     */
  2320. /* GRADD chain identified by the  GRADD ID */
  2321. /* provided by the caller.                 */
  2322. /*******************************************/
  2323. #include <ddi.h>
  2324.  
  2325. GID      gid;         /*  ID of the GRADD. */
  2326. ULONG    ulFunction;  /*  Set equal to VMI_CMD_TERMPROC. */
  2327. PVOID    pIn;         /*  NULL. */
  2328. PVOID    pOut;        /*  NULL. */
  2329. ULONG    rc;          /*  Return codes. */
  2330.  
  2331. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  2332.  
  2333.  
  2334. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - gid ΓòÉΓòÉΓòÉ
  2335.  
  2336. gid (GID) - input 
  2337.    ID of the GRADD. 
  2338.  
  2339.  
  2340. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2341.  
  2342. ulFunction (ULONG) - input 
  2343.    Set equal to VMI_CMD_TERMPROC. 
  2344.  
  2345.  
  2346. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - pIn ΓòÉΓòÉΓòÉ
  2347.  
  2348. pIn (PVOID) - input 
  2349.    NULL. 
  2350.  
  2351.  
  2352. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - pOut ΓòÉΓòÉΓòÉ
  2353.  
  2354. pOut (PVOID) - output 
  2355.    NULL. 
  2356.  
  2357.  
  2358. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Return Value - rc ΓòÉΓòÉΓòÉ
  2359.  
  2360. rc (ULONG) - returns 
  2361.    Return codes. 
  2362.  
  2363.      RC_SUCCESS 
  2364.      RC_ERROR 
  2365.  
  2366.  
  2367. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Parameters ΓòÉΓòÉΓòÉ
  2368.  
  2369. gid (GID) - input 
  2370.    ID of the GRADD. 
  2371.  
  2372. ulFunction (ULONG) - input 
  2373.    Set equal to VMI_CMD_TERMPROC. 
  2374.  
  2375. pIn (PVOID) - input 
  2376.    NULL. 
  2377.  
  2378. pOut (PVOID) - output 
  2379.    NULL. 
  2380.  
  2381. rc (ULONG) - returns 
  2382.    Return codes. 
  2383.  
  2384.      RC_SUCCESS 
  2385.      RC_ERROR 
  2386.  
  2387.  
  2388. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Remarks ΓòÉΓòÉΓòÉ
  2389.  
  2390. None. 
  2391.  
  2392.  
  2393. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Topics ΓòÉΓòÉΓòÉ
  2394.  
  2395. Select an item: 
  2396.  
  2397. Syntax
  2398. Parameters
  2399. Returns
  2400. Remarks
  2401. Glossary
  2402.  
  2403.  
  2404. ΓòÉΓòÉΓòÉ 5.22. VMI_CMD_VRAM ΓòÉΓòÉΓòÉ
  2405.  
  2406.  
  2407. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Syntax ΓòÉΓòÉΓòÉ
  2408.  
  2409. /*******************************************/
  2410. /* Description:  VMI_CMD_VRAM is called to */
  2411. /* allocate off-screen video memory. VMAN  */
  2412. /* sends this command to the GRADD chain   */
  2413. /* identified by the GRADD ID provided by  */
  2414. /* the caller.                             */
  2415. /*******************************************/
  2416. #include <ddi.h>
  2417.  
  2418. GID      gid;         /*  ID of the GRADD. */
  2419. ULONG    ulFunction;  /*  Set equal to VMI_CMD_VRAM. */
  2420. PVOID    pIn;         /*  Pointer to a VRAMALLOCIN data structure. */
  2421. PVOID    pOut;        /*  Pointer to a VRAMALLOCOUT data structure. */
  2422. ULONG    rc;          /*  Return codes. */
  2423.  
  2424. rc = VMIENTRY(gid, ulFunction, pIn, pOut);
  2425.  
  2426.  
  2427. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - gid ΓòÉΓòÉΓòÉ
  2428.  
  2429. gid (GID) - input 
  2430.    ID of the GRADD. 
  2431.  
  2432.  
  2433. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2434.  
  2435. ulFunction (ULONG) - input 
  2436.    Set equal to VMI_CMD_VRAM. 
  2437.  
  2438.  
  2439. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - pIn ΓòÉΓòÉΓòÉ
  2440.  
  2441. pIn (PVOID) - input 
  2442.    Pointer to a VRAMALLOCIN data structure. 
  2443.  
  2444.  
  2445. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - pOut ΓòÉΓòÉΓòÉ
  2446.  
  2447. pOut (PVOID) - output 
  2448.    Pointer to a VRAMALLOCOUT data structure. 
  2449.  
  2450.  
  2451. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Return Value - rc ΓòÉΓòÉΓòÉ
  2452.  
  2453. rc (ULONG) - returns 
  2454.    Return codes. 
  2455.  
  2456.      RC_UNSUPPORTED 
  2457.      RC_SUCCESS 
  2458.      RC_ERROR 
  2459.  
  2460.  
  2461. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Parameters ΓòÉΓòÉΓòÉ
  2462.  
  2463. gid (GID) - input 
  2464.    ID of the GRADD. 
  2465.  
  2466. ulFunction (ULONG) - input 
  2467.    Set equal to VMI_CMD_VRAM. 
  2468.  
  2469. pIn (PVOID) - input 
  2470.    Pointer to a VRAMALLOCIN data structure. 
  2471.  
  2472. pOut (PVOID) - output 
  2473.    Pointer to a VRAMALLOCOUT data structure. 
  2474.  
  2475. rc (ULONG) - returns 
  2476.    Return codes. 
  2477.  
  2478.      RC_UNSUPPORTED 
  2479.      RC_SUCCESS 
  2480.      RC_ERROR 
  2481.  
  2482.  
  2483. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Remarks ΓòÉΓòÉΓòÉ
  2484.  
  2485. None. 
  2486.  
  2487.  
  2488. ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Topics ΓòÉΓòÉΓòÉ
  2489.  
  2490. Select an item: 
  2491.  
  2492. Syntax
  2493. Parameters
  2494. Returns
  2495. Remarks
  2496. Glossary
  2497.  
  2498.  
  2499. ΓòÉΓòÉΓòÉ 5.23. VMIEntry ΓòÉΓòÉΓòÉ
  2500.  
  2501.  
  2502. ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Syntax ΓòÉΓòÉΓòÉ
  2503.  
  2504. /*******************************************/
  2505. /* Description:  VMIEntry is the single    */
  2506. /* exported function from the Video        */
  2507. /* Manager component. It is part of the    */
  2508. /* Video Manager Interface (VMI) protocol  */
  2509. /* and receives operations from the        */
  2510. /* translation layer components.           */
  2511. /*******************************************/
  2512. #include <ddi.h>
  2513.  
  2514. GID      gid;         /*  ID of the GRADD. */
  2515. ULONG    ulFunction;  /*  Set to appropriate VMI_CMD_ function. */
  2516. PVOID    pIn;         /*  Pointer to applicable data structure. */
  2517. PVOID    pOut;        /*  Pointer to applicable data structure. */
  2518. ULONG    rc;          /*  Return codes. */
  2519.  
  2520. rc = VMIEntry(gid, ulFunction, pIn, pOut);
  2521.  
  2522.  
  2523. ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - gid ΓòÉΓòÉΓòÉ
  2524.  
  2525. gid (GID) - input 
  2526.    ID of the GRADD. 
  2527.  
  2528.  
  2529. ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2530.  
  2531. ulFunction (ULONG) - input 
  2532.    Set to appropriate VMI_CMD_ function. 
  2533.  
  2534.    This parameter is set to one of the VMI_CMD_ functions shown in the table of 
  2535.    common functions shown at the beginning of this section. 
  2536.  
  2537.  
  2538. ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - pIn ΓòÉΓòÉΓòÉ
  2539.  
  2540. pIn (PVOID) - input 
  2541.    Pointer to applicable data structure. 
  2542.  
  2543.  
  2544. ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - pOut ΓòÉΓòÉΓòÉ
  2545.  
  2546. pOut (PVOID) - output 
  2547.    Pointer to applicable data structure. 
  2548.  
  2549.  
  2550. ΓòÉΓòÉΓòÉ <hidden> VMIEntry Return Value - rc ΓòÉΓòÉΓòÉ
  2551.  
  2552. rc (ULONG) - returns 
  2553.    Return codes. 
  2554.  
  2555.    Valid values are dictated by the applicable VMI_CMD_ function. 
  2556.  
  2557.  
  2558. ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Parameters ΓòÉΓòÉΓòÉ
  2559.  
  2560. gid (GID) - input 
  2561.    ID of the GRADD. 
  2562.  
  2563. ulFunction (ULONG) - input 
  2564.    Set to appropriate VMI_CMD_ function. 
  2565.  
  2566.    This parameter is set to one of the VMI_CMD_ functions shown in the table of 
  2567.    common functions shown at the beginning of this section. 
  2568.  
  2569. pIn (PVOID) - input 
  2570.    Pointer to applicable data structure. 
  2571.  
  2572. pOut (PVOID) - output 
  2573.    Pointer to applicable data structure. 
  2574.  
  2575. rc (ULONG) - returns 
  2576.    Return codes. 
  2577.  
  2578.    Valid values are dictated by the applicable VMI_CMD_ function. 
  2579.  
  2580.  
  2581. ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Remarks ΓòÉΓòÉΓòÉ
  2582.  
  2583. None. 
  2584.  
  2585.  
  2586. ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Topics ΓòÉΓòÉΓòÉ
  2587.  
  2588. Select an item: 
  2589.  
  2590. Syntax
  2591. Parameters
  2592. Returns
  2593. Remarks
  2594. Glossary
  2595.  
  2596.  
  2597. ΓòÉΓòÉΓòÉ 6. Graphics Adapter Device Drivers ΓòÉΓòÉΓòÉ
  2598.  
  2599. This chapter describes the functions called by individual Graphics Adapter 
  2600. Device Drivers (GRADDs), which are designated by the prefix GHI_CMD_. The 
  2601. chapter also discusses Enhanced Direct Interface Video Extension (EnDIVE) 
  2602. functions, which are designated by the prefix EXT_CMD_. 
  2603.  
  2604.  
  2605. ΓòÉΓòÉΓòÉ 6.1. User Interfaces ΓòÉΓòÉΓòÉ
  2606.  
  2607. All GRADDs must export a function of the following typedef: 
  2608.  
  2609.  
  2610. ULONG  HWEntry(GID gid, ULONG ulFunction, PVOID pIn, PVOID pOut);
  2611.  
  2612.  
  2613. ΓòÉΓòÉΓòÉ 6.2. Adding Extensions ΓòÉΓòÉΓòÉ
  2614.  
  2615. One of the most important design points of the GRADD Model is the ability to 
  2616. extend or enhance the overall architecture. It is not possible to anticipate 
  2617. the changes in future graphics hardware, so we must provide a mechanism to 
  2618. extend the architecture in a manner that takes fullest advantage of the new 
  2619. hardware. 
  2620.  
  2621. There are many ways to extend the GRADD Model. Using the VMI_CMD_EXTENSION 
  2622. command, an extension can be written that passes its own defined commands to a 
  2623. GRADD. Support for an extension can be added to an existing GRADD, or a new 
  2624. GRADD can be written to handle the additional support for a given extension. 
  2625.  
  2626.  
  2627. ΓòÉΓòÉΓòÉ 6.2.1. Adding Extensions to an Existing GRADD ΓòÉΓòÉΓòÉ
  2628.  
  2629. When the Video Manager (VMAN) issues the GHI_CMD_INIT command to a GRADD, it 
  2630. gives the GRADD a unique ID. Upon return from the GHI_CMD_INIT command, the 
  2631. GRADD returns the number of function classes it supports. The GRADD must assign 
  2632. a unique GID to each of its function-class instances. The GID provided to the 
  2633. GRADD by VMAN must be bumped up by one for every function-class instance. 
  2634.  
  2635. Note:  For Presentation Manager and Seamless Windows functions, a GRADD must 
  2636.        support the Base Function class of services. The GRE2VMAN component 
  2637.        looks specifically for a GRADD that supports this class of function. 
  2638.  
  2639. VMAN will allocate one GRADDINFO structure for every class of function that a 
  2640. GRADD supports. VMAN will call GHI_CMD_QUERYCAPS once for every function-class 
  2641. instance. This allows an extension layer to associate a GID with a set of 
  2642. function classes. 
  2643.  
  2644. The extension layer uses the VMI_CMD_EXTENSION function to communicate with a 
  2645. GRADD. It is up to the extension layer to define the unique extension 
  2646. functions. The extensions must use VMAN to communicate with the GRADD. The 
  2647. input packet to the VMI_CMD_EXTENSION function includes information about 
  2648. screen change areas and hardware serialization. This information allows VMAN to 
  2649. maintain hardware pointer support and hardware serialization. 
  2650.  
  2651.  
  2652. ΓòÉΓòÉΓòÉ 6.2.2. Creating an Extension GRADD ΓòÉΓòÉΓòÉ
  2653.  
  2654. An extension GRADD can be added to the system without interfering with normal 
  2655. operations. The extension GRADD works in the same manner as a normal GRADD. The 
  2656. extension GRADD identifies itself to the system via the pszFunctionClassID 
  2657. field of the CAPSINFO data structure. This structure is returned to VMAN via 
  2658. GHI_CMD_QUERYCAPS. 
  2659.  
  2660. The extension layer communicates with the extension GRADD in the same manner 
  2661. described in the "Adding Extensions to an Existing GRADD" section earlier. 
  2662.  
  2663.  
  2664. ΓòÉΓòÉΓòÉ 6.2.2.1. Creating an EnDIVE Multimedia Extension GRADD ΓòÉΓòÉΓòÉ
  2665.  
  2666. OS/2 Warp supports an enhanced direct interface video extension, referred to as 
  2667. EnDIVE. This extension is designed to support graphics chips that handle video 
  2668. acceleration in hardware. The EnDIVE multimedia extension described here 
  2669. supports the same level of functionality under the GRADD Model. An EnDIVE 
  2670. driver for OS/2 Warp is directly portable to OS/2 Warp, Version 3, PowerPC 
  2671. Edition, because it has been designed as an extension GRADD. 
  2672.  
  2673. The following figure diagrams the DIVE Display Engine. 
  2674.  
  2675. The phrase "video acceleration" recently has taken on a new meaning. In the 
  2676. past, video acceleration was a way of describing hardware assist for bitblts, 
  2677. lines, and so on. Today, video acceleration or video accelerators describe 
  2678. hardware assist for video-acceleration software. The minimum requirement 
  2679. necessary to be considered a video accelerator is the ability to perform a 
  2680. stretch blit in hardware. More powerful video accelerators perform additional 
  2681. functions, such as dynamic color conversion, decompression, and compression. 
  2682. These types of operations are directly applicable to the needs of multimedia 
  2683. video-acceleration software. 
  2684.  
  2685. The EnDIVE multimedia extension GRADD consists of four functions, contained in 
  2686. the ulXSubFunction field of the HWEXTENSION packet. For each extension 
  2687. function, the input packet is pointed to by the pXP1 field of the HWEXTENSION 
  2688. packet. 
  2689.  
  2690. The four EnDIVE functions are listed below: 
  2691.  
  2692.   o  EXT_CMD_ENDIVE_GET 
  2693.  
  2694.   o  EXT_CMD_ENDIVE_INIT 
  2695.  
  2696.   o  EXT_CMD_ENDIVE_PUT 
  2697.  
  2698.   o  EXT_CMD_ENDIVE_QUERY 
  2699.  
  2700. For details on each of these functions, refer to Enhanced Direct Interface 
  2701. Video Extension (EnDIVE) Functions. 
  2702.  
  2703.  
  2704. ΓòÉΓòÉΓòÉ 6.3. NLS Support ΓòÉΓòÉΓòÉ
  2705.  
  2706. The GRADD Model is independent of the language and the operating system service 
  2707. being used. Double-byte character sets and other issues for different language 
  2708. releases are a matter of the translation of the operating system service, not 
  2709. of any code in the GRADD Model. 
  2710.  
  2711.  
  2712. ΓòÉΓòÉΓòÉ 6.4. Graphics Hardware Interface Functions ΓòÉΓòÉΓòÉ
  2713.  
  2714. The Graphics Adapter Device Driver Interface (GHI) functions are listed in the 
  2715. following table for easy reference. Each of these functions has an identical 
  2716. corresponding VMAN VMI_CMD_ function. The difference is that the VMI functions 
  2717. use VMIEntry, while the GHI functions use HWEntry. 
  2718.  
  2719. The following table lists the GRADD Graphics Hardware Interface functions and 
  2720. whether they are mandatory or optional. 
  2721.  
  2722. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2723. ΓöéFunction                                ΓöéType                Γöé
  2724. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2725. ΓöéGHI_CMD_BITBLT                          ΓöéOptional            Γöé
  2726. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2727. ΓöéGHI_CMD_EVENT                           ΓöéOptional            Γöé
  2728. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2729. ΓöéGHI_CMD_EXTENSION                       ΓöéOptional            Γöé
  2730. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2731. ΓöéGHI_CMD_INIT                            ΓöéMandatory           Γöé
  2732. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2733. ΓöéGHI_CMD_INITPROC                        ΓöéMandatory           Γöé
  2734. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2735. ΓöéGHI_CMD_LINE                            ΓöéOptional            Γöé
  2736. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2737. ΓöéGHI_CMD_MOVEPTR                         ΓöéOptional            Γöé
  2738. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2739. ΓöéGHI_CMD_PALETTE                         ΓöéMandatory*          Γöé
  2740. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2741. ΓöéGHI_CMD_QUERYCAPS                       ΓöéMandatory           Γöé
  2742. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2743. ΓöéGHI_CMD_QUERYMODES                      ΓöéMandatory           Γöé
  2744. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2745. ΓöéGHI_CMD_REQUESTHW                       ΓöéOptional            Γöé
  2746. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2747. ΓöéGHI_CMD_SETMODE                         ΓöéMandatory           Γöé
  2748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2749. ΓöéGHI_CMD_SETPTR                          ΓöéOptional            Γöé
  2750. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2751. ΓöéGHI_CMD_SHOWPTR                         ΓöéOptional            Γöé
  2752. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2753. ΓöéGHI_CMD_TERM                            ΓöéOptional            Γöé
  2754. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2755. ΓöéGHI_CMD_TERMPROC                        ΓöéOptional            Γöé
  2756. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2757. ΓöéGHI_CMD_VRAM                            ΓöéOptional            Γöé
  2758. Γöé                                        Γöé* At 256 color modesΓöé
  2759. Γöé                                        Γöéonly.               Γöé
  2760. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2761.  
  2762.  
  2763. ΓòÉΓòÉΓòÉ 6.5. GHI_CMD_BITBLT ΓòÉΓòÉΓòÉ
  2764.  
  2765.  
  2766. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Syntax ΓòÉΓòÉΓòÉ
  2767.  
  2768. /*******************************************/
  2769. /* Description:  GHI_CMD_BITBLT is         */
  2770. /* optional and is called to draw bit maps */
  2771. /* to and from the video display. The      */
  2772. /* GRADD can return this function call to  */
  2773. /* VMAN for simulation.                    */
  2774. /*******************************************/
  2775. #include <ddi.h>
  2776.  
  2777. GID      gid;         /*  ID of the GRADD. */
  2778. ULONG    ulFunction;  /*  Set equal to GHI_CMD_BITBLT. */
  2779. PVOID    pIn;         /*  Pointer to a BITBLTINFO data structure. */
  2780. PVOID    pOut;        /*  NULL; no output structure needed. */
  2781. ULONG    rc;          /*  Return codes. */
  2782.  
  2783. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  2784.  
  2785.  
  2786. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - gid ΓòÉΓòÉΓòÉ
  2787.  
  2788. gid (GID) - input 
  2789.    ID of the GRADD. 
  2790.  
  2791.  
  2792. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2793.  
  2794. ulFunction (ULONG) - input 
  2795.    Set equal to GHI_CMD_BITBLT. 
  2796.  
  2797.  
  2798. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - pIn ΓòÉΓòÉΓòÉ
  2799.  
  2800. pIn (PVOID) - input 
  2801.    Pointer to a BITBLTINFO data structure. 
  2802.  
  2803.  
  2804. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - pOut ΓòÉΓòÉΓòÉ
  2805.  
  2806. pOut (PVOID) - output 
  2807.    NULL; no output structure needed. 
  2808.  
  2809.  
  2810. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Return Value - rc ΓòÉΓòÉΓòÉ
  2811.  
  2812. rc (ULONG) - returns 
  2813.    Return codes. 
  2814.  
  2815.      RC_SIMULATE 
  2816.      RC_SUCCESS 
  2817.      RC_ERROR 
  2818.  
  2819.  
  2820. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Parameters ΓòÉΓòÉΓòÉ
  2821.  
  2822. gid (GID) - input 
  2823.    ID of the GRADD. 
  2824.  
  2825. ulFunction (ULONG) - input 
  2826.    Set equal to GHI_CMD_BITBLT. 
  2827.  
  2828. pIn (PVOID) - input 
  2829.    Pointer to a BITBLTINFO data structure. 
  2830.  
  2831. pOut (PVOID) - output 
  2832.    NULL; no output structure needed. 
  2833.  
  2834. rc (ULONG) - returns 
  2835.    Return codes. 
  2836.  
  2837.      RC_SIMULATE 
  2838.      RC_SUCCESS 
  2839.      RC_ERROR 
  2840.  
  2841.  
  2842. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Remarks ΓòÉΓòÉΓòÉ
  2843.  
  2844. None. 
  2845.  
  2846.  
  2847. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Topics ΓòÉΓòÉΓòÉ
  2848.  
  2849. Select an item: 
  2850.  
  2851. Syntax
  2852. Parameters
  2853. Returns
  2854. Remarks
  2855. Glossary
  2856.  
  2857.  
  2858. ΓòÉΓòÉΓòÉ 6.6. GHI_CMD_EVENT ΓòÉΓòÉΓòÉ
  2859.  
  2860.  
  2861. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Syntax ΓòÉΓòÉΓòÉ
  2862.  
  2863. /*******************************************/
  2864. /* Description:  GHI_CMD_EVENT is optional */
  2865. /* and is called to notify a GRADD of      */
  2866. /* specific events.                        */
  2867. /*******************************************/
  2868. #include <ddi.h>
  2869.  
  2870. GID      gid;         /*  ID of the GRADD. */
  2871. ULONG    ulFunction;  /*  Set equal to GHI_CMD_EVENT. */
  2872. PVOID    pIn;         /*  Pointer to an HWEVENTIN data structure. */
  2873. PVOID    pOut;        /*  NULL; no output structure needed. */
  2874. ULONG    rc;          /*  Return codes. */
  2875.  
  2876. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  2877.  
  2878.  
  2879. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - gid ΓòÉΓòÉΓòÉ
  2880.  
  2881. gid (GID) - input 
  2882.    ID of the GRADD. 
  2883.  
  2884.  
  2885. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2886.  
  2887. ulFunction (ULONG) - input 
  2888.    Set equal to GHI_CMD_EVENT. 
  2889.  
  2890.  
  2891. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - pIn ΓòÉΓòÉΓòÉ
  2892.  
  2893. pIn (PVOID) - input 
  2894.    Pointer to an HWEVENTIN data structure. 
  2895.  
  2896.  
  2897. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - pOut ΓòÉΓòÉΓòÉ
  2898.  
  2899. pOut (PVOID) - output 
  2900.    NULL; no output structure needed. 
  2901.  
  2902.  
  2903. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Return Value - rc ΓòÉΓòÉΓòÉ
  2904.  
  2905. rc (ULONG) - returns 
  2906.    Return codes. 
  2907.  
  2908.      RC_UNSUPPORTED 
  2909.      RC_SUCCESS 
  2910.      RC_ERROR 
  2911.  
  2912.  
  2913. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Parameters ΓòÉΓòÉΓòÉ
  2914.  
  2915. gid (GID) - input 
  2916.    ID of the GRADD. 
  2917.  
  2918. ulFunction (ULONG) - input 
  2919.    Set equal to GHI_CMD_EVENT. 
  2920.  
  2921. pIn (PVOID) - input 
  2922.    Pointer to an HWEVENTIN data structure. 
  2923.  
  2924. pOut (PVOID) - output 
  2925.    NULL; no output structure needed. 
  2926.  
  2927. rc (ULONG) - returns 
  2928.    Return codes. 
  2929.  
  2930.      RC_UNSUPPORTED 
  2931.      RC_SUCCESS 
  2932.      RC_ERROR 
  2933.  
  2934.  
  2935. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Remarks ΓòÉΓòÉΓòÉ
  2936.  
  2937. None. 
  2938.  
  2939.  
  2940. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Topics ΓòÉΓòÉΓòÉ
  2941.  
  2942. Select an item: 
  2943.  
  2944. Syntax
  2945. Parameters
  2946. Returns
  2947. Remarks
  2948. Glossary
  2949.  
  2950.  
  2951. ΓòÉΓòÉΓòÉ 6.7. GHI_CMD_EXTENSION ΓòÉΓòÉΓòÉ
  2952.  
  2953.  
  2954. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Syntax ΓòÉΓòÉΓòÉ
  2955.  
  2956. /*******************************************/
  2957. /* Description:  GHI_CMD_EXTENSION is      */
  2958. /* optional and is called to send an       */
  2959. /* extension command to a GRADD. The       */
  2960. /* extension subfunction is placed in the  */
  2961. /* ulXSubFunction field of the pIn input   */
  2962. /* packet.                                 */
  2963. /*******************************************/
  2964. #include <ddi.h>
  2965.  
  2966. GID      gid;         /*  ID of the GRADD. */
  2967. ULONG    ulFunction;  /*  Set equal to GHI_CMD_EXTENSION. */
  2968. PVOID    pIn;         /*  Pointer to an HWEXTENSION structure. */
  2969. PVOID    pOut;        /*  Pointer to an extension-specific output structure. */
  2970. ULONG    rc;          /*  Return codes. */
  2971.  
  2972. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  2973.  
  2974.  
  2975. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - gid ΓòÉΓòÉΓòÉ
  2976.  
  2977. gid (GID) - input 
  2978.    ID of the GRADD. 
  2979.  
  2980.  
  2981. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - ulFunction ΓòÉΓòÉΓòÉ
  2982.  
  2983. ulFunction (ULONG) - input 
  2984.    Set equal to GHI_CMD_EXTENSION. 
  2985.  
  2986.  
  2987. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - pIn ΓòÉΓòÉΓòÉ
  2988.  
  2989. pIn (PVOID) - input 
  2990.    Pointer to an HWEXTENSION structure. 
  2991.  
  2992.  
  2993. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - pOut ΓòÉΓòÉΓòÉ
  2994.  
  2995. pOut (PVOID) - output 
  2996.    Pointer to an extension-specific output structure. 
  2997.  
  2998.  
  2999. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Return Value - rc ΓòÉΓòÉΓòÉ
  3000.  
  3001. rc (ULONG) - returns 
  3002.    Return codes. 
  3003.  
  3004.      RC_UNSUPPORTED 
  3005.      RC_SUCCESS 
  3006.      RC_ERROR 
  3007.  
  3008.  
  3009. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Parameters ΓòÉΓòÉΓòÉ
  3010.  
  3011. gid (GID) - input 
  3012.    ID of the GRADD. 
  3013.  
  3014. ulFunction (ULONG) - input 
  3015.    Set equal to GHI_CMD_EXTENSION. 
  3016.  
  3017. pIn (PVOID) - input 
  3018.    Pointer to an HWEXTENSION structure. 
  3019.  
  3020. pOut (PVOID) - output 
  3021.    Pointer to an extension-specific output structure. 
  3022.  
  3023. rc (ULONG) - returns 
  3024.    Return codes. 
  3025.  
  3026.      RC_UNSUPPORTED 
  3027.      RC_SUCCESS 
  3028.      RC_ERROR 
  3029.  
  3030.  
  3031. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Remarks ΓòÉΓòÉΓòÉ
  3032.  
  3033. None. 
  3034.  
  3035.  
  3036. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Topics ΓòÉΓòÉΓòÉ
  3037.  
  3038. Select an item: 
  3039.  
  3040. Syntax
  3041. Parameters
  3042. Returns
  3043. Remarks
  3044. Glossary
  3045.  
  3046.  
  3047. ΓòÉΓòÉΓòÉ 6.8. GHI_CMD_INIT ΓòÉΓòÉΓòÉ
  3048.  
  3049.  
  3050. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Syntax ΓòÉΓòÉΓòÉ
  3051.  
  3052. /*******************************************/
  3053. /* Description:  GHI_CMD_INIT is mandatory */
  3054. /* and is called to initialize the GRADD.  */
  3055. /* It is the first command a GRADD         */
  3056. /* receives from the Video Manager (VMAN). */
  3057. /*******************************************/
  3058. #include <ddi.h>
  3059.  
  3060. GID      gid;         /*  ID of the GRADD. */
  3061. ULONG    ulFunction;  /*  Set equal to GHI_CMD_INIT. */
  3062. PVOID    pIn;         /*  Pointer to a GDDINITIN data structure. */
  3063. PVOID    pOut;        /*  Pointer to a GDDINITOUT data structure. */
  3064. ULONG    rc;          /*  Return codes. */
  3065.  
  3066. rc = HWEntry(gid, ulFunction, pIn, pOut);
  3067.  
  3068.  
  3069. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - gid ΓòÉΓòÉΓòÉ
  3070.  
  3071. gid (GID) - input 
  3072.    ID of the GRADD. 
  3073.  
  3074.  
  3075. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3076.  
  3077. ulFunction (ULONG) - input 
  3078.    Set equal to GHI_CMD_INIT. 
  3079.  
  3080.  
  3081. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - pIn ΓòÉΓòÉΓòÉ
  3082.  
  3083. pIn (PVOID) - input 
  3084.    Pointer to a GDDINITIN data structure. 
  3085.  
  3086.  
  3087. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - pOut ΓòÉΓòÉΓòÉ
  3088.  
  3089. pOut (PVOID) - output 
  3090.    Pointer to a GDDINITOUT data structure. 
  3091.  
  3092.  
  3093. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Return Value - rc ΓòÉΓòÉΓòÉ
  3094.  
  3095. rc (ULONG) - returns 
  3096.    Return codes. 
  3097.  
  3098.      RC_SUCCESS 
  3099.      RC_ERROR 
  3100.  
  3101.  
  3102. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Parameters ΓòÉΓòÉΓòÉ
  3103.  
  3104. gid (GID) - input 
  3105.    ID of the GRADD. 
  3106.  
  3107. ulFunction (ULONG) - input 
  3108.    Set equal to GHI_CMD_INIT. 
  3109.  
  3110. pIn (PVOID) - input 
  3111.    Pointer to a GDDINITIN data structure. 
  3112.  
  3113. pOut (PVOID) - output 
  3114.    Pointer to a GDDINITOUT data structure. 
  3115.  
  3116. rc (ULONG) - returns 
  3117.    Return codes. 
  3118.  
  3119.      RC_SUCCESS 
  3120.      RC_ERROR 
  3121.  
  3122.  
  3123. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Remarks ΓòÉΓòÉΓòÉ
  3124.  
  3125. None. 
  3126.  
  3127.  
  3128. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Topics ΓòÉΓòÉΓòÉ
  3129.  
  3130. Select an item: 
  3131.  
  3132. Syntax
  3133. Parameters
  3134. Returns
  3135. Remarks
  3136. Glossary
  3137.  
  3138.  
  3139. ΓòÉΓòÉΓòÉ 6.9. GHI_CMD_INITPROC ΓòÉΓòÉΓòÉ
  3140.  
  3141.  
  3142. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Syntax ΓòÉΓòÉΓòÉ
  3143.  
  3144. /*******************************************/
  3145. /* Description:  GHI_CMD_INITPROC is       */
  3146. /* mandatory and informs a GRADD that a    */
  3147. /* new process is being initialized. It    */
  3148. /* indicates that this new process intends */
  3149. /* to be a client of the GRADD component.  */
  3150. /* The GRADD ensures that all data and     */
  3151. /* code is valid under this new process.   */
  3152. /*******************************************/
  3153. #include <ddi.h>
  3154.  
  3155. GID      gid;         /*  ID of the GRADD. */
  3156. ULONG    ulFunction;  /*  Set equal to GHI_CMD_INITPROC. */
  3157. PVOID    pIn;         /*  NULL. */
  3158. PVOID    pOut;        /*  Pointer to an INITPROCOUT data structure. */
  3159. ULONG    rc;          /*  Return codes. */
  3160.  
  3161. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3162.  
  3163.  
  3164. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - gid ΓòÉΓòÉΓòÉ
  3165.  
  3166. gid (GID) - input 
  3167.    ID of the GRADD. 
  3168.  
  3169.  
  3170. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3171.  
  3172. ulFunction (ULONG) - input 
  3173.    Set equal to GHI_CMD_INITPROC. 
  3174.  
  3175.  
  3176. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - pIn ΓòÉΓòÉΓòÉ
  3177.  
  3178. pIn (PVOID) - input 
  3179.    NULL. 
  3180.  
  3181.  
  3182. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - pOut ΓòÉΓòÉΓòÉ
  3183.  
  3184. pOut (PVOID) - output 
  3185.    Pointer to an INITPROCOUT data structure. 
  3186.  
  3187.  
  3188. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Return Value - rc ΓòÉΓòÉΓòÉ
  3189.  
  3190. rc (ULONG) - returns 
  3191.    Return codes. 
  3192.  
  3193.      RC_SUCCESS 
  3194.      RC_ERROR 
  3195.  
  3196.  
  3197. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Parameters ΓòÉΓòÉΓòÉ
  3198.  
  3199. gid (GID) - input 
  3200.    ID of the GRADD. 
  3201.  
  3202. ulFunction (ULONG) - input 
  3203.    Set equal to GHI_CMD_INITPROC. 
  3204.  
  3205. pIn (PVOID) - input 
  3206.    NULL. 
  3207.  
  3208. pOut (PVOID) - output 
  3209.    Pointer to an INITPROCOUT data structure. 
  3210.  
  3211. rc (ULONG) - returns 
  3212.    Return codes. 
  3213.  
  3214.      RC_SUCCESS 
  3215.      RC_ERROR 
  3216.  
  3217.  
  3218. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Remarks ΓòÉΓòÉΓòÉ
  3219.  
  3220. None. 
  3221.  
  3222.  
  3223. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Topics ΓòÉΓòÉΓòÉ
  3224.  
  3225. Select an item: 
  3226.  
  3227. Syntax
  3228. Parameters
  3229. Returns
  3230. Remarks
  3231. Glossary
  3232.  
  3233.  
  3234. ΓòÉΓòÉΓòÉ 6.10. GHI_CMD_LINE ΓòÉΓòÉΓòÉ
  3235.  
  3236.  
  3237. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Syntax ΓòÉΓòÉΓòÉ
  3238.  
  3239. /*******************************************/
  3240. /* Description:  GHI_CMD_LINE is optional  */
  3241. /* and is called to draw lines to the      */
  3242. /* video display. The GRADD can return     */
  3243. /* this function call to VMAN for          */
  3244. /* simulation.                             */
  3245. /*******************************************/
  3246. #include <ddi.h>
  3247.  
  3248. GID      gid;         /*  ID of the GRADD. */
  3249. ULONG    ulFunction;  /*  Set equal to GHI_CMD_LINE. */
  3250. PVOID    pIn;         /*  Pointer to a LINEINFO data structure. */
  3251. PVOID    pOut;        /*  NULL; no output structure needed. */
  3252. ULONG    rc;          /*  Return codes. */
  3253.  
  3254. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3255.  
  3256.  
  3257. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - gid ΓòÉΓòÉΓòÉ
  3258.  
  3259. gid (GID) - input 
  3260.    ID of the GRADD. 
  3261.  
  3262.  
  3263. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3264.  
  3265. ulFunction (ULONG) - input 
  3266.    Set equal to GHI_CMD_LINE. 
  3267.  
  3268.  
  3269. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - pIn ΓòÉΓòÉΓòÉ
  3270.  
  3271. pIn (PVOID) - input 
  3272.    Pointer to a LINEINFO data structure. 
  3273.  
  3274.  
  3275. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - pOut ΓòÉΓòÉΓòÉ
  3276.  
  3277. pOut (PVOID) - output 
  3278.    NULL; no output structure needed. 
  3279.  
  3280.  
  3281. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Return Value - rc ΓòÉΓòÉΓòÉ
  3282.  
  3283. rc (ULONG) - returns 
  3284.    Return codes. 
  3285.  
  3286.      RC_SIMULATE 
  3287.      RC_SUCCESS 
  3288.      RC_ERROR 
  3289.  
  3290.  
  3291. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Parameters ΓòÉΓòÉΓòÉ
  3292.  
  3293. gid (GID) - input 
  3294.    ID of the GRADD. 
  3295.  
  3296. ulFunction (ULONG) - input 
  3297.    Set equal to GHI_CMD_LINE. 
  3298.  
  3299. pIn (PVOID) - input 
  3300.    Pointer to a LINEINFO data structure. 
  3301.  
  3302. pOut (PVOID) - output 
  3303.    NULL; no output structure needed. 
  3304.  
  3305. rc (ULONG) - returns 
  3306.    Return codes. 
  3307.  
  3308.      RC_SIMULATE 
  3309.      RC_SUCCESS 
  3310.      RC_ERROR 
  3311.  
  3312.  
  3313. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Remarks ΓòÉΓòÉΓòÉ
  3314.  
  3315. None. 
  3316.  
  3317.  
  3318. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Topics ΓòÉΓòÉΓòÉ
  3319.  
  3320. Select an item: 
  3321.  
  3322. Syntax
  3323. Parameters
  3324. Returns
  3325. Remarks
  3326. Glossary
  3327.  
  3328.  
  3329. ΓòÉΓòÉΓòÉ 6.11. GHI_CMD_MOVEPTR ΓòÉΓòÉΓòÉ
  3330.  
  3331.  
  3332. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Syntax ΓòÉΓòÉΓòÉ
  3333.  
  3334. /*******************************************/
  3335. /* Description:  GHI_CMD_MOVEPTR is        */
  3336. /* optional and is called to move the      */
  3337. /* pointer to the new location. The GRADD  */
  3338. /* can return this function call to VMAN   */
  3339. /* for simulation.                         */
  3340. /*******************************************/
  3341. #include <ddi.h>
  3342.  
  3343. GID      gid;         /*  ID of the GRADD. */
  3344. ULONG    ulFunction;  /*  Set equal to GHI_CMD_MOVEPTR. */
  3345. PVOID    pIn;         /*  Pointer to an HWMOVEPTRIN structure. */
  3346. PVOID    pOut;        /*  NULL; no output structure needed. */
  3347. ULONG    rc;          /*  Return codes. */
  3348.  
  3349. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3350.  
  3351.  
  3352. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - gid ΓòÉΓòÉΓòÉ
  3353.  
  3354. gid (GID) - input 
  3355.    ID of the GRADD. 
  3356.  
  3357.  
  3358. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3359.  
  3360. ulFunction (ULONG) - input 
  3361.    Set equal to GHI_CMD_MOVEPTR. 
  3362.  
  3363.  
  3364. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - pIn ΓòÉΓòÉΓòÉ
  3365.  
  3366. pIn (PVOID) - input 
  3367.    Pointer to an HWMOVEPTRIN structure. 
  3368.  
  3369.  
  3370. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - pOut ΓòÉΓòÉΓòÉ
  3371.  
  3372. pOut (PVOID) - output 
  3373.    NULL; no output structure needed. 
  3374.  
  3375.  
  3376. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Return Value - rc ΓòÉΓòÉΓòÉ
  3377.  
  3378. rc (ULONG) - returns 
  3379.    Return codes. 
  3380.  
  3381.      RC_SIMULATE 
  3382.      RC_SUCCESS 
  3383.      RC_ERROR 
  3384.  
  3385.  
  3386. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Parameters ΓòÉΓòÉΓòÉ
  3387.  
  3388. gid (GID) - input 
  3389.    ID of the GRADD. 
  3390.  
  3391. ulFunction (ULONG) - input 
  3392.    Set equal to GHI_CMD_MOVEPTR. 
  3393.  
  3394. pIn (PVOID) - input 
  3395.    Pointer to an HWMOVEPTRIN structure. 
  3396.  
  3397. pOut (PVOID) - output 
  3398.    NULL; no output structure needed. 
  3399.  
  3400. rc (ULONG) - returns 
  3401.    Return codes. 
  3402.  
  3403.      RC_SIMULATE 
  3404.      RC_SUCCESS 
  3405.      RC_ERROR 
  3406.  
  3407.  
  3408. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Remarks ΓòÉΓòÉΓòÉ
  3409.  
  3410. None. 
  3411.  
  3412.  
  3413. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Topics ΓòÉΓòÉΓòÉ
  3414.  
  3415. Select an item: 
  3416.  
  3417. Syntax
  3418. Parameters
  3419. Returns
  3420. Remarks
  3421. Glossary
  3422.  
  3423.  
  3424. ΓòÉΓòÉΓòÉ 6.12. GHI_CMD_PALETTE ΓòÉΓòÉΓòÉ
  3425.  
  3426.  
  3427. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Syntax ΓòÉΓòÉΓòÉ
  3428.  
  3429. /*******************************************/
  3430. /* Description:  GHI_CMD_PALETTE is        */
  3431. /* mandatory if the device supports        */
  3432. /* 256-color mode.  This function is       */
  3433. /* called to set the hardware palette. The */
  3434. /* GRADD is expected to respond by         */
  3435. /* describing the palette in a given array */
  3436. /* or by using the palette given in the    */
  3437. /* array. The GRADD is always given an     */
  3438. /* HWPALETTEINFO structure with either the */
  3439. /* PALETTE_GET or PALETTE_SET flag to      */
  3440. /* specify the operation to perform.       */
  3441. /*******************************************/
  3442. #include <ddi.h>
  3443.  
  3444. GID      gid;         /*  ID of the GRADD. */
  3445. ULONG    ulFunction;  /*  Set equal to GHI_CMD_PALETTE. */
  3446. PVOID    pIn;         /*  Pointer to an HWPALETTEINFO structure. */
  3447. PVOID    pOut;        /*  Depends on value of pIn. */
  3448. ULONG    rc;          /*  Return codes. */
  3449.  
  3450. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3451.  
  3452.  
  3453. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - gid ΓòÉΓòÉΓòÉ
  3454.  
  3455. gid (GID) - input 
  3456.    ID of the GRADD. 
  3457.  
  3458.  
  3459. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3460.  
  3461. ulFunction (ULONG) - input 
  3462.    Set equal to GHI_CMD_PALETTE. 
  3463.  
  3464.  
  3465. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - pIn ΓòÉΓòÉΓòÉ
  3466.  
  3467. pIn (PVOID) - input 
  3468.    Pointer to an HWPALETTEINFO structure. 
  3469.  
  3470.  
  3471. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - pOut ΓòÉΓòÉΓòÉ
  3472.  
  3473. pOut (PVOID) - output 
  3474.    Depends on value of pIn. 
  3475.  
  3476.    If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a 
  3477.    pointer to an HWPALETTEINFO data structure. 
  3478.  
  3479.  
  3480. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Return Value - rc ΓòÉΓòÉΓòÉ
  3481.  
  3482. rc (ULONG) - returns 
  3483.    Return codes. 
  3484.  
  3485.      RC_SUCCESS 
  3486.      RC_ERROR 
  3487.  
  3488.  
  3489. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Parameters ΓòÉΓòÉΓòÉ
  3490.  
  3491. gid (GID) - input 
  3492.    ID of the GRADD. 
  3493.  
  3494. ulFunction (ULONG) - input 
  3495.    Set equal to GHI_CMD_PALETTE. 
  3496.  
  3497. pIn (PVOID) - input 
  3498.    Pointer to an HWPALETTEINFO structure. 
  3499.  
  3500. pOut (PVOID) - output 
  3501.    Depends on value of pIn. 
  3502.  
  3503.    If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a 
  3504.    pointer to an HWPALETTEINFO data structure. 
  3505.  
  3506. rc (ULONG) - returns 
  3507.    Return codes. 
  3508.  
  3509.      RC_SUCCESS 
  3510.      RC_ERROR 
  3511.  
  3512.  
  3513. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Remarks ΓòÉΓòÉΓòÉ
  3514.  
  3515. None. 
  3516.  
  3517.  
  3518. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Topics ΓòÉΓòÉΓòÉ
  3519.  
  3520. Select an item: 
  3521.  
  3522. Syntax
  3523. Parameters
  3524. Returns
  3525. Remarks
  3526. Glossary
  3527.  
  3528.  
  3529. ΓòÉΓòÉΓòÉ 6.13. GHI_CMD_QUERYCAPS ΓòÉΓòÉΓòÉ
  3530.  
  3531.  
  3532. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Syntax ΓòÉΓòÉΓòÉ
  3533.  
  3534. /*******************************************/
  3535. /* Description:  GHI_CMD_QUERYCAPS is      */
  3536. /* mandatory. The GRADD is expected to     */
  3537. /* return its capabilities. The returned   */
  3538. /* capabilities are packaged by VMAN and   */
  3539. /* given to a Translation Layer. The       */
  3540. /* Translation Layer uses these            */
  3541. /* capabilities to decide which GHI_CMD_   */
  3542. /* functions are sent to the GRADD.        */
  3543. /*******************************************/
  3544. #include <ddi.h>
  3545.  
  3546. GID      gid;         /*  ID of the GRADD. */
  3547. ULONG    ulFunction;  /*  Set equal to GHI_CMD_QUERYCAPS. */
  3548. PVOID    pIn;         /*  NULL. */
  3549. PVOID    pOut;        /*  Pointer to a CAPSINFO data structure. */
  3550. ULONG    rc;          /*  Return codes. */
  3551.  
  3552. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3553.  
  3554.  
  3555. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - gid ΓòÉΓòÉΓòÉ
  3556.  
  3557. gid (GID) - input 
  3558.    ID of the GRADD. 
  3559.  
  3560.  
  3561. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3562.  
  3563. ulFunction (ULONG) - input 
  3564.    Set equal to GHI_CMD_QUERYCAPS. 
  3565.  
  3566.  
  3567. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - pIn ΓòÉΓòÉΓòÉ
  3568.  
  3569. pIn (PVOID) - input 
  3570.    NULL. 
  3571.  
  3572.  
  3573. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - pOut ΓòÉΓòÉΓòÉ
  3574.  
  3575. pOut (PVOID) - output 
  3576.    Pointer to a CAPSINFO data structure. 
  3577.  
  3578.  
  3579. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Return Value - rc ΓòÉΓòÉΓòÉ
  3580.  
  3581. rc (ULONG) - returns 
  3582.    Return codes. 
  3583.  
  3584.      RC_SUCCESS 
  3585.      RC_ERROR 
  3586.  
  3587.  
  3588. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Parameters ΓòÉΓòÉΓòÉ
  3589.  
  3590. gid (GID) - input 
  3591.    ID of the GRADD. 
  3592.  
  3593. ulFunction (ULONG) - input 
  3594.    Set equal to GHI_CMD_QUERYCAPS. 
  3595.  
  3596. pIn (PVOID) - input 
  3597.    NULL. 
  3598.  
  3599. pOut (PVOID) - output 
  3600.    Pointer to a CAPSINFO data structure. 
  3601.  
  3602. rc (ULONG) - returns 
  3603.    Return codes. 
  3604.  
  3605.      RC_SUCCESS 
  3606.      RC_ERROR 
  3607.  
  3608.  
  3609. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Remarks ΓòÉΓòÉΓòÉ
  3610.  
  3611. None. 
  3612.  
  3613.  
  3614. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Topics ΓòÉΓòÉΓòÉ
  3615.  
  3616. Select an item: 
  3617.  
  3618. Syntax
  3619. Parameters
  3620. Returns
  3621. Remarks
  3622. Glossary
  3623.  
  3624.  
  3625. ΓòÉΓòÉΓòÉ 6.14. GHI_CMD_QUERYMODES ΓòÉΓòÉΓòÉ
  3626.  
  3627.  
  3628. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Syntax ΓòÉΓòÉΓòÉ
  3629.  
  3630. /*******************************************/
  3631. /* Description:  GHI_CMD_QUERYMODES is     */
  3632. /* mandatory and is called to query the    */
  3633. /* available video mode information. The   */
  3634. /* GRADD is expected to respond with       */
  3635. /* information regarding the video         */
  3636. /* graphics modes supported by the GRADD.  */
  3637. /*******************************************/
  3638. #include <ddi.h>
  3639.  
  3640. GID      gid;         /*  ID of the GRADD. */
  3641. ULONG    ulFunction;  /*  Set equal to GHI_CMD_QUERYMODES. */
  3642. PVOID    pIn;         /*  Pointer that identifies a QUERYMODE operation. */
  3643. PVOID    pOut;        /*  Pointer to the pIn operation. */
  3644. ULONG    rc;          /*  Return codes. */
  3645.  
  3646. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3647.  
  3648.  
  3649. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - gid ΓòÉΓòÉΓòÉ
  3650.  
  3651. gid (GID) - input 
  3652.    ID of the GRADD. 
  3653.  
  3654.  
  3655. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3656.  
  3657. ulFunction (ULONG) - input 
  3658.    Set equal to GHI_CMD_QUERYMODES. 
  3659.  
  3660.  
  3661. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - pIn ΓòÉΓòÉΓòÉ
  3662.  
  3663. pIn (PVOID) - input 
  3664.    Pointer that identifies a QUERYMODE operation. 
  3665.  
  3666.    This pointer identifies one of the following operations: 
  3667.  
  3668.      QUERYMODE_NUM_MODES 
  3669.      QUERYMODE_MODE_DATA 
  3670.  
  3671.  
  3672. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - pOut ΓòÉΓòÉΓòÉ
  3673.  
  3674. pOut (PVOID) - output 
  3675.    Pointer to the pIn operation. 
  3676.  
  3677.    This pointer indicates one of the following, depending on the value of pIn: 
  3678.  
  3679.      QUERYMODE_NUM_MODES 
  3680.                Indicates a pointer to a ULONG that is to be given the number of 
  3681.                supported modes. 
  3682.      QUERYMODE_MODE_DATA 
  3683.                Indicates a pointer to an array of GDDMODEINFO structures large 
  3684.                enough for the number of supported modes. 
  3685.  
  3686.  
  3687. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Return Value - rc ΓòÉΓòÉΓòÉ
  3688.  
  3689. rc (ULONG) - returns 
  3690.    Return codes. 
  3691.  
  3692.      RC_SUCCESS 
  3693.      RC_ERROR 
  3694.  
  3695.  
  3696. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Parameters ΓòÉΓòÉΓòÉ
  3697.  
  3698. gid (GID) - input 
  3699.    ID of the GRADD. 
  3700.  
  3701. ulFunction (ULONG) - input 
  3702.    Set equal to GHI_CMD_QUERYMODES. 
  3703.  
  3704. pIn (PVOID) - input 
  3705.    Pointer that identifies a QUERYMODE operation. 
  3706.  
  3707.    This pointer identifies one of the following operations: 
  3708.  
  3709.      QUERYMODE_NUM_MODES 
  3710.      QUERYMODE_MODE_DATA 
  3711.  
  3712. pOut (PVOID) - output 
  3713.    Pointer to the pIn operation. 
  3714.  
  3715.    This pointer indicates one of the following, depending on the value of pIn: 
  3716.  
  3717.      QUERYMODE_NUM_MODES 
  3718.                Indicates a pointer to a ULONG that is to be given the number of 
  3719.                supported modes. 
  3720.      QUERYMODE_MODE_DATA 
  3721.                Indicates a pointer to an array of GDDMODEINFO structures large 
  3722.                enough for the number of supported modes. 
  3723.  
  3724. rc (ULONG) - returns 
  3725.    Return codes. 
  3726.  
  3727.      RC_SUCCESS 
  3728.      RC_ERROR 
  3729.  
  3730.  
  3731. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Remarks ΓòÉΓòÉΓòÉ
  3732.  
  3733. None. 
  3734.  
  3735.  
  3736. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Topics ΓòÉΓòÉΓòÉ
  3737.  
  3738. Select an item: 
  3739.  
  3740. Syntax
  3741. Parameters
  3742. Returns
  3743. Remarks
  3744. Glossary
  3745.  
  3746.  
  3747. ΓòÉΓòÉΓòÉ 6.15. GHI_CMD_REQUESTHW ΓòÉΓòÉΓòÉ
  3748.  
  3749.  
  3750. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Syntax ΓòÉΓòÉΓòÉ
  3751.  
  3752. /*******************************************/
  3753. /* Description:  GHI_CMD_REQUESTHW is      */
  3754. /* optional and allows a translation layer */
  3755. /* exclusive access to the video hardware. */
  3756. /* It can do such operations as writing    */
  3757. /* directly to the video buffer.  This     */
  3758. /* function is used to request and release */
  3759. /* the video hardware. The fRequest field  */
  3760. /* of the pIn data packet determines if    */
  3761. /* this function is a request or a release.*/
  3762. /*******************************************/
  3763. #include <ddi.h>
  3764.  
  3765. GID      gid;         /*  ID of the GRADD. */
  3766. ULONG    ulFunction;  /*  Set equal to GHI_CMD_REQUESTHW. */
  3767. PVOID    pIn;         /*  Pointer to an HWREQIN data structure. */
  3768. PVOID    pOut;        /*  NULL; no output structure needed. */
  3769. ULONG    rc;          /*  Return codes. */
  3770.  
  3771. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3772.  
  3773.  
  3774. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - gid ΓòÉΓòÉΓòÉ
  3775.  
  3776. gid (GID) - input 
  3777.    ID of the GRADD. 
  3778.  
  3779.  
  3780. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3781.  
  3782. ulFunction (ULONG) - input 
  3783.    Set equal to GHI_CMD_REQUESTHW. 
  3784.  
  3785.  
  3786. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - pIn ΓòÉΓòÉΓòÉ
  3787.  
  3788. pIn (PVOID) - input 
  3789.    Pointer to an HWREQIN data structure. 
  3790.  
  3791.  
  3792. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - pOut ΓòÉΓòÉΓòÉ
  3793.  
  3794. pOut (PVOID) - output 
  3795.    NULL; no output structure needed. 
  3796.  
  3797.  
  3798. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Return Value - rc ΓòÉΓòÉΓòÉ
  3799.  
  3800. rc (ULONG) - returns 
  3801.    Return codes. 
  3802.  
  3803.      RC_UNSUPPORTED 
  3804.      RC_SUCCESS 
  3805.      RC_ERROR 
  3806.  
  3807.  
  3808. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Parameters ΓòÉΓòÉΓòÉ
  3809.  
  3810. gid (GID) - input 
  3811.    ID of the GRADD. 
  3812.  
  3813. ulFunction (ULONG) - input 
  3814.    Set equal to GHI_CMD_REQUESTHW. 
  3815.  
  3816. pIn (PVOID) - input 
  3817.    Pointer to an HWREQIN data structure. 
  3818.  
  3819. pOut (PVOID) - output 
  3820.    NULL; no output structure needed. 
  3821.  
  3822. rc (ULONG) - returns 
  3823.    Return codes. 
  3824.  
  3825.      RC_UNSUPPORTED 
  3826.      RC_SUCCESS 
  3827.      RC_ERROR 
  3828.  
  3829.  
  3830. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Remarks ΓòÉΓòÉΓòÉ
  3831.  
  3832. None. 
  3833.  
  3834.  
  3835. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Topics ΓòÉΓòÉΓòÉ
  3836.  
  3837. Select an item: 
  3838.  
  3839. Syntax
  3840. Parameters
  3841. Returns
  3842. Remarks
  3843. Glossary
  3844.  
  3845.  
  3846. ΓòÉΓòÉΓòÉ 6.16. GHI_CMD_SETMODE ΓòÉΓòÉΓòÉ
  3847.  
  3848.  
  3849. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Syntax ΓòÉΓòÉΓòÉ
  3850.  
  3851. /*******************************************/
  3852. /* Description:  GHI_CMD_SETMODE is        */
  3853. /* mandatory. The GRADD is expected to set */
  3854. /* the video mode, given an ID of the      */
  3855. /* chosen mode.                            */
  3856. /*******************************************/
  3857. #include <ddi.h>
  3858.  
  3859. GID      gid;         /*  ID of the GRADD. */
  3860. ULONG    ulFunction;  /*  Set equal to GHI_CMD_SETMODE. */
  3861. PVOID    pIn;         /*  Pointer to PULONG containing the ID of the requested mode. */
  3862. PVOID    pOut;        /*  NULL. */
  3863. ULONG    rc;          /*  Return codes. */
  3864.  
  3865. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3866.  
  3867.  
  3868. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - gid ΓòÉΓòÉΓòÉ
  3869.  
  3870. gid (GID) - input 
  3871.    ID of the GRADD. 
  3872.  
  3873.  
  3874. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3875.  
  3876. ulFunction (ULONG) - input 
  3877.    Set equal to GHI_CMD_SETMODE. 
  3878.  
  3879.  
  3880. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - pIn ΓòÉΓòÉΓòÉ
  3881.  
  3882. pIn (PVOID) - input 
  3883.    Pointer to PULONG containing the ID of the requested mode. 
  3884.  
  3885.  
  3886. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - pOut ΓòÉΓòÉΓòÉ
  3887.  
  3888. pOut (PVOID) - output 
  3889.    NULL. 
  3890.  
  3891.  
  3892. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Return Value - rc ΓòÉΓòÉΓòÉ
  3893.  
  3894. rc (ULONG) - returns 
  3895.    Return codes. 
  3896.  
  3897.      RC_SUCCESS 
  3898.      RC_ERROR 
  3899.  
  3900.  
  3901. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Parameters ΓòÉΓòÉΓòÉ
  3902.  
  3903. gid (GID) - input 
  3904.    ID of the GRADD. 
  3905.  
  3906. ulFunction (ULONG) - input 
  3907.    Set equal to GHI_CMD_SETMODE. 
  3908.  
  3909. pIn (PVOID) - input 
  3910.    Pointer to PULONG containing the ID of the requested mode. 
  3911.  
  3912. pOut (PVOID) - output 
  3913.    NULL. 
  3914.  
  3915. rc (ULONG) - returns 
  3916.    Return codes. 
  3917.  
  3918.      RC_SUCCESS 
  3919.      RC_ERROR 
  3920.  
  3921.  
  3922. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Remarks ΓòÉΓòÉΓòÉ
  3923.  
  3924. None. 
  3925.  
  3926.  
  3927. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Topics ΓòÉΓòÉΓòÉ
  3928.  
  3929. Select an item: 
  3930.  
  3931. Syntax
  3932. Parameters
  3933. Returns
  3934. Remarks
  3935. Glossary
  3936.  
  3937.  
  3938. ΓòÉΓòÉΓòÉ 6.17. GHI_CMD_SETPTR ΓòÉΓòÉΓòÉ
  3939.  
  3940.  
  3941. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Syntax ΓòÉΓòÉΓòÉ
  3942.  
  3943. /*******************************************/
  3944. /* Description:  GHI_CMD_SETPTR is         */
  3945. /* optional and is called to set the       */
  3946. /* pointer bit masks. Both monochrome and  */
  3947. /* color pointers can be set.  The GRADD   */
  3948. /* can return this function call to VMAN   */
  3949. /* for simulation.                         */
  3950. /*******************************************/
  3951. #include <ddi.h>
  3952.  
  3953. GID      gid;         /*  ID of the GRADD. */
  3954. ULONG    ulFunction;  /*  Set equal to GHI_CMD_SETPTR. */
  3955. PVOID    pIn;         /*  Pointer to an HWSETPTRIN data structure. */
  3956. PVOID    pOut;        /*  Pointer to an HWSETPTROUT data structure. */
  3957. ULONG    rc;          /*  Return codes. */
  3958.  
  3959. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  3960.  
  3961.  
  3962. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - gid ΓòÉΓòÉΓòÉ
  3963.  
  3964. gid (GID) - input 
  3965.    ID of the GRADD. 
  3966.  
  3967.  
  3968. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
  3969.  
  3970. ulFunction (ULONG) - input 
  3971.    Set equal to GHI_CMD_SETPTR. 
  3972.  
  3973.  
  3974. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - pIn ΓòÉΓòÉΓòÉ
  3975.  
  3976. pIn (PVOID) - input 
  3977.    Pointer to an HWSETPTRIN data structure. 
  3978.  
  3979.  
  3980. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - pOut ΓòÉΓòÉΓòÉ
  3981.  
  3982. pOut (PVOID) - output 
  3983.    Pointer to an HWSETPTROUT data structure. 
  3984.  
  3985.  
  3986. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Return Value - rc ΓòÉΓòÉΓòÉ
  3987.  
  3988. rc (ULONG) - returns 
  3989.    Return codes. 
  3990.  
  3991.      RC_SIMULATE 
  3992.      RC_SUCCESS 
  3993.      RC_ERROR 
  3994.  
  3995.  
  3996. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Parameters ΓòÉΓòÉΓòÉ
  3997.  
  3998. gid (GID) - input 
  3999.    ID of the GRADD. 
  4000.  
  4001. ulFunction (ULONG) - input 
  4002.    Set equal to GHI_CMD_SETPTR. 
  4003.  
  4004. pIn (PVOID) - input 
  4005.    Pointer to an HWSETPTRIN data structure. 
  4006.  
  4007. pOut (PVOID) - output 
  4008.    Pointer to an HWSETPTROUT data structure. 
  4009.  
  4010. rc (ULONG) - returns 
  4011.    Return codes. 
  4012.  
  4013.      RC_SIMULATE 
  4014.      RC_SUCCESS 
  4015.      RC_ERROR 
  4016.  
  4017.  
  4018. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Remarks ΓòÉΓòÉΓòÉ
  4019.  
  4020. None. 
  4021.  
  4022.  
  4023. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Topics ΓòÉΓòÉΓòÉ
  4024.  
  4025. Select an item: 
  4026.  
  4027. Syntax
  4028. Parameters
  4029. Returns
  4030. Remarks
  4031. Glossary
  4032.  
  4033.  
  4034. ΓòÉΓòÉΓòÉ 6.18. GHI_CMD_SHOWPTR ΓòÉΓòÉΓòÉ
  4035.  
  4036.  
  4037. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Syntax ΓòÉΓòÉΓòÉ
  4038.  
  4039. /*******************************************/
  4040. /* Description:  GHI_CMD_SHOWPTR is        */
  4041. /* optional and sets the visibility state  */
  4042. /* of the pointer. The fShow field of the  */
  4043. /* pIn data packet determines the          */
  4044. /* visibility state.  The GRADD can return */
  4045. /* this function call to VMAN for          */
  4046. /* simulation.                             */
  4047. /*******************************************/
  4048. #include <ddi.h>
  4049.  
  4050. GID      gid;         /*  ID of the GRADD. */
  4051. ULONG    ulFunction;  /*  Set equal to GHI_CMD_SHOWPTR. */
  4052. PVOID    pIn;         /*  Pointer to an HWSHOWPTRIN data structure. */
  4053. PVOID    pOut;        /*  NULL; no output structure needed. */
  4054. ULONG    rc;          /*  Return codes. */
  4055.  
  4056. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4057.  
  4058.  
  4059. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - gid ΓòÉΓòÉΓòÉ
  4060.  
  4061. gid (GID) - input 
  4062.    ID of the GRADD. 
  4063.  
  4064.  
  4065. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4066.  
  4067. ulFunction (ULONG) - input 
  4068.    Set equal to GHI_CMD_SHOWPTR. 
  4069.  
  4070.  
  4071. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - pIn ΓòÉΓòÉΓòÉ
  4072.  
  4073. pIn (PVOID) - input 
  4074.    Pointer to an HWSHOWPTRIN data structure. 
  4075.  
  4076.  
  4077. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - pOut ΓòÉΓòÉΓòÉ
  4078.  
  4079. pOut (PVOID) - output 
  4080.    NULL; no output structure needed. 
  4081.  
  4082.  
  4083. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Return Value - rc ΓòÉΓòÉΓòÉ
  4084.  
  4085. rc (ULONG) - returns 
  4086.    Return codes. 
  4087.  
  4088.      RC_SIMULATE 
  4089.      RC_SUCCESS 
  4090.      RC_ERROR 
  4091.  
  4092.  
  4093. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Parameters ΓòÉΓòÉΓòÉ
  4094.  
  4095. gid (GID) - input 
  4096.    ID of the GRADD. 
  4097.  
  4098. ulFunction (ULONG) - input 
  4099.    Set equal to GHI_CMD_SHOWPTR. 
  4100.  
  4101. pIn (PVOID) - input 
  4102.    Pointer to an HWSHOWPTRIN data structure. 
  4103.  
  4104. pOut (PVOID) - output 
  4105.    NULL; no output structure needed. 
  4106.  
  4107. rc (ULONG) - returns 
  4108.    Return codes. 
  4109.  
  4110.      RC_SIMULATE 
  4111.      RC_SUCCESS 
  4112.      RC_ERROR 
  4113.  
  4114.  
  4115. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Remarks ΓòÉΓòÉΓòÉ
  4116.  
  4117. None. 
  4118.  
  4119.  
  4120. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Topics ΓòÉΓòÉΓòÉ
  4121.  
  4122. Select an item: 
  4123.  
  4124. Syntax
  4125. Parameters
  4126. Returns
  4127. Remarks
  4128. Glossary
  4129.  
  4130.  
  4131. ΓòÉΓòÉΓòÉ 6.19. GHI_CMD_TERM ΓòÉΓòÉΓòÉ
  4132.  
  4133.  
  4134. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Syntax ΓòÉΓòÉΓòÉ
  4135.  
  4136. /*******************************************/
  4137. /* Description:  GHI_CMD_TERM is optonal   */
  4138. /* and is called by a Translation Layer    */
  4139. /* when it no longer requires the services */
  4140. /* of VMAN.                                */
  4141. /*******************************************/
  4142. #include <ddi.h>
  4143.  
  4144. GID      gid;         /*  ID of the GRADD. */
  4145. ULONG    ulFunction;  /*  Set equal to GHI_CMD_TERM. */
  4146. PVOID    pIn;         /*  NULL. */
  4147. PVOID    pOut;        /*  NULL. */
  4148. ULONG    rc;          /*  Return codes. */
  4149.  
  4150. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4151.  
  4152.  
  4153. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - gid ΓòÉΓòÉΓòÉ
  4154.  
  4155. gid (GID) - input 
  4156.    ID of the GRADD. 
  4157.  
  4158.  
  4159. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4160.  
  4161. ulFunction (ULONG) - input 
  4162.    Set equal to GHI_CMD_TERM. 
  4163.  
  4164.  
  4165. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - pIn ΓòÉΓòÉΓòÉ
  4166.  
  4167. pIn (PVOID) - input 
  4168.    NULL. 
  4169.  
  4170.  
  4171. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - pOut ΓòÉΓòÉΓòÉ
  4172.  
  4173. pOut (PVOID) - output 
  4174.    NULL. 
  4175.  
  4176.  
  4177. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Return Value - rc ΓòÉΓòÉΓòÉ
  4178.  
  4179. rc (ULONG) - returns 
  4180.    Return codes. 
  4181.  
  4182.      RC_UNSUPPORTED 
  4183.      RC_SUCCESS 
  4184.      RC_ERROR 
  4185.  
  4186.  
  4187. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Parameters ΓòÉΓòÉΓòÉ
  4188.  
  4189. gid (GID) - input 
  4190.    ID of the GRADD. 
  4191.  
  4192. ulFunction (ULONG) - input 
  4193.    Set equal to GHI_CMD_TERM. 
  4194.  
  4195. pIn (PVOID) - input 
  4196.    NULL. 
  4197.  
  4198. pOut (PVOID) - output 
  4199.    NULL. 
  4200.  
  4201. rc (ULONG) - returns 
  4202.    Return codes. 
  4203.  
  4204.      RC_UNSUPPORTED 
  4205.      RC_SUCCESS 
  4206.      RC_ERROR 
  4207.  
  4208.  
  4209. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Remarks ΓòÉΓòÉΓòÉ
  4210.  
  4211. None. 
  4212.  
  4213.  
  4214. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Topics ΓòÉΓòÉΓòÉ
  4215.  
  4216. Select an item: 
  4217.  
  4218. Syntax
  4219. Parameters
  4220. Returns
  4221. Remarks
  4222. Glossary
  4223.  
  4224.  
  4225. ΓòÉΓòÉΓòÉ 6.20. GHI_CMD_TERMPROC ΓòÉΓòÉΓòÉ
  4226.  
  4227.  
  4228. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Syntax ΓòÉΓòÉΓòÉ
  4229.  
  4230. /*******************************************/
  4231. /* Description:  GHI_CMD_TERMPROC is       */
  4232. /* optional and informs the GRADD that an  */
  4233. /* existing client process is being        */
  4234. /* terminated. The GRADD should clean up   */
  4235. /* all resources owned by this process.    */
  4236. /*******************************************/
  4237. #include <ddi.h>
  4238.  
  4239. GID      gid;         /*  ID of the GRADD. */
  4240. ULONG    ulFunction;  /*  Set equal to GHI_CMD_TERMPROC. */
  4241. PVOID    pIn;         /*  NULL. */
  4242. PVOID    pOut;        /*  NULL. */
  4243. ULONG    rc;          /*  Return codes. */
  4244.  
  4245. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4246.  
  4247.  
  4248. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - gid ΓòÉΓòÉΓòÉ
  4249.  
  4250. gid (GID) - input 
  4251.    ID of the GRADD. 
  4252.  
  4253.  
  4254. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4255.  
  4256. ulFunction (ULONG) - input 
  4257.    Set equal to GHI_CMD_TERMPROC. 
  4258.  
  4259.  
  4260. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - pIn ΓòÉΓòÉΓòÉ
  4261.  
  4262. pIn (PVOID) - input 
  4263.    NULL. 
  4264.  
  4265.  
  4266. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - pOut ΓòÉΓòÉΓòÉ
  4267.  
  4268. pOut (PVOID) - output 
  4269.    NULL. 
  4270.  
  4271.  
  4272. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Return Value - rc ΓòÉΓòÉΓòÉ
  4273.  
  4274. rc (ULONG) - returns 
  4275.    Return codes. 
  4276.  
  4277.      RC_UNSUPPORTED 
  4278.      RC_SUCCESS 
  4279.      RC_ERROR 
  4280.  
  4281.  
  4282. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Parameters ΓòÉΓòÉΓòÉ
  4283.  
  4284. gid (GID) - input 
  4285.    ID of the GRADD. 
  4286.  
  4287. ulFunction (ULONG) - input 
  4288.    Set equal to GHI_CMD_TERMPROC. 
  4289.  
  4290. pIn (PVOID) - input 
  4291.    NULL. 
  4292.  
  4293. pOut (PVOID) - output 
  4294.    NULL. 
  4295.  
  4296. rc (ULONG) - returns 
  4297.    Return codes. 
  4298.  
  4299.      RC_UNSUPPORTED 
  4300.      RC_SUCCESS 
  4301.      RC_ERROR 
  4302.  
  4303.  
  4304. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Remarks ΓòÉΓòÉΓòÉ
  4305.  
  4306. None. 
  4307.  
  4308.  
  4309. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Topics ΓòÉΓòÉΓòÉ
  4310.  
  4311. Select an item: 
  4312.  
  4313. Syntax
  4314. Parameters
  4315. Returns
  4316. Remarks
  4317. Glossary
  4318.  
  4319.  
  4320. ΓòÉΓòÉΓòÉ 6.21. GHI_CMD_VRAM ΓòÉΓòÉΓòÉ
  4321.  
  4322.  
  4323. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Syntax ΓòÉΓòÉΓòÉ
  4324.  
  4325. /*******************************************/
  4326. /* Description:  GHI_CMD_VRAM is optional  */
  4327. /* and is called to request allocation of  */
  4328. /* off-screen video memory.                */
  4329. /*******************************************/
  4330. #include <ddi.h>
  4331.  
  4332. GID      gid;         /*  ID of the GRADD. */
  4333. ULONG    ulFunction;  /*  Set equal to GHI_CMD_VRAM. */
  4334. PVOID    pIn;         /*  Pointer to a VRAMIN data structure. */
  4335. PVOID    pOut;        /*  Pointer to a function-specific output data structure.  */
  4336. ULONG    rc;          /*  Return codes. */
  4337.  
  4338. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4339.  
  4340.  
  4341. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - gid ΓòÉΓòÉΓòÉ
  4342.  
  4343. gid (GID) - input 
  4344.    ID of the GRADD. 
  4345.  
  4346.  
  4347. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4348.  
  4349. ulFunction (ULONG) - input 
  4350.    Set equal to GHI_CMD_VRAM. 
  4351.  
  4352.  
  4353. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - pIn ΓòÉΓòÉΓòÉ
  4354.  
  4355. pIn (PVOID) - input 
  4356.    Pointer to a VRAMIN data structure. 
  4357.  
  4358.  
  4359. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - pOut ΓòÉΓòÉΓòÉ
  4360.  
  4361. pOut (PVOID) - output 
  4362.    Pointer to a function-specific output data structure. 
  4363.  
  4364.  
  4365. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Return Value - rc ΓòÉΓòÉΓòÉ
  4366.  
  4367. rc (ULONG) - returns 
  4368.    Return codes. 
  4369.  
  4370.      RC_UNSUPPORTED 
  4371.      RC_SUCCESS 
  4372.      RC_ERROR 
  4373.  
  4374.  
  4375. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Parameters ΓòÉΓòÉΓòÉ
  4376.  
  4377. gid (GID) - input 
  4378.    ID of the GRADD. 
  4379.  
  4380. ulFunction (ULONG) - input 
  4381.    Set equal to GHI_CMD_VRAM. 
  4382.  
  4383. pIn (PVOID) - input 
  4384.    Pointer to a VRAMIN data structure. 
  4385.  
  4386. pOut (PVOID) - output 
  4387.    Pointer to a function-specific output data structure. 
  4388.  
  4389. rc (ULONG) - returns 
  4390.    Return codes. 
  4391.  
  4392.      RC_UNSUPPORTED 
  4393.      RC_SUCCESS 
  4394.      RC_ERROR 
  4395.  
  4396.  
  4397. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Remarks ΓòÉΓòÉΓòÉ
  4398.  
  4399. None. 
  4400.  
  4401.  
  4402. ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Topics ΓòÉΓòÉΓòÉ
  4403.  
  4404. Select an item: 
  4405.  
  4406. Syntax
  4407. Parameters
  4408. Returns
  4409. Remarks
  4410. Glossary
  4411.  
  4412.  
  4413. ΓòÉΓòÉΓòÉ 6.22. HWEntry ΓòÉΓòÉΓòÉ
  4414.  
  4415.  
  4416. ΓòÉΓòÉΓòÉ <hidden> HWEntry - Syntax ΓòÉΓòÉΓòÉ
  4417.  
  4418. /*******************************************/
  4419. /* Description:  HWEntry is the single     */
  4420. /* exported function from a graphics       */
  4421. /* adapter device driver (GRADD). It is    */
  4422. /* part of the Graphics Hardware Interface */
  4423. /* (GHI) protocol for GRADDs and receives  */
  4424. /* all of the operations from the Video    */
  4425. /* Manager (VMAN) component.               */
  4426. /*******************************************/
  4427. #include <ddi.h>
  4428.  
  4429. GID      gid;         /*  ID of the GRADD. */
  4430. ULONG    ulFunction;  /*  Set to appropriate GHI_CMD_ function. */
  4431. PVOID    pIn;         /*  Pointer to a GHI_-specific input data structure. */
  4432. PVOID    pOut;        /*  Pointer to a GHI_-specific output data structure. */
  4433. ULONG    rc;          /*  Return codes. */
  4434.  
  4435. rc = HWEntry(gid, ulFunction, pIn, pOut);
  4436.  
  4437.  
  4438. ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - gid ΓòÉΓòÉΓòÉ
  4439.  
  4440. gid (GID) - input 
  4441.    ID of the GRADD. 
  4442.  
  4443.  
  4444. ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4445.  
  4446. ulFunction (ULONG) - input 
  4447.    Set to appropriate GHI_CMD_ function. 
  4448.  
  4449.    This parameter is set to one of the GHI_CMD_ functions shown in the table at 
  4450.    the beginning of this section. 
  4451.  
  4452.  
  4453. ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - pIn ΓòÉΓòÉΓòÉ
  4454.  
  4455. pIn (PVOID) - input 
  4456.    Pointer to a GHI_-specific input data structure. 
  4457.  
  4458.  
  4459. ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - pOut ΓòÉΓòÉΓòÉ
  4460.  
  4461. pOut (PVOID) - output 
  4462.    Pointer to a GHI_-specific output data structure. 
  4463.  
  4464.  
  4465. ΓòÉΓòÉΓòÉ <hidden> HWEntry Return Value - rc ΓòÉΓòÉΓòÉ
  4466.  
  4467. rc (ULONG) - returns 
  4468.    Return codes. 
  4469.  
  4470.    Valid values are dictated by the applicable GHI_CMD_ function. 
  4471.  
  4472.  
  4473. ΓòÉΓòÉΓòÉ <hidden> HWEntry - Parameters ΓòÉΓòÉΓòÉ
  4474.  
  4475. gid (GID) - input 
  4476.    ID of the GRADD. 
  4477.  
  4478. ulFunction (ULONG) - input 
  4479.    Set to appropriate GHI_CMD_ function. 
  4480.  
  4481.    This parameter is set to one of the GHI_CMD_ functions shown in the table at 
  4482.    the beginning of this section. 
  4483.  
  4484. pIn (PVOID) - input 
  4485.    Pointer to a GHI_-specific input data structure. 
  4486.  
  4487. pOut (PVOID) - output 
  4488.    Pointer to a GHI_-specific output data structure. 
  4489.  
  4490. rc (ULONG) - returns 
  4491.    Return codes. 
  4492.  
  4493.    Valid values are dictated by the applicable GHI_CMD_ function. 
  4494.  
  4495.  
  4496. ΓòÉΓòÉΓòÉ <hidden> HWEntry - Remarks ΓòÉΓòÉΓòÉ
  4497.  
  4498. None. 
  4499.  
  4500.  
  4501. ΓòÉΓòÉΓòÉ <hidden> HWEntry - Topics ΓòÉΓòÉΓòÉ
  4502.  
  4503. Select an item: 
  4504.  
  4505. Syntax
  4506. Parameters
  4507. Returns
  4508. Remarks
  4509. Glossary
  4510.  
  4511.  
  4512. ΓòÉΓòÉΓòÉ 6.23. Enhanced Direct Interface Video Extension (EnDIVE) Functions ΓòÉΓòÉΓòÉ
  4513.  
  4514. The following table lists the EXT_CMD_ functions that are specific to the 
  4515. Enhanced Direct Interface Video Extension (EnDIVE) process. These EnDIVE 
  4516. functions do not have corresponding VMI_CMD_ functions. An EnDIVE driver 
  4517. created for OS/2 Warp can be easily ported to OS/2 Warp, Version 3, PowerPC 
  4518. Edition because it is an extension GRADD. 
  4519.  
  4520. The following table lists the EnDIVE functions and whether they are mandatory 
  4521. or optional. 
  4522.  
  4523. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4524. ΓöéFunction                                ΓöéType                Γöé
  4525. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4526. ΓöéEXT_CMD_ENDIVE_GET                      ΓöéOptional            Γöé
  4527. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4528. ΓöéEXT_CMD_ENDIVE_INIT                     ΓöéMandatory           Γöé
  4529. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4530. ΓöéEXT_CMD_ENDIVE_PUT                      ΓöéMandatory           Γöé
  4531. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4532. ΓöéEXT_CMD_ENDIVE_QUERY                    ΓöéMandatory           Γöé
  4533. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4534.  
  4535.  
  4536. ΓòÉΓòÉΓòÉ 6.24. EXT_CMD_ENDIVE_GET ΓòÉΓòÉΓòÉ
  4537.  
  4538.  
  4539. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Syntax ΓòÉΓòÉΓòÉ
  4540.  
  4541. /*******************************************/
  4542. /* Description:  EXT_CMD_ENDIVE_GET is     */
  4543. /* optional and is called to blit an image */
  4544. /* from the screen.                        */
  4545. /*******************************************/
  4546. #include <ddi.h>
  4547.  
  4548. GID      gid;         /*  ID of the GRADD. */
  4549. ULONG    ulFunction;  /*  Set equal to EXT_CMD_ENDIVE_GET. */
  4550. PVOID    pIn;         /*  Pointer to an IMAGEPACK data structure. */
  4551. PVOID    pOut;        /*  NULL. */
  4552. ULONG    rc;          /*  Return codes. */
  4553.  
  4554. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4555.  
  4556.  
  4557. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - gid ΓòÉΓòÉΓòÉ
  4558.  
  4559. gid (GID) - input 
  4560.    ID of the GRADD. 
  4561.  
  4562.  
  4563. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4564.  
  4565. ulFunction (ULONG) - input 
  4566.    Set equal to EXT_CMD_ENDIVE_GET. 
  4567.  
  4568.  
  4569. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - pIn ΓòÉΓòÉΓòÉ
  4570.  
  4571. pIn (PVOID) - input 
  4572.    Pointer to an IMAGEPACK data structure. 
  4573.  
  4574.  
  4575. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - pOut ΓòÉΓòÉΓòÉ
  4576.  
  4577. pOut (PVOID) - output 
  4578.    NULL. 
  4579.  
  4580.  
  4581. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Return Value - rc ΓòÉΓòÉΓòÉ
  4582.  
  4583. rc (ULONG) - returns 
  4584.    Return codes. 
  4585.  
  4586.      R_SIMULATE 
  4587.      RC_SUCCESS 
  4588.      RC_ERROR 
  4589.  
  4590.  
  4591. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Parameters ΓòÉΓòÉΓòÉ
  4592.  
  4593. gid (GID) - input 
  4594.    ID of the GRADD. 
  4595.  
  4596. ulFunction (ULONG) - input 
  4597.    Set equal to EXT_CMD_ENDIVE_GET. 
  4598.  
  4599. pIn (PVOID) - input 
  4600.    Pointer to an IMAGEPACK data structure. 
  4601.  
  4602. pOut (PVOID) - output 
  4603.    NULL. 
  4604.  
  4605. rc (ULONG) - returns 
  4606.    Return codes. 
  4607.  
  4608.      R_SIMULATE 
  4609.      RC_SUCCESS 
  4610.      RC_ERROR 
  4611.  
  4612.  
  4613. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Remarks ΓòÉΓòÉΓòÉ
  4614.  
  4615. None. 
  4616.  
  4617.  
  4618. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Topics ΓòÉΓòÉΓòÉ
  4619.  
  4620. Select an item: 
  4621.  
  4622. Syntax
  4623. Parameters
  4624. Returns
  4625. Remarks
  4626. Glossary
  4627.  
  4628.  
  4629. ΓòÉΓòÉΓòÉ 6.25. EXT_CMD_ENDIVE_INIT ΓòÉΓòÉΓòÉ
  4630.  
  4631.  
  4632. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Syntax ΓòÉΓòÉΓòÉ
  4633.  
  4634. /*******************************************/
  4635. /* Description:  EXT_CMD_ENDIVE_INIT is    */
  4636. /* mandatory and is called to initialize   */
  4637. /* the hardware. The GRADD must determine  */
  4638. /* if the hardware is present.             */
  4639. /*******************************************/
  4640. #include <ddi.h>
  4641.  
  4642. GID      gid;         /*  ID of the GRADD. */
  4643. ULONG    ulFunction;  /*  Set equal to EXT_CMD_ENDIVE_INIT. */
  4644. PVOID    pIn;         /*  Pointer to an FBINFO data structure. */
  4645. PVOID    pOut;        /*  Pointer to an EXTINITOUT data structure. */
  4646. ULONG    rc;          /*  Return codes. */
  4647.  
  4648. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4649.  
  4650.  
  4651. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - gid ΓòÉΓòÉΓòÉ
  4652.  
  4653. gid (GID) - input 
  4654.    ID of the GRADD. 
  4655.  
  4656.  
  4657. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4658.  
  4659. ulFunction (ULONG) - input 
  4660.    Set equal to EXT_CMD_ENDIVE_INIT. 
  4661.  
  4662.  
  4663. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - pIn ΓòÉΓòÉΓòÉ
  4664.  
  4665. pIn (PVOID) - input 
  4666.    Pointer to an FBINFO data structure. 
  4667.  
  4668.  
  4669. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - pOut ΓòÉΓòÉΓòÉ
  4670.  
  4671. pOut (PVOID) - output 
  4672.    Pointer to an EXTINITOUT data structure. 
  4673.  
  4674.  
  4675. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Return Value - rc ΓòÉΓòÉΓòÉ
  4676.  
  4677. rc (ULONG) - returns 
  4678.    Return codes. 
  4679.  
  4680.      RC_SUCCESS 
  4681.      RC_ERROR 
  4682.  
  4683.  
  4684. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Parameters ΓòÉΓòÉΓòÉ
  4685.  
  4686. gid (GID) - input 
  4687.    ID of the GRADD. 
  4688.  
  4689. ulFunction (ULONG) - input 
  4690.    Set equal to EXT_CMD_ENDIVE_INIT. 
  4691.  
  4692. pIn (PVOID) - input 
  4693.    Pointer to an FBINFO data structure. 
  4694.  
  4695. pOut (PVOID) - output 
  4696.    Pointer to an EXTINITOUT data structure. 
  4697.  
  4698. rc (ULONG) - returns 
  4699.    Return codes. 
  4700.  
  4701.      RC_SUCCESS 
  4702.      RC_ERROR 
  4703.  
  4704.  
  4705. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Remarks ΓòÉΓòÉΓòÉ
  4706.  
  4707. None. 
  4708.  
  4709.  
  4710. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Topics ΓòÉΓòÉΓòÉ
  4711.  
  4712. Select an item: 
  4713.  
  4714. Syntax
  4715. Parameters
  4716. Returns
  4717. Remarks
  4718. Glossary
  4719.  
  4720.  
  4721. ΓòÉΓòÉΓòÉ 6.26. EXT_CMD_ENDIVE_PUT ΓòÉΓòÉΓòÉ
  4722.  
  4723.  
  4724. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Syntax ΓòÉΓòÉΓòÉ
  4725.  
  4726. /*******************************************/
  4727. /* Description:  EXT_CMD_ENDIVE_PUT is     */
  4728. /* mandatory and is called to blit an      */
  4729. /* image to the screen.                    */
  4730. /*******************************************/
  4731. #include <ddi.h>
  4732.  
  4733. GID      gid;         /*  ID of the GRADD. */
  4734. ULONG    ulFunction;  /*  Set equal to EXT_CMD_ENDIVE_PUT. */
  4735. PVOID    pIn;         /*  Pointer to an IMAGEPACK data structure. */
  4736. PVOID    pOut;        /*  NULL. */
  4737. ULONG    rc;          /*  Return codes. */
  4738.  
  4739. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4740.  
  4741.  
  4742. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - gid ΓòÉΓòÉΓòÉ
  4743.  
  4744. gid (GID) - input 
  4745.    ID of the GRADD. 
  4746.  
  4747.  
  4748. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4749.  
  4750. ulFunction (ULONG) - input 
  4751.    Set equal to EXT_CMD_ENDIVE_PUT. 
  4752.  
  4753.  
  4754. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - pIn ΓòÉΓòÉΓòÉ
  4755.  
  4756. pIn (PVOID) - input 
  4757.    Pointer to an IMAGEPACK data structure. 
  4758.  
  4759.  
  4760. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - pOut ΓòÉΓòÉΓòÉ
  4761.  
  4762. pOut (PVOID) - output 
  4763.    NULL. 
  4764.  
  4765.  
  4766. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Return Value - rc ΓòÉΓòÉΓòÉ
  4767.  
  4768. rc (ULONG) - returns 
  4769.    Return codes. 
  4770.  
  4771.      RC_SUCCESS 
  4772.      RC_ERROR 
  4773.  
  4774.  
  4775. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Parameters ΓòÉΓòÉΓòÉ
  4776.  
  4777. gid (GID) - input 
  4778.    ID of the GRADD. 
  4779.  
  4780. ulFunction (ULONG) - input 
  4781.    Set equal to EXT_CMD_ENDIVE_PUT. 
  4782.  
  4783. pIn (PVOID) - input 
  4784.    Pointer to an IMAGEPACK data structure. 
  4785.  
  4786. pOut (PVOID) - output 
  4787.    NULL. 
  4788.  
  4789. rc (ULONG) - returns 
  4790.    Return codes. 
  4791.  
  4792.      RC_SUCCESS 
  4793.      RC_ERROR 
  4794.  
  4795.  
  4796. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Remarks ΓòÉΓòÉΓòÉ
  4797.  
  4798. None. 
  4799.  
  4800.  
  4801. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Topics ΓòÉΓòÉΓòÉ
  4802.  
  4803. Select an item: 
  4804.  
  4805. Syntax
  4806. Parameters
  4807. Returns
  4808. Remarks
  4809. Glossary
  4810.  
  4811.  
  4812. ΓòÉΓòÉΓòÉ 6.27. EXT_CMD_ENDIVE_QUERY ΓòÉΓòÉΓòÉ
  4813.  
  4814.  
  4815. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Syntax ΓòÉΓòÉΓòÉ
  4816.  
  4817. /*******************************************/
  4818. /* Description:  EXT_CMD_ENDIVE_QUERY is   */
  4819. /* mandatory and queries the capabilities  */
  4820. /* of the hardware.                        */
  4821. /*******************************************/
  4822. #include <ddi.h>
  4823.  
  4824. GID      gid;         /*  ID of the GRADD. */
  4825. ULONG    ulFunction;  /*  Set equal to EXT_CMD_ENDIVE_QUERY. */
  4826. PVOID    pIn;         /*  NULL. */
  4827. PVOID    pOut;        /*  Pointer to an IMAGECAPS data structure. */
  4828. ULONG    rc;          /*  Return codes. */
  4829.  
  4830. rc = HWENTRY(gid, ulFunction, pIn, pOut);
  4831.  
  4832.  
  4833. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - gid ΓòÉΓòÉΓòÉ
  4834.  
  4835. gid (GID) - input 
  4836.    ID of the GRADD. 
  4837.  
  4838.  
  4839. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - ulFunction ΓòÉΓòÉΓòÉ
  4840.  
  4841. ulFunction (ULONG) - input 
  4842.    Set equal to EXT_CMD_ENDIVE_QUERY. 
  4843.  
  4844.  
  4845. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - pIn ΓòÉΓòÉΓòÉ
  4846.  
  4847. pIn (PVOID) - input 
  4848.    NULL. 
  4849.  
  4850.  
  4851. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - pOut ΓòÉΓòÉΓòÉ
  4852.  
  4853. pOut (PVOID) - output 
  4854.    Pointer to an IMAGECAPS data structure. 
  4855.  
  4856.  
  4857. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Return Value - rc ΓòÉΓòÉΓòÉ
  4858.  
  4859. rc (ULONG) - returns 
  4860.    Return codes. 
  4861.  
  4862.      RC_SUCCESS 
  4863.      RC_ERROR 
  4864.  
  4865.  
  4866. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Parameters ΓòÉΓòÉΓòÉ
  4867.  
  4868. gid (GID) - input 
  4869.    ID of the GRADD. 
  4870.  
  4871. ulFunction (ULONG) - input 
  4872.    Set equal to EXT_CMD_ENDIVE_QUERY. 
  4873.  
  4874. pIn (PVOID) - input 
  4875.    NULL. 
  4876.  
  4877. pOut (PVOID) - output 
  4878.    Pointer to an IMAGECAPS data structure. 
  4879.  
  4880. rc (ULONG) - returns 
  4881.    Return codes. 
  4882.  
  4883.      RC_SUCCESS 
  4884.      RC_ERROR 
  4885.  
  4886.  
  4887. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Remarks ΓòÉΓòÉΓòÉ
  4888.  
  4889. None. 
  4890.  
  4891.  
  4892. ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Topics ΓòÉΓòÉΓòÉ
  4893.  
  4894. Select an item: 
  4895.  
  4896. Syntax
  4897. Parameters
  4898. Returns
  4899. Remarks
  4900. Glossary
  4901.  
  4902.  
  4903. ΓòÉΓòÉΓòÉ 7. VIDEOPMI DLL Exported Functions ΓòÉΓòÉΓòÉ
  4904.  
  4905. There is only one exported entry point for VIDEOPMI. The various PMI services 
  4906. are accessed through different function numbers passed in the parameters. The 
  4907. exported entry point is prototyped, together with the PMI-related structures, 
  4908. in the common header file SVGADEFS.h. 
  4909.  
  4910.  
  4911. ΓòÉΓòÉΓòÉ 7.1. Exported Entry Point ΓòÉΓòÉΓòÉ
  4912.  
  4913. Prototype 
  4914.  
  4915.  
  4916. typedef APIRET  (EXPENTRY  *PFNVIDEOPMIREQUEST)(
  4917.  
  4918.                   PVIDEO_ADAPTER  pAdapterInstance,
  4919.  
  4920.                   ULONG           Function,
  4921.  
  4922.                   PVOID           pInput,
  4923.  
  4924.                   PVOID           pOutput);
  4925.  
  4926. Parameters 
  4927.  
  4928. pAdapterInstance: Pointer to the current VIDEO_ADAPTER structure. 
  4929.  
  4930. Function: PMIREQUEST function number. 
  4931.  
  4932. pInput: Pointer to the input parameter, if applicable. 
  4933.  
  4934. pOutput: Pointer to the output parameter, if applicable. 
  4935.  
  4936. Return Value 
  4937.  
  4938. NO_ERROR:  Successful completion. 
  4939.  
  4940. DOS error messages, otherwise. 
  4941.  
  4942. Notes 
  4943.  
  4944. EXPENTRY is C calling convention defined in OS/2 header file. 
  4945.  
  4946. See the PMIREQUEST function, PMIREQUEST_LOADPMIFILE, for the definition of 
  4947. VIDEO_ADAPTER. 
  4948.  
  4949.  
  4950. ΓòÉΓòÉΓòÉ 7.2. Supported Functions ΓòÉΓòÉΓòÉ
  4951.  
  4952. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4953. ΓöéFunction Name                      ΓöéPurpose                  Γöé
  4954. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4955. ΓöéPMIREQUEST_LOADPMIFILE             ΓöéLoad the specified PMI   Γöé
  4956. Γöé                                   Γöéfile                     Γöé
  4957. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4958. ΓöéPMIREQUEST_SETMODE                 ΓöéSet the given mode       Γöé
  4959. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4960. ΓöéPMIREQUEST_LOCKREGISTERS           ΓöéLock extended registers  Γöé
  4961. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4962. ΓöéPMIREQUEST_UNLOCKREGISTERS         ΓöéUnlock extended registersΓöé
  4963. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4964. ΓöéPMIREQUEST_CLEANUP                 ΓöéClean up extended        Γöé
  4965. Γöé                                   Γöéregisters                Γöé
  4966. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4967. ΓöéPMIREQUEST_SAVESTATE               ΓöéSave video adapter state Γöé
  4968. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4969. ΓöéPMIREQUEST_RESTORESTATE            ΓöéRestore video adapter    Γöé
  4970. Γöé                                   Γöéstate                    Γöé
  4971. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4972. ΓöéPMIREQUEST_GETBANK                 ΓöéGet currently addressed  Γöé
  4973. Γöé                                   Γöébank                     Γöé
  4974. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4975. ΓöéPMIREQUEST_SETBANK                 ΓöéSet current bank         Γöé
  4976. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4977. ΓöéPMIREQUEST_GETCLUT                 ΓöéGet copy of Color Lookup Γöé
  4978. Γöé                                   ΓöéTable                    Γöé
  4979. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4980. ΓöéPMIREQUEST_SETCLUT                 ΓöéSet Color Lookup Table   Γöé
  4981. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4982. ΓöéPMIREQUEST_GETPALETTE              ΓöéGet copy of palette      Γöé
  4983. Γöé                                   Γöéregisters                Γöé
  4984. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4985. ΓöéPMIREQUEST_SETPALETTE              ΓöéSet palette registers    Γöé
  4986. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4987. ΓöéPMIREQUEST_GETFONT                 ΓöéGet current loaded font  Γöé
  4988. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4989. ΓöéPMIREQUEST_SETFONT                 ΓöéLoad given font          Γöé
  4990. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4991. ΓöéPMIREQUEST_TUNEDISPLAY             ΓöéTune the display         Γöé
  4992. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4993. ΓöéPMIREQUEST_IDENTIFYADAPTER         ΓöéIdentify the installed   Γöé
  4994. Γöé                                   Γöéadapter                  Γöé
  4995. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4996. ΓöéPMIREQUEST_QUERYMAXMODEENTRIES     ΓöéReturn number of         Γöé
  4997. Γöé                                   Γöéavailable modes          Γöé
  4998. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4999. ΓöéPMIREQUEST_QUERYMAXMODELISTSIZE    ΓöéReturn maximum size      Γöé
  5000. Γöé                                   Γöérequired to store mode   Γöé
  5001. Γöé                                   Γöédata                     Γöé
  5002. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5003. ΓöéPMIREQUEST_QUERYMODEINFODATA       ΓöéReturn table of video    Γöé
  5004. Γöé                                   Γöémode information         Γöé
  5005. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5006. ΓöéPMIREQUEST_QUERYMAXTRAPENTRIES     ΓöéReturn number of trap    Γöé
  5007. Γöé                                   Γöéentries                  Γöé
  5008. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5009. ΓöéPMIREQUEST_QUERYTRAPLISTDATA       ΓöéReturn table of data for Γöé
  5010. Γöé                                   Γöétrapped ports            Γöé
  5011. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5012. ΓöéPMIREQUEST_QUERYMODEHRDWRLIST      ΓöéReturn the set mode      Γöé
  5013. Γöé                                   Γöécommand list             Γöé
  5014. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5015. ΓöéPMIREQUEST_WPOSVIDEOACCESS         ΓöéMap the video resource toΓöé
  5016. Γöé                                   Γöéthe address space of the Γöé
  5017. Γöé                                   Γöécalling process          Γöé
  5018. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5019. ΓöéPMIREQUEST_WPOSGETPIOINT           ΓöéGet the virtual address  Γöé
  5020. Γöé                                   Γöéof a physical address    Γöé
  5021. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5022.  
  5023.  
  5024. ΓòÉΓòÉΓòÉ 7.2.1. PMIREQUEST_LOADPMIFILE ΓòÉΓòÉΓòÉ
  5025.  
  5026. Description 
  5027.  
  5028. Loads the specified .PMI file. 
  5029.  
  5030. Parameters 
  5031.  
  5032. pAdapterInstance: Adapter instance (VIDEO_ADAPTER) 
  5033.  
  5034. Function: PMIREQUEST_LOADPMIFILE 
  5035.  
  5036. pInput: szFile (PSZ) 
  5037.  
  5038.      .PMI file name. 
  5039.  
  5040. pOutput: pStatus (PULONG) 
  5041.  
  5042.       If the .PMI file is already loaded, the value to which pStatus points is 
  5043.      set to TRUE. Otherwise, it is set to FALSE. 
  5044.  
  5045. Related Structures and Defines 
  5046.  
  5047. #define MAX_OEM_STRING  128
  5048.  
  5049. #define MAX_DAC_STRING  128
  5050.  
  5051. #define MAX_VERSION     128
  5052.  
  5053.  
  5054. /*
  5055.  
  5056.  * definitions of bus type
  5057.  
  5058.  */
  5059.  
  5060. #define ISA_BUS    0
  5061.  
  5062. #define VLB_BUS    1
  5063.  
  5064. #define PCI_BUS    2
  5065.  
  5066. #define EISA_BUS   3
  5067.  
  5068. #define PCMCIA**_BUS 4
  5069.  
  5070. #define MCA_BUS    5
  5071.  
  5072. /*
  5073.  
  5074. * endian type
  5075.  
  5076. */
  5077.  
  5078. #define LITTLE_ENDIAN  0
  5079.  
  5080. #define BIG_ENDIAN     1
  5081.  
  5082.  
  5083. #define HVIDEO   PVOID
  5084.  
  5085. typedef HVIDEO  *PHVIDEO;
  5086.  
  5087.  
  5088. typedef struct _ADAPTERINFO {
  5089.  
  5090.         ULONG       ulAdapterID;
  5091.  
  5092.         CHAR        szOEMString[MAX_OEM_STRING];
  5093.  
  5094.         CHAR        szDACString[MAX_DAC_STRING];
  5095.  
  5096.         CHAR        szRevision[MAX_VERSION];
  5097.  
  5098.         ULONG       ulTotalMemory;
  5099.  
  5100.         ULONG       ulMMIOBaseAddress;
  5101.  
  5102.         ULONG       ulPIOBaseAddress;
  5103.  
  5104.         BYTE        bBusType;
  5105.  
  5106.         BYTE        bEndian;
  5107.  
  5108.         USHORT      usDeviceBusID;
  5109.  
  5110.         USHORT      usVendorBusID;
  5111.  
  5112.         USHORT      SlotID;
  5113.  
  5114. } ADAPTERINFO, FAR *PADAPTERINFO;
  5115.  
  5116. /*
  5117.  * Adapter Instance definition. The structure will be passed in
  5118.  
  5119.  * every PMIREQUEST call.
  5120.  
  5121.  */
  5122.  
  5123. typedef struct _VIDEO_ADAPTER {
  5124.  
  5125.      HVIDEO          hvideo;
  5126.  
  5127.      ADAPTERINFO     Adapter;
  5128.  
  5129.      VIDEOMODEINFO   ModeInfo;
  5130.  
  5131. } VIDEO_ADAPTER, FAR *PVIDEO_ADAPTER;
  5132.  
  5133. See PMIREQUEST_QUERYMODEINFODATA for the definition of VIDEOMODEINFO. 
  5134.  
  5135. Notes 
  5136.  
  5137. If the .PMI file is successfully loaded, the Adapter field in VIDEO_ADAPTER 
  5138. will be filled with the information from the .PMI file. 
  5139.  
  5140.  
  5141. ΓòÉΓòÉΓòÉ 7.2.2. PMIREQUEST_SETMODE ΓòÉΓòÉΓòÉ
  5142.  
  5143. Description 
  5144.  
  5145. Sets requested video mode. 
  5146.  
  5147. Parameters 
  5148.  
  5149. Function:  PMIREQUEST_SETMODE 
  5150.  
  5151. pInput: pModeId (PMODEID) 
  5152.  
  5153.      Pointer to mode ID, from VIDEOMODEINFO structure. 
  5154.  
  5155. pOutput: pHWSetModeList(PHWCOMMAND) 
  5156.  
  5157.      Pointer to the set mode hardware command list. 
  5158.  
  5159. Related Structures and Defines 
  5160.  
  5161.  
  5162. typedef  ULONG  *     PMODEID;
  5163.  
  5164. Notes 
  5165.  
  5166. If pHWSetModeList is not NULL, the hardware command list of SetMode is copied. 
  5167. It will be used in saving and restoring a session. The size of the memory to 
  5168. which pHWSetModeList points is the maximum size of the hardware command list, 
  5169. which is returned by the PMIREQUEST_QUERYMAXMODELISTSIZE function. The 
  5170. HWCOMMAND structure is used internally in VIDEOPMI. 
  5171.  
  5172.  
  5173. ΓòÉΓòÉΓòÉ 7.2.3. PMIREQUEST_SAVESTATE ΓòÉΓòÉΓòÉ
  5174.  
  5175. Description 
  5176.  
  5177. Saves partial or complete state of the hardware. 
  5178.  
  5179. Parameters 
  5180.  
  5181. Function: PMIREQUEST_SAVESTATE 
  5182.  
  5183. pInput: None. 
  5184.  
  5185. pOutput: pStateData (PVIDEOSTATE) 
  5186.  
  5187.      Pointer to the video state. 
  5188.  
  5189. Related Structures and Defines 
  5190.  
  5191.  
  5192. /*
  5193.  
  5194. ** possible values for fStateFlags
  5195.  
  5196. */
  5197.  
  5198. #define STATEFLAG_REGISTERS     0x0001
  5199.  
  5200. #define STATEFLAG_CLUT          0x0002
  5201.  
  5202. #define STATEFLAG_VRAM          0x0004
  5203.  
  5204. #define STATEFLAG_FONT          0x0008
  5205.  
  5206.  
  5207. typedef BYTE * PVRAMDATA;
  5208.  
  5209. typedef struct _VIDEOSTATE {
  5210.  
  5211.         ULONG     fStateFlags;
  5212.  
  5213.         MODEID    miState;
  5214.  
  5215.         PVOID     pModeData;
  5216.  
  5217.         ULONG     ulVRAMSaveSize;
  5218.  
  5219.         PVRAMDATA pVRAM;
  5220.  
  5221.         PCLUTDATA pCLUT;
  5222.  
  5223.         PFONTDATA pFont;
  5224.  
  5225. } VIDEOSTATE;
  5226.  
  5227. typedef VIDEOSTATE FAR *PVIDEOSTATE;
  5228.  
  5229. See PMIREQUEST_GETCLUT for the definition of PCLUTDATA and PMIREQUEST_GETFONT 
  5230. for the definition of PFONTDATA. 
  5231.  
  5232. Notes 
  5233.  
  5234. miState is the current mode ID in VIDEOMODEINFO. 
  5235.  
  5236. Four states can be saved and restored by setting fStateFlags accordingly, as 
  5237. follows: 
  5238.  
  5239.   o  Video mode (STATEFLAG_REGISTERS) 
  5240.  
  5241.      The SetMode command list was saved in pModeData when the mode was set. For 
  5242.      saving state, the values of registers set by BOUTB are copied back to 
  5243.      pModeData. For restoring state, pModeData is executed to set the mode. 
  5244.  
  5245.   o  Video Memory (STATEFLAG_VRAM) 
  5246.  
  5247.      Video memory of size ulVRAMSaveSize is saved to pVRAM in saving state or 
  5248.      restored from pVRAM in restoring state. 
  5249.  
  5250.   o  Color Lookup Table (STATEFLAG_CLUT) 
  5251.  
  5252.      Color Lookup Table can be saved to or restored from pCLUT. 
  5253.  
  5254.   o  Font (STATEFLAG_FONT) 
  5255.  
  5256.      Font can be saved to or restored from pFont. 
  5257.  
  5258.  
  5259. ΓòÉΓòÉΓòÉ 7.2.4. PMIREQUEST_RESTORESTATE ΓòÉΓòÉΓòÉ
  5260.  
  5261. Description 
  5262.  
  5263. Restores the state of the hardware from supplied data. 
  5264.  
  5265. Parameters 
  5266.  
  5267. Function: PMIREQUEST_RESTORESTATE 
  5268.  
  5269. pInput: pStateData (PVIDEOSTATE) 
  5270.  
  5271.      Pointer to the video state. 
  5272.  
  5273. pOutput: None. 
  5274.  
  5275. Related Structures and Defines 
  5276.  
  5277. See PMIREQUEST_SAVESTATE. 
  5278.  
  5279. Notes 
  5280.  
  5281. See PMIREQUEST_SAVESTATE. 
  5282.  
  5283.  
  5284. ΓòÉΓòÉΓòÉ 7.2.5. PMIREQUEST_LOCKREGISTERS ΓòÉΓòÉΓòÉ
  5285.  
  5286. Description 
  5287.  
  5288. Locks extended registers. 
  5289.  
  5290. Parameters 
  5291.  
  5292. Function: PMIREQUEST_LOCKREGISTERS 
  5293.  
  5294. pInput: None. 
  5295.  
  5296. pOutput: None. 
  5297.  
  5298. Related Structures and Defines 
  5299.  
  5300. None. 
  5301.  
  5302. Notes 
  5303.  
  5304. The [LOCK] section in the .PMI file will be executed. 
  5305.  
  5306.  
  5307. ΓòÉΓòÉΓòÉ 7.2.6. PMIREQUEST_UNLOCKREGISTERS ΓòÉΓòÉΓòÉ
  5308.  
  5309. Description 
  5310.  
  5311. Unlocks extended registers. 
  5312.  
  5313. Parameters 
  5314.  
  5315. Function: PMIREQUEST_UNLOCKREGISTERS 
  5316.  
  5317. pInput: None. 
  5318.  
  5319. pOutput: None. 
  5320.  
  5321. Related Structures and Defines 
  5322.  
  5323. None. 
  5324.  
  5325. Notes 
  5326.  
  5327. The [UNLOCK] section in the .PMI file will be executed. 
  5328.  
  5329.  
  5330. ΓòÉΓòÉΓòÉ 7.2.7. PMIREQUEST_CLEANUP ΓòÉΓòÉΓòÉ
  5331.  
  5332. Description 
  5333.  
  5334. Executes the cleanup section. 
  5335.  
  5336. Parameters 
  5337.  
  5338. Function: PMIREQUEST_CLEANUP 
  5339.  
  5340. pInput: None. 
  5341.  
  5342. pOutput: None. 
  5343.  
  5344. Related Structures and Defines 
  5345.  
  5346. None. 
  5347.  
  5348. Notes 
  5349.  
  5350. The [CLEANUP] section in the .PMI file will be executed. 
  5351.  
  5352.  
  5353. ΓòÉΓòÉΓòÉ 7.2.8. PMIREQUEST_GETBANK ΓòÉΓòÉΓòÉ
  5354.  
  5355. Description 
  5356.  
  5357. Gets current bank. 
  5358.  
  5359. Parameters 
  5360.  
  5361. Function: PMIREQUEST_GETBANK 
  5362.  
  5363. pInput: None. 
  5364.  
  5365. pOutput: pBankData (PBANKDATA) 
  5366.  
  5367. Related Structures and Defines 
  5368.  
  5369.  
  5370. typedef struct _BANKDATA {
  5371.  
  5372.      MODEID    miBank;  /* ID of the current mode     */
  5373.  
  5374.      ULONG     ulBank;  /* Current bank number        */
  5375.  
  5376. } BANKDATA;
  5377.  
  5378. typedef BANKDATA FAR *PBANKDATA;
  5379.  
  5380. Notes 
  5381.  
  5382. The current bank number is saved in pBankData->ulBank. 
  5383.  
  5384.  
  5385. ΓòÉΓòÉΓòÉ 7.2.9. PMIREQUEST_SETBANK ΓòÉΓòÉΓòÉ
  5386.  
  5387. Description 
  5388.  
  5389. Sets bank to requested value. 
  5390.  
  5391. Parameters 
  5392.  
  5393. Function: PMIREQUEST_SETBANK 
  5394.  
  5395. pInput: pBankData (PBANKDATA) 
  5396.  
  5397. pOutput: None. 
  5398.  
  5399. Related Structures and Defines 
  5400.  
  5401. See PMIREQUEST_GETBANK. 
  5402.  
  5403. Notes 
  5404.  
  5405. The current bank is set to pBankData->ulBank by executing the [SETBANK] section 
  5406. in the .PMI file. 
  5407.  
  5408.  
  5409. ΓòÉΓòÉΓòÉ 7.2.10. PMIREQUEST_GETCLUT ΓòÉΓòÉΓòÉ
  5410.  
  5411. Description 
  5412.  
  5413. Gets a copy of Color Lookup Table from hardware. 
  5414.  
  5415. Parameters 
  5416.  
  5417. Function: PMIREQUEST_GETCLUT 
  5418.  
  5419. pInput: None. 
  5420.  
  5421. pOutput: pCLUTData (PCLUTDATA) 
  5422.  
  5423. Related Structures and Defines 
  5424.  
  5425. typedef struct _SVGARGB {
  5426.  
  5427.      BYTE      bR;
  5428.  
  5429.      BYTE      bG;
  5430.  
  5431.      BYTE      bB;
  5432.  
  5433.      BYTE      bUnused;
  5434.  
  5435. } SVGARGB;
  5436.  
  5437. typedef SVGARGB FAR *PSVGARGB;
  5438.  
  5439.  
  5440. typedef struct _CLUTDATA {
  5441.  
  5442.      ULONG          ulRGBCount;    /* Number of aRGB entries that follow */
  5443.  
  5444.      ULONG          ulRGBStart;    /* Start index for RGB triplets      */
  5445.  
  5446.      SVGARGB        aRGB[1];      /* One defined, ulRGBCount entries   */
  5447.  
  5448. } CLUTDATA;
  5449.  
  5450. typedef CLUTDATA FAR *PCLUTDATA;
  5451.  
  5452. Notes 
  5453.  
  5454. None. 
  5455.  
  5456.  
  5457. ΓòÉΓòÉΓòÉ 7.2.11. PMIREQUEST_SETCLUT ΓòÉΓòÉΓòÉ
  5458.  
  5459. Description 
  5460.  
  5461. Sets Color Lookup Table to supplied values. 
  5462.  
  5463. Parameters 
  5464.  
  5465. Function: PMIREQUEST_SETCLUT 
  5466.  
  5467. pInput: pCLUTData (PCLUTDATA) 
  5468.  
  5469. pOutput: None. 
  5470.  
  5471. Related Structures and Defines 
  5472.  
  5473. See PMIREQUEST_GETCLUT. 
  5474.  
  5475. Notes 
  5476.  
  5477. None. 
  5478.  
  5479.  
  5480. ΓòÉΓòÉΓòÉ 7.2.12. PMIREQUEST_GETPALETTE ΓòÉΓòÉΓòÉ
  5481.  
  5482. Description 
  5483.  
  5484. Gets a copy of palette registers from hardware. 
  5485.  
  5486. Parameters 
  5487.  
  5488. Function: PMIREQUEST_GETPALETTE 
  5489.  
  5490. pInput: None. 
  5491.  
  5492. pOutput: pPaletteData (PPALETTEDATA) 
  5493.  
  5494. Related Structures and Defines 
  5495.  
  5496.  
  5497. typedef struct _PALETTEDATA {
  5498.  
  5499.      ULONG     ulPalCount;         /* No. of entries that follow     */
  5500.  
  5501.      ULONG     ulPalStart;         /* Start index for data                  */
  5502.  
  5503.      BYTE      bPaletteData[1];    /* One defined, ulPalCount entries */
  5504.  
  5505. } PALETTEDATA;
  5506.  
  5507. typedef PALETTEDATA FAR *PPALETTEDATA;
  5508.  
  5509. Notes 
  5510.  
  5511. None. 
  5512.  
  5513.  
  5514. ΓòÉΓòÉΓòÉ 7.2.13. PMIREQUEST_SETPALETTE ΓòÉΓòÉΓòÉ
  5515.  
  5516. Description 
  5517.  
  5518. Sets palette registers to supplied values. 
  5519.  
  5520. Parameters 
  5521.  
  5522. Function: PMIREQUEST_SETPALETTE 
  5523.  
  5524. pInput: pPaletteData (PPALETTEDATA) 
  5525.  
  5526. pOutput: None. 
  5527.  
  5528. Related Structures and Defines 
  5529.  
  5530. See PMIREQUEST_GETPALETTE. 
  5531.  
  5532. Notes 
  5533.  
  5534. None. 
  5535.  
  5536.  
  5537. ΓòÉΓòÉΓòÉ 7.2.14. PMIREQUEST_GETFONT ΓòÉΓòÉΓòÉ
  5538.  
  5539. Description 
  5540.  
  5541. Reads current font from video memory. 
  5542.  
  5543. Parameters 
  5544.  
  5545. Function: PMIREQUEST_GETFONT 
  5546.  
  5547. pInput: None. 
  5548.  
  5549. pOutput: pfontData (PFONTDATA) 
  5550.  
  5551. Related Structures and Defines 
  5552.  
  5553.  
  5554. typedef struct _FONTDATA {
  5555.  
  5556.      ULONG     ulCharCount;   /* Number of characters in font */
  5557.  
  5558.      ULONG     ulFontHeight;  /* Number of scanlines per character    */
  5559.  
  5560.      BYTE      bFontData[1];  /* ulCharCount*ulFontHeight entries */
  5561.  
  5562. } FONTDATA;
  5563.  
  5564. typedef FONTDATA FAR *PFONTDATA;
  5565.  
  5566. Notes 
  5567.  
  5568. None. 
  5569.  
  5570.  
  5571. ΓòÉΓòÉΓòÉ 7.2.15. PMIREQUEST_SETFONT ΓòÉΓòÉΓòÉ
  5572.  
  5573. Description 
  5574.  
  5575. Sets font to that supplied. 
  5576.  
  5577. Parameters 
  5578.  
  5579. Function: PMIREQUEST_SETFONT 
  5580.  
  5581. pInput: pfontData (PFONTDATA) 
  5582.  
  5583. pOutput: None. 
  5584.  
  5585. Related Structures and Defines 
  5586.  
  5587. See PMIREQUEST_GETFONT. 
  5588.  
  5589. Notes 
  5590.  
  5591. None. 
  5592.  
  5593.  
  5594. ΓòÉΓòÉΓòÉ 7.2.16. PMIREQUEST_TUNEDISPLAY ΓòÉΓòÉΓòÉ
  5595.  
  5596. Description 
  5597.  
  5598. Executes the [TuneDisplay] section in the .PMI file. 
  5599.  
  5600. Parameters 
  5601.  
  5602. Function: PMIREQUEST_TUNEDISPLAY 
  5603.  
  5604. pInput: None. 
  5605.  
  5606. pOutput: None. 
  5607.  
  5608. Related Structures and Defines 
  5609.  
  5610. None. 
  5611.  
  5612. Notes 
  5613.  
  5614. None. 
  5615.  
  5616.  
  5617. ΓòÉΓòÉΓòÉ 7.2.17. PMIREQUEST_IDENTIFYADAPTER ΓòÉΓòÉΓòÉ
  5618.  
  5619. Description 
  5620.  
  5621. Executes the [IdentifyAdapter] section in the specified .PMI file. 
  5622.  
  5623. Parameters 
  5624.  
  5625. Function: PMIREQUEST_IDENTIFYADAPTER 
  5626.  
  5627. pInput: szFileName (PSZ) 
  5628.  
  5629.      .PMI file name. 
  5630.  
  5631. pOutput: None. 
  5632.  
  5633. Related Structures and Defines 
  5634.  
  5635. None. 
  5636.  
  5637. Notes 
  5638.  
  5639. If the .PMI file is for the adapter installed, NO_ERROR is returned. Otherwise, 
  5640. ERROR_ADAPTER_NOT_SUPPORTED is returned. 
  5641.  
  5642.  
  5643. ΓòÉΓòÉΓòÉ 7.2.18. PMIREQUEST_QUERYMAXMODEENTRIES ΓòÉΓòÉΓòÉ
  5644.  
  5645. Description 
  5646.  
  5647. Returns maximum number of mode entries available. 
  5648.  
  5649. Parameters 
  5650.  
  5651. Function: PMIREQUEST_QUERYMAXMODEENTRIES 
  5652.  
  5653. pInput: None. 
  5654.  
  5655. pOutput: pulModes (PULONG) 
  5656.  
  5657.      Pointer to the number of available modes. 
  5658.  
  5659. Related Structures and Defines 
  5660.  
  5661. None. 
  5662.  
  5663. Notes 
  5664.  
  5665. None. 
  5666.  
  5667.  
  5668. ΓòÉΓòÉΓòÉ 7.2.19. PMIREQUEST_QUERYMAXMODELISTSIZE ΓòÉΓòÉΓòÉ
  5669.  
  5670. Description 
  5671.  
  5672. Returns maximum size required to save a mode list. 
  5673.  
  5674. Parameters 
  5675.  
  5676. Function: PMIREQUEST_QUERYMAXMODELISTSIZE 
  5677.  
  5678. pInput: None. 
  5679.  
  5680. pOutput: pulMaxListSize (PULONG) 
  5681.  
  5682.      Number of bytes required to store largest mode data list. 
  5683.  
  5684. Related Structures and Defines 
  5685.  
  5686. None. 
  5687.  
  5688. Notes 
  5689.  
  5690. None. 
  5691.  
  5692.  
  5693. ΓòÉΓòÉΓòÉ 7.2.20. PMIREQUEST_QUERYMODEINFODATA ΓòÉΓòÉΓòÉ
  5694.  
  5695. Description 
  5696.  
  5697. Returns an array of all available video modes. 
  5698.  
  5699. Parameters 
  5700.  
  5701. Function: PMIREQUEST_QUERYMODEINFODATA 
  5702.  
  5703. pInput: None. 
  5704.  
  5705. pOutput: pVideoModeInfo (PVIDEOMODEINFO) 
  5706.  
  5707.      Array of available video mode structures. 
  5708.  
  5709. Related Structures and Defines 
  5710.  
  5711.  
  5712. /*
  5713.  
  5714. ** Mode flag values
  5715.  
  5716. ** used in VIDEOMODEINFO
  5717.  
  5718. */
  5719.  
  5720. #define MODE_FLAG_NOT_MONO      0x0001  /* Mono-compatible     */
  5721.  
  5722. #define MODE_FLAG_GRAPHICS      0x0002  /* Text mode, Graphics */
  5723.  
  5724. #define MODE_FLAG_NO_CLR_BRST   0x0004  /* Disable Color burst */
  5725.  
  5726. #define MODE_FLAG_NATIVE        0x0008  /* Native (advanced function) */
  5727.  
  5728. #define IGNORE_CLR_BRST         0x0010  /* Disable color burst    */
  5729.  
  5730.                               /* doesn't make sense for this mode    */
  5731.  
  5732. #define NOT_PLASMA              0x0020  /*  won't work on plasma    */
  5733.  
  5734.                                         /* display    */
  5735.  
  5736. #define MODE_FLAG_VGA_ENTRY     0x0040  /* VGA mode, need clean up   */
  5737.  
  5738.  
  5739. typedef struct _VIDEOMODEINFO {
  5740.  
  5741.         MODEID  miModeId;           /* used to make setmode request */
  5742.  
  5743.         USHORT  usType;             /* mode type bits    */
  5744.  
  5745.         USHORT  usInt10ModeSet;     /* int 10 mode    */
  5746.  
  5747.         USHORT  usXResolution;      /* horizontal pels    */
  5748.  
  5749.         USHORT  usYResolution;      /* vertical scan lines    */
  5750.  
  5751.         ULONG   ulBufferAddress;    /* physical address of VRAM    */
  5752.  
  5753.         ULONG   ulApertureSize;     /* VRAM aperture    */
  5754.  
  5755.         BYTE    bBitsPerPixel;      /* number of colors    */
  5756.  
  5757.         BYTE    bBitPlanes;         /* number of planes    */
  5758.  
  5759.         BYTE    bXCharSize;         /* font width    */
  5760.  
  5761.         BYTE    bYCharSize;         /* font height    */
  5762.  
  5763.         USHORT  usBytesPerScanLine; /* logical line length in bytes */
  5764.  
  5765.         USHORT  usTextRows;         /* text rows    */
  5766.  
  5767.         ULONG   ulPageLength;       /* number of bytes to save a plane  */
  5768.  
  5769.         ULONG   ulSaveSize;         /* total bytes of VRAM to save  */
  5770.  
  5771.  
  5772.   /*
  5773.          * Monitor Info
  5774.  
  5775.          */
  5776.  
  5777.         BYTE    bVrtRefresh;
  5778.  
  5779.         BYTE    bHrtRefresh;
  5780.  
  5781.         BYTE    bVrtPolPos;
  5782.  
  5783.         BYTE    bHrtPolPos;
  5784.  
  5785.         USHORT  usScrnTop;
  5786.  
  5787.         USHORT  usScrnBottom;
  5788.  
  5789.         USHORT  usScrnLeft;
  5790.  
  5791.         USHORT  usScrnRight;
  5792.  
  5793.         CHAR    szColorFormat[8]; /* for true color or hi-color modes */
  5794.  
  5795.         CHAR    szColorWeight[8]; /* for true color or hi-color modes */
  5796.  
  5797.  
  5798. } VIDEOMODEINFO;
  5799.  
  5800. typedef VIDEOMODEINFO FAR *PVIDEOMODEINFO;
  5801.  
  5802. Notes 
  5803.  
  5804. None. 
  5805.  
  5806.  
  5807. ΓòÉΓòÉΓòÉ 7.2.21. PMIREQUEST_QUERYMAXTRAPENTRIES ΓòÉΓòÉΓòÉ
  5808.  
  5809. Description 
  5810.  
  5811. Returns the maximum number of traplist entries. 
  5812.  
  5813. Parameters 
  5814.  
  5815. Function: PMIREQUEST_QUERYMAXTRAPENTRIES 
  5816.  
  5817. pInput: None. 
  5818.  
  5819. pOutput: pulNumTrapRegs (PULONG) 
  5820.  
  5821.      Number of traplist entries. 
  5822.  
  5823. Related Structures and Defines 
  5824.  
  5825. None. 
  5826.  
  5827. Notes 
  5828.  
  5829. None. 
  5830.  
  5831.  
  5832. ΓòÉΓòÉΓòÉ 7.2.22. PMIREQUEST_QUERYTRAPLISTDATA ΓòÉΓòÉΓòÉ
  5833.  
  5834. Description 
  5835.  
  5836. Returns an array of trap register information structures. 
  5837.  
  5838. Parameters 
  5839.  
  5840. Function: PMIREQUEST_QUERYTRAPLISTDATA 
  5841.  
  5842. pInput: None. 
  5843.  
  5844. pOutput: pTrapRegInfo (PTRAPREGINNFO) 
  5845.  
  5846.      Array of trap info structures. 
  5847.  
  5848. Related Structures and Defines 
  5849.  
  5850.  
  5851. /*
  5852.  
  5853. ** flag values for fPortFlags in TRAPREGINFO    @V2.2TSU00
  5854.  
  5855. */
  5856.  
  5857. #define BYTE_IOPORT        0x001
  5858.  
  5859. #define WORD_IOPORT        0x002
  5860.  
  5861. #define DWORD_IOPORT       0x004
  5862.  
  5863. #define BYTE_MMIOPORT      0x008
  5864.  
  5865. #define WORD_MMIOPORT      0x010
  5866.  
  5867. #define DWORD_MMIOPORT     0x020
  5868.  
  5869. #define INDEXED            0x040
  5870.  
  5871. #define ACCEL              0x080
  5872.  
  5873. #define RESET_PORT         0x100
  5874.  
  5875. #define READ_ONLY          0x200
  5876.  
  5877. #define WRITE_ONLY         0x400
  5878.  
  5879. #define READ_WRITE         0x800
  5880.  
  5881. #define MASK_SIZE             32
  5882.  
  5883.  
  5884.  
  5885. typedef struct _TRAPREGINFO {
  5886.  
  5887.         ULONG   ulAddressPort;   /* Address Port  */
  5888.  
  5889.         ULONG   ulDataPort;      /* Data Port  */
  5890.  
  5891.         USHORT  fPortFlags;      /* port type  */
  5892.  
  5893.         USHORT  usIndex;         /* value in index port  */
  5894.  
  5895.         ULONG   ulIndexMask;     /* index mask  */
  5896.  
  5897.         ULONG   ulDataMask;      /* data mask  */
  5898.  
  5899.         ULONG   ulResetOneMask;  /*  */
  5900.  
  5901.         ULONG   ulResetZeroMask; /*  */
  5902.  
  5903.         BYTE    abIndexList[MASK_SIZE]; /* bit mask of trapped  */
  5904.  
  5905.                                         /* indexed ports  */
  5906.  
  5907.         BYTE    abUpdateList[MASK_SIZE];/* bit mask of updated  */
  5908.  
  5909.                                         /* port indices  */
  5910.  
  5911.         PVOID   aTrapRegData;       /* trap registers data area  */
  5912.  
  5913. } TRAPREGINFO;
  5914.  
  5915. typedef TRAPREGINFO FAR *PTRAPREGINFO;
  5916.  
  5917. Notes 
  5918.  
  5919. None. 
  5920.  
  5921.  
  5922. ΓòÉΓòÉΓòÉ 7.2.23. PMIREQUEST_QUERYMODEHRDWRLIST ΓòÉΓòÉΓòÉ
  5923.  
  5924. Description 
  5925.  
  5926. Returns the SetMode hardware command list of the passed mode ID. 
  5927.  
  5928. Parameters 
  5929.  
  5930. Function: PMIREQUEST_QUERYMODEHRDWRLIST 
  5931.  
  5932. pInput: pulModeId (PMODEID) 
  5933.  
  5934.      Pointer to the mode ID. 
  5935.  
  5936. pOutput: pSetModeList (PHWCOMMAND) 
  5937.  
  5938.      Pointer to the SetMode hardware command list. 
  5939.  
  5940. Related Structures and Defines 
  5941.  
  5942. None. 
  5943.  
  5944. Notes 
  5945.  
  5946. None. 
  5947.  
  5948.  
  5949. ΓòÉΓòÉΓòÉ 7.2.24. PMIREQUEST_WPOSVIDEOACCESS ΓòÉΓòÉΓòÉ
  5950.  
  5951. Description 
  5952.  
  5953. Maps the video hardware resources to the address space of the calling process. 
  5954.  
  5955. Parameters 
  5956.  
  5957. Function: PMIREQUEST_WPOSVIDEOACCESS 
  5958.  
  5959. pInput: None. 
  5960.  
  5961. pOutput: pResource (PVIDEORESOURCEPACK) 
  5962.  
  5963.      Pointer to resource definition packet. 
  5964.  
  5965. Related Structures and Defines 
  5966.  
  5967.  
  5968.       typedef struct {
  5969.           cons_resource_info_t *  ConsRes;    // array of resource definition
  5970.           ULONG                   ulNumCons;  // number of resources
  5971.       } VIDEORESOURCEPACK, * PVIDEORESOURCEPACK;
  5972.  
  5973. Notes 
  5974.  
  5975.      This call should be made before any other PMI calls. It will map the 
  5976.      hardware resource to the calling process's address space. 
  5977.  
  5978.      The output parameter is optional. It can be NULL or a pointer to 
  5979.      VIDEORESOURCEPACK. If it is not NULL, the number of resources and the 
  5980.      array of cons_resource_info_t for the resources will be returned in the 
  5981.      output parameter packet. The cons_resource_info_t array is defined in the 
  5982.      microkernel header files. If you do not want to handle detailed 
  5983.      microkernel I/O functions, this information is not needed. 
  5984.  
  5985.  
  5986. ΓòÉΓòÉΓòÉ 7.2.25. PMIREQUEST_GETPIOINFO ΓòÉΓòÉΓòÉ
  5987.  
  5988. Description 
  5989.  
  5990. Gets the virtual address of the passed physical address. 
  5991.  
  5992. Parameters 
  5993.  
  5994. Function: PMIREQUEST_GETPIOINFO 
  5995.  
  5996. pInput: ulPhysAddr (ULONG) 
  5997.  
  5998.      Physical address. 
  5999.  
  6000. pOutput: pPioInfoPack (PPIOINFOPACK) 
  6001.  
  6002.      Pointer to PIOINFOPACK. 
  6003.  
  6004. Related Structures and Defines 
  6005.  
  6006.  
  6007.       typedef struct {
  6008.          ULONG  ulVirtAddr;         // virtual address after mapping
  6009.          ULONG  ulOffset;           // offset within the address range
  6010.                                     // of this video resource
  6011.          pio_info_t *  pPioInfo;    // pointer to the pio_info_t which this
  6012.                                             // physical address is in
  6013.       } PIOINFOPACK, * PPIOINFOPACK;
  6014.  
  6015. Notes 
  6016.  
  6017.      Every piece of resource defined in rdf.stz is represented as a pio_info_t 
  6018.      structure. 
  6019.  
  6020.      Microkernel PIO hardware access functions require the pointer to the 
  6021.      pio_info_t structure and the offset within the address range of the 
  6022.      resource defined in rdf.stz. 
  6023.  
  6024.      If you do not want to call microkernel hardware access functions to access 
  6025.      hardware, you do not need this pointer. The pio_info_t in this structure 
  6026.      definition can be replaced with ULONG; in this case, microkernel header 
  6027.      files need not be included. 
  6028.  
  6029.  
  6030. ΓòÉΓòÉΓòÉ 7.2.26. Code Sample ΓòÉΓòÉΓòÉ
  6031.  
  6032.  
  6033. #include <os2.h>
  6034.  
  6035. #include <svgadefs.h>
  6036.  
  6037.  
  6038. #define DLLNAME                 "videopmi"
  6039.  
  6040. #define REQUEST_ENTRYPOINT      "VIDEOPMI32Request"
  6041.  
  6042. #define FAIL_LENGTH             256
  6043.  
  6044.  
  6045. /*
  6046.  
  6047.  * Adapter instance.
  6048.  
  6049.  */
  6050.  
  6051. VIDEO_ADAPTER AdapterInstance;
  6052.  
  6053.  
  6054. /*
  6055.  
  6056.  * Entry point to videopmi
  6057.  
  6058.  */
  6059.  
  6060. PFNVIDEOPMIREQUEST pfnPMIRequest;
  6061.  
  6062.  
  6063. /*
  6064.  
  6065.  * mode table. It is an array of VIDEOMODEINFOs.
  6066.  
  6067.  */
  6068.  
  6069. PVIDEOMODEINFO ModeTable;
  6070.  
  6071. ULONG ulTotalModes;
  6072.  
  6073.  
  6074. ΓòÉΓòÉΓòÉ 7.2.26.1. Load PMI File ΓòÉΓòÉΓòÉ
  6075.  
  6076.  
  6077. /************************************************************
  6078.  
  6079.  * Load the .PMI file, get the hardware information about the
  6080.  
  6081.  * adapter and the entry point to videopmi.
  6082.  
  6083.  *
  6084.  
  6085.  * Returns 0 if successful; DOS error token, otherwise.
  6086.  
  6087.  ************************************************************/
  6088.  
  6089.  
  6090. APIRET LoadPMIService (VOID)
  6091.  
  6092. {
  6093.  
  6094.    APIRET        rc;
  6095.  
  6096.    char          sFail[FAIL_LENGTH] = {0};
  6097.  
  6098.    HMODULE       hmodVIDEOPMI;
  6099.  
  6100.  
  6101.    /*
  6102.  
  6103.     * Load videopmi.dll
  6104.  
  6105.     */
  6106.  
  6107.    if (!(rc = DosLoadModule (sFail, FAIL_LENGTH, DLLNAME,
  6108. &hmodVIDEOPMI)))
  6109.  
  6110.    {
  6111.  
  6112.       /*
  6113.  
  6114.        * Get PMIREQUEST entry point
  6115.  
  6116.        */
  6117.  
  6118.       if (!(rc = DosQueryProcAddr
  6119. (hmodVIDEOPMI,
  6120.                                                             0,
  6121. REQUEST_ENTRYPOINT,
  6122.  
  6123. &pfnPMIRequest)))
  6124.  
  6125.  
  6126.          /*
  6127.  
  6128.           * Map the hardware resource
  6129.  
  6130.           * ADAPTERINFO in AdapterInstance will be filled with the
  6131.  
  6132.           * information in .PMI file, e.g., TotalMemory.
  6133.  
  6134.           * Check svgadefs.h for details.
  6135.  
  6136.           */
  6137.  
  6138.          rc = pfnPMIRequest (&AdapterInstance,
  6139.  
  6140.                              PMIREQUEST_WPOSVIDEOACCESS,
  6141.  
  6142.                              NULL,
  6143.  
  6144.                              NULL);
  6145.  
  6146.       if (rc)
  6147.  
  6148.          DosFreeModule (hmodVIDEOPMI);
  6149.  
  6150.    }
  6151.  
  6152.  
  6153.  
  6154.    return rc;
  6155.  
  6156. }
  6157.  
  6158.  
  6159. ΓòÉΓòÉΓòÉ 7.2.26.2. Set Up Mode Table ΓòÉΓòÉΓòÉ
  6160.  
  6161.  
  6162. /************************************************************
  6163.  
  6164.  * Copy the mode table from videopmi. It is an arrary of modes.
  6165.  
  6166.  * All the information in [ModeInfo] and
  6167.  
  6168.  * [MonitorModeInfo], if any, is included.
  6169.  
  6170.  *
  6171.  
  6172.  * Returns 0 if successful; DOS error token, otherwise.
  6173.  
  6174.  ************************************************************/
  6175.  
  6176.  
  6177. APIRET SetUpModeTable (VOID)
  6178.  
  6179. {
  6180.  
  6181.    APIRET        rc;
  6182.  
  6183.  
  6184.    /*
  6185.  
  6186.     * Get the total number of modes
  6187.  
  6188.     */
  6189.  
  6190.    if (!(rc = pfnPMIRequest (&AdapterInstance,
  6191.  
  6192.                              PMIREQUEST_QUERYMAXMODEENTRIES,
  6193.  
  6194.                              NULL,
  6195.  
  6196.                              &ulTotalModes)))
  6197.  
  6198.  
  6199.       /*
  6200.  
  6201.        * Allocate memory for mode table
  6202.  
  6203.        */
  6204.  
  6205.       if (!(rc = DosAllocSharedMem ((PPVOID)&ModeTable,
  6206.  
  6207.                                     NULL,
  6208.  
  6209.                                     ulTotalModes *
  6210.  
  6211.                                     sizeof (VIDEOMODEINFO),
  6212.  
  6213.                                     OBJ_GETTABLE | PAG_COMMIT |
  6214.  
  6215.                                     PAG_WRITE)))
  6216.  
  6217.  
  6218.          /*
  6219.  
  6220.           * Copy mode table.
  6221.  
  6222.           * Please check svgadefs.h for the fields in VIDEOMODEINFO.
  6223.  
  6224.           */
  6225.  
  6226.          rc = pfnPMIRequest (&AdapterInstance,
  6227.  
  6228.                              PMIREQUEST_QUERYMODEINFODATA,
  6229.  
  6230.                              NULL,
  6231.  
  6232.                              ModeTable);
  6233.  
  6234.    return rc;
  6235.  
  6236. }
  6237.  
  6238.  
  6239. ΓòÉΓòÉΓòÉ 7.2.26.3. Set Mode ΓòÉΓòÉΓòÉ
  6240.  
  6241.  
  6242. /************************************************************
  6243.  
  6244.  * You can select the mode based on any information in the VIDEOMODEINFO
  6245.  
  6246.  * structure. The following is only an example to set the graphics mode
  6247.  
  6248.  * based on resolution and refresh rate.
  6249.  
  6250.  * PM driver should not call videopmi to set the mode directly.
  6251.  
  6252.  * It should call BVH to set the mode as before, such that
  6253.  
  6254.  * the mode can be set based on the current monitor capability
  6255.  
  6256.  * handled by BVH.
  6257.  
  6258.  *
  6259.  
  6260.  * Returns 0 if successful; DOS error token, otherwise.
  6261.  
  6262.  ************************************************************/
  6263.  
  6264.  
  6265. APIRET SETSVGAMODE (ULONG     ulHorRes,
  6266.  
  6267.                                ULONG     ulVerRes,
  6268.  
  6269.                               ULONG     ulColors,
  6270.  
  6271.                               ULONG     ulVerRefr,
  6272.  
  6273.                                PULONG    pulModeInd,
  6274.  
  6275.                               PCLUTDATA pCLUTData)
  6276.  
  6277. {
  6278.  
  6279.     APIRET rc=0xFFFF;
  6280.  
  6281.     ULONG  i;
  6282.  
  6283.  
  6284.       /* Search mode */
  6285.  
  6286.     if (ulVerRefr >= 0xFFL)   /* pick the first mode of the resolution */
  6287.  
  6288.     {
  6289.  
  6290.       for(i=0; i < ulTotalModes; i++)
  6291.  
  6292.          if ((ModeTable[i].usXResolution == (USHORT) ulHorRes) &&
  6293.  
  6294.              (ModeTable[i].usYResolution == (USHORT) ulVerRes) &&
  6295.  
  6296.              (ModeTable[i].bBitsPerPixel   == (BYTE) ulColors))
  6297.  
  6298.             *pulModeInd = i;
  6299.  
  6300.  
  6301.  
  6302.    }
  6303.  
  6304.  
  6305.    else    /* verify all including the refresh parameter */
  6306.  
  6307.    {
  6308.  
  6309.       for(i=0; i < ulTotalModes; i++)
  6310.  
  6311.          if ((ModeTable[i].usXResolution == (USHORT )ulHorRes) &&
  6312.  
  6313.              (ModeTable[i].usYResolution == (USHORT) ulVerRes) &&
  6314.  
  6315.              (ModeTable[i].bBitsPerPixel   == (BYTE) ulColors) &&
  6316.  
  6317.              ((ModeTable[i].bVrtRefresh   == 0xFF) ||
  6318.  
  6319.               (ModeTable[i]bVrtRefresh   == (BYTE) ulVerRefr)))
  6320.  
  6321.             *pulModeInd= i;
  6322.  
  6323.    }
  6324.  
  6325.  
  6326.    if (i == ulTotalModes)
  6327.  
  6328.       return rc;              /* mode not found */
  6329.  
  6330.  
  6331.    /*
  6332.  
  6333.     * Copy VIDEOMODEINFO of the selected mode to AdapterInstance.
  6334.  
  6335.     * Depending on the .PMI file, this information may be needed.
  6336.  
  6337.     */
  6338.  
  6339.    AdapterInstance.ModeInfo = ModeTable[*pulModeInd];
  6340.  
  6341.    /*
  6342.  
  6343.     * Call videopmi to set the mode.
  6344.  
  6345.     */
  6346.  
  6347.    rc = pfnPMIRequest (&AdapterInstance,
  6348.  
  6349.                        PMIREQUEST_SETMODE,
  6350.  
  6351.                        &ModeTable[*pulModeInd].miModeId,
  6352.  
  6353.                        NULL);
  6354.  
  6355.  
  6356.    if (rc)
  6357.  
  6358.       return rc;
  6359.  
  6360.    else
  6361.  
  6362.       /* Load Color Lookup Table */
  6363.  
  6364.       if (ModeTable[*pulModeInd].bBitsPerPixel <= 8)
  6365.  
  6366.          rc = pfnPMIRequest (&AdapterInstance,
  6367.  
  6368.                              PMIREQUEST_SETCLUT,
  6369.  
  6370.                              pCLUTData,
  6371.  
  6372.                              NULL);
  6373.  
  6374.  
  6375.  
  6376.    return rc;
  6377.  
  6378. }
  6379.  
  6380.  
  6381. ΓòÉΓòÉΓòÉ 7.2.26.4. Write to Video Buffer ΓòÉΓòÉΓòÉ
  6382.  
  6383.  
  6384. APIRET DisplayImageBuffer (ULONG ulModeInd,
  6385.  
  6386.                            ULONG ulSize,
  6387.  
  6388.                            PBYTE pImageBuffer)
  6389.  
  6390. {
  6391.  
  6392.     VIDEOSTATE sVideoState = {0};
  6393.  
  6394.     APIRET rc;
  6395.  
  6396.  
  6397.     sVideoState.miState = ModeTable[ulModeInd].miModeId;
  6398.  
  6399.     sVideoState.fStateFlags |= STATEFLAG_VRAM;
  6400.  
  6401.     sVideoState.ulVRAMSaveSize = ulSize;
  6402.  
  6403.     sVideoState.pVRAM = pImageBuffer;
  6404.  
  6405.  
  6406.  
  6407.     return pfnPMIRequest (&AdapterInstance,
  6408.  
  6409.                           PMIREQUEST_RESTORESTATE,
  6410.  
  6411.                           &sVideoState,
  6412.  
  6413.                           NULL);
  6414.  
  6415. }
  6416.  
  6417.  
  6418. ΓòÉΓòÉΓòÉ 8. VIDEO Protect-Mode Interface ΓòÉΓòÉΓòÉ
  6419.  
  6420. This chapter describes the syntax of the VIDEO Protect-Mode-Interface 
  6421. (VIDEOPMI) in OS/2 Warp, Version 3, PowerPC Edition, which is an extension of 
  6422. the VESA SVPMI standard currently in use by the operating system's base and 
  6423. virtual video subsystems. The interface describes a graphics adapter in terms 
  6424. of its ports and memory space. The interface also provides a means to query 
  6425. supported modes and set, save, and restore video modes in Protect-Mode. 
  6426.  
  6427.  
  6428. ΓòÉΓòÉΓòÉ 8.1. Overview ΓòÉΓòÉΓòÉ
  6429.  
  6430. The VIDEOPMI interface provides parameters for the adapter virtualization in 
  6431. multiple DOS sessions and a number of support functions. 
  6432.  
  6433. The adapter description is provided as a flat file with a .PMI extension. The 
  6434. main goal of the VIDEOPMI interface is to centralize all of the SetMode-related 
  6435. services and provide a consistent interface that is not dependent on 
  6436. availability of BIOS service or OEM utilities. 
  6437.  
  6438. The following list includes the topics covered in this chapter: 
  6439.  
  6440.   o  .PMI file 
  6441.   o  PMI Procedural Interface 
  6442.   o  Supported Modes 
  6443.   o  Monitor Timings Support 
  6444.   o  Save and Restore State 
  6445.   o  Adapter Configuration 
  6446.   o  Video Configuration and Installation 
  6447.  
  6448.  
  6449. ΓòÉΓòÉΓòÉ 8.1.1. .PMI file ΓòÉΓòÉΓòÉ
  6450.  
  6451. The VIDEOPMI interface is driven by the sections of the .PMI file. There are 
  6452. two main types of sections: 
  6453.  
  6454.   o  Those that describe adapter capabilities 
  6455.  
  6456.   o  Those that service hardware programming requests 
  6457. Query sections provide information on hardware descriptions; lists of ports; 
  6458. lists of supported modes; and the range or set of supported timing values. The 
  6459. Set sections provide the capability to identify adapters; unlock registers; 
  6460. cleanup, size, and position the active display; set a mode; save and restore a 
  6461. mode, and the VRAM used by the mode. 
  6462.  
  6463. The VIDEOPMI language defines a video adapter as a hardware controller in terms 
  6464. of its I/O and memory addresses that are programmable by the CPU. The video 
  6465. controller can be a dumb frame VGA/SVGA, an accelerator, or a general-purpose 
  6466. coprocessor. The .PMI file must contain all of the informational sections and a 
  6467. minimal set of Set sections (see PMI Sections). An adapter description starts 
  6468. with its Hardware section, followed by IdentifyAdapter, a number of support 
  6469. sections, and a list of all available modes with the corresponding SetMode 
  6470. sections. 
  6471.  
  6472. The PMI facilitates dynamic hardware configuration, which includes port 
  6473. remapping as well as adding or removing an adapter and its PMI definition. It 
  6474. also includes changing the attached display and multiple instances of the same 
  6475. video hardware driven by the same .PMI file. The interface defines monitor 
  6476. timing variables needed to drive a CRT monitor. These variables provide 
  6477. extensive monitor support and a consistent user configuration interface. The 
  6478. PMI language also facilitates programming of the support chips that can be 
  6479. mapped into the I/O and memory space addressable by the CPU, such as external 
  6480. clock-synchronizing chips or smart Digital-to-Analog Converters (DACs). 
  6481.  
  6482. .PMI files are to be provided by the video chip or adapter manufacturers, or by 
  6483. the providers of the display drivers. The file should be part of the 
  6484. video-adapter installation kit, either as a pre-manufactured flat file or one 
  6485. created by the OEM's installation utility. The activation of PMI services for 
  6486. an adapter does not require a reset or power-up. 
  6487.  
  6488.  
  6489. ΓòÉΓòÉΓòÉ 8.1.2. PMI Procedural Interface ΓòÉΓòÉΓòÉ
  6490.  
  6491. .PMI file sections are interpreted by the VIDEOPMI interpreter, also called the 
  6492. VIDEOPMI engine, and translated into information blocks or into hardware 
  6493. command lists. In the OS/2 Warp, PowerPC Edition environment, VIDEOPMI callers 
  6494. include the OS/2 full-screen driver (OS2CHAR.DLL), PM driver, and system 
  6495. configuration utilities. 
  6496.  
  6497. The VIDEOPMI Procedural Interface defines a structure that corresponds to the 
  6498. video hardware instance, which contains all of the PMI keyvariables listed in 
  6499. PMI Language Elements. This structure is called the VIDEO_ADAPTER structure. It 
  6500. defines the state of the adapter in terms of its hardware configuration 
  6501. elements, such as I/O and Memory range, and its current mode-state parameters. 
  6502.  
  6503. All of the Set type of procedural calls pass the VIDEO_ADAPTER structure, which 
  6504. then allows each PMI section to take the current state into account in its 
  6505. programming. See Supported Modes, as well as [SetMode] and [ModeInfo] in PMI 
  6506. Sections for more information on the mode elements. 
  6507.  
  6508. The Procedural Interface of the VIDEOPMI Interpreter is covered in VIDEOPMI DLL 
  6509. Exported Functions. 
  6510.  
  6511.  
  6512. ΓòÉΓòÉΓòÉ 8.1.2.1. Limitations of the PMI ΓòÉΓòÉΓòÉ
  6513.  
  6514. The following limitations exist in the PMI: 
  6515.  
  6516.   o  PMI does not provide a graphical interface. 
  6517.  
  6518.   o  PMI does not provide a means of accessing addresses that are internal to 
  6519.      the video controller and are not mappable into the CPU space. 
  6520.  
  6521.   o  Save and Restore Hardware State Services have certain limitations (see 
  6522.      "Save and Restore State" in this chapter). 
  6523.  
  6524.   o  PMI does not provide the means to manipulate certain video parameters 
  6525.      outside the context of the SetMode section. 
  6526.  
  6527.      PMI does allow, and it requires, indirect management of all of the 
  6528.      parameters within the Mode Set sections. For example, there are no 
  6529.      services for the manipulation of the hardware cursor or RAMDAC outside the 
  6530.      context of a mode set. These services are an integral part of the SetMode. 
  6531.  
  6532.      Programming of the monitor timing is considered a special case. It is an 
  6533.      integral part of the SetMode, but it also can be independently invoked, if 
  6534.      the .PMI file defines a SetMonitorTimings section. The same is true for 
  6535.      manipulation of the active display size. If the .PMI file contains a 
  6536.      TuneDisplay section, this manipulation is offered independently. 
  6537.  
  6538.   o  Port descriptions have some limitations: 
  6539.  
  6540.        -  Ports that require double or triple indirection cannot be adequately 
  6541.           described in the PMI language. 
  6542.  
  6543.        -  I/O addresses that serve as latches, or flip-flops, cannot be 
  6544.           successfully described. 
  6545.  
  6546.        -  There are no provisions for describing port addresses that define 
  6547.           different registers depending on the read or write access. 
  6548.  
  6549.           These limitations have an influence on the level and success of the 
  6550.           adapter virtualization using the system-provided virtual driver. See 
  6551.           [TrapRegs] in PMI Sections. 
  6552.  
  6553.  
  6554. ΓòÉΓòÉΓòÉ 8.1.3. Supported Modes ΓòÉΓòÉΓòÉ
  6555.  
  6556. This section lists the OS/2 Warp, PowerPC Edition requirements for the modes 
  6557. included in a .PMI file. Each supported mode is represented by a set of 
  6558. sections, as follows: 
  6559.  
  6560.   o  Comment (optional) 
  6561.  
  6562.   o  ModeInfo (required) 
  6563.  
  6564.   o  MonitorModeInfo (optional) 
  6565.  
  6566.   o  SetMode (optional) 
  6567.  
  6568. The ModeInfo section is a list of the common mode elements (PMI keyvariables) 
  6569. that define the resolution, window, and size elements of the mode. The mode 
  6570. definition is then complemented by all of the MonitorModeInfo sections 
  6571. following the ModeInfo section. There could be zero or more MonitorModeInfo 
  6572. sections, depending on the capabilities of the hardware to program timings. An 
  6573. adapter may not support a CRT in a particular mode; a single MonitorModeInfo 
  6574. section with zero values is used to indicate such a case. If the adapter can 
  6575. support only a distinct set of values, rather than a range of horizontal and 
  6576. vertical refresh values, multiple MonitorModeInfo sections per 
  6577. horizontal/vertical refresh pair are used to indicate this fact. An adapter 
  6578. with flexibility in programming a range of dotclock (which translates into 
  6579. horizontal and vertical refreshes) should list only one MonitorModeInfo entry 
  6580. with the end of range values for the vertical/horizontal refresh. 
  6581.  
  6582. Suggested modes include the following: 
  6583.  
  6584.   o  40 x 25 and 80 x 25 text. 
  6585.  
  6586.   o  At least one of the 132-column text modes (if applicable). 
  6587.  
  6588.   o  At best, all of the supported 256-color modes with respective refresh 
  6589.      rates (see "Monitor Timings Support" in this chapter). 
  6590.  
  6591.      At the minimum, modes that are supported by the respective Presentation 
  6592.      Manager display driver. 
  6593.  
  6594.      If the adapter in question has both accelerated and non-accelerated modes, 
  6595.      only the accelerated modes should be provided. 
  6596.  
  6597.   o  At best, all of the supported hi-color and true-color modes with 
  6598.      respective refresh rates (see "Monitor Timings Support" in this chapter). 
  6599.  
  6600.      At the minimum, modes which are supported by the respective Presentation 
  6601.      Manager display driver. 
  6602.  
  6603.      If the adapter in question has both accelerated and nonaccelerated modes, 
  6604.      only the accelerated modes should be provided. 
  6605.  
  6606.  
  6607. ΓòÉΓòÉΓòÉ 8.1.4. Monitor Timings Support ΓòÉΓòÉΓòÉ
  6608.  
  6609. The PMI defines eight display-timing-related variables as mode keyvariables. 
  6610. These variables facilitate selection of the mode, depending on the current 
  6611. monitor specification and sizing of the active display for the current mode. 
  6612. The MonitorModeInfo section contains all of the timing-related PMI key 
  6613. variables. 
  6614.  
  6615. The display-timing-related variables are: 
  6616.  
  6617. VerticalRefresh     Vertical refresh in Hz (rounded to the nearest integer) 
  6618.  
  6619. HorizontalRefresh   Horizontal refresh in KHz (rounded to the nearest integer) 
  6620.  
  6621. HPolarityPositive   Contains the Horizontal polarity (0,1) for the current mode 
  6622.                     selection 
  6623.  
  6624. VPolarityPositive   Contains the Vertical polarity (0,1) for the current mode 
  6625.                     selection 
  6626.  
  6627. ScreenLeftEdge      Represents the end of the horizontal blanking (HBP) in 
  6628.                     pixel count along the horizontal sweep (HSP) 
  6629.  
  6630. ScreenRightEdge     Represents the start of the horizontal blanking (HFP) in 
  6631.                     pixel count along the horizontal sweep (HSP) 
  6632.  
  6633. ScreenTopEdge       Represents the end of the vertical blanking (VBP) in line 
  6634.                     count along the vertical sweep (VSP) 
  6635.  
  6636. ScreenBottomEdge    Represents the start of the vertical blanking (VFP) 
  6637.  
  6638. The last four timing elements, defining the start and end of the horizontal 
  6639. active display and start and end of the vertical active display, are suggested 
  6640. as mode elements in order to enhance visual quality. Their values are never 
  6641. directly communicated to the end user configuring the adapter, only the net 
  6642. results. The values are manipulated through a TuneDisplay function as part of 
  6643. the SetMode or upon the end user's configuration request. See [TuneDisplay] in 
  6644. PMI Sections. 
  6645.  
  6646. There is no interface for specification and manipulation of the widths of the 
  6647. Horizontal Sweep (HSP) and Vertical Sweep (VSP) signals. 
  6648.  
  6649. If an adapter is capable of supporting both non-CRT- and CRT-style displays, 
  6650. modes of both types should be listed. Non-CRT Mode sections are those that have 
  6651. 0 for both horizontal and vertical refresh rate. 
  6652.  
  6653. If the adapter has monitor sensing, identification, and auto-adjusting 
  6654. capability built in so that software manipulation of the timing-related 
  6655. registers is not required, none of the timing-related mode elements have to be 
  6656. specified. No MonitorModeInfo sections should be included and monitor sizing 
  6657. parameters and the TuneDisplay function should not be listed. 
  6658.  
  6659. The vendor providing the .PMI file can supply either a single MonitorModeInfo, 
  6660. which denotes the upper limit for horizontal and vertical refresh, or a number 
  6661. of MonitorModeInfo sections with distinct sets of horizontal and vertical 
  6662. refresh values. In the first case, the OS/2 Warp, PowerPC Edition configuration 
  6663. utility offers refresh values that are part of the current monitor definition 
  6664. for the desired resolution, as long as the monitor specification is within the 
  6665. range specified by the adapter. If more than one MonitorModeInfo section exists 
  6666. per mode, an exact match of the vertical refresh values between the adapter and 
  6667. monitor specification is performed by the OS/2 Warp, PowerPC Edition Display 
  6668. Configuration Manager. Polarity PMI keyvariables are not required, unless an 
  6669. exact match with the monitor's capabilities is desired by the adapter vendor. 
  6670.  
  6671.  
  6672. ΓòÉΓòÉΓòÉ 8.1.5. Save and Restore State ΓòÉΓòÉΓòÉ
  6673.  
  6674. VIDEOPMI does not have dedicated SaveState or RestoreState sections. The 
  6675. VIDEOPMI engine does offer those services. 
  6676.  
  6677.  
  6678. ΓòÉΓòÉΓòÉ 8.1.5.1. SaveRestore VRAM ΓòÉΓòÉΓòÉ
  6679.  
  6680. VIDEOPMI offers saving and restoring of the video buffer of SaveSize for each 
  6681. mode and is internally aware of the type of VRAM access it has to perform. The 
  6682. parameters taken into consideration when addressing the VRAM are BufferAddress, 
  6683. ApertureSize, and SaveSize. See [ModeInfo] in PMI Sections. 
  6684.  
  6685. If ApertureSize is equal to or greater than SaveSize, direct linear access to 
  6686. the BufferAddress is assumed. If this is not the case, the SetBank function is 
  6687. necessary in order to save and restore the entire on-screen VRAM. Granularity 
  6688. of a bank is assumed to be the ApertureSize. SaveSize should be set to reflect 
  6689. the logical line length programmed by the current mode, rather than just 
  6690. horizontal resolution. 
  6691.  
  6692.  
  6693. ΓòÉΓòÉΓòÉ 8.1.5.2. SaveRestore Hardware ΓòÉΓòÉΓòÉ
  6694.  
  6695. This service is available for .PMI files that use the PMI language to define 
  6696. SetMode sections. 
  6697.  
  6698. The PM driver performs its own Save and Restore of the state and is not 
  6699. dependent on the service. The OS2CHAR.DLL uses the Save and Restore State 
  6700. service and, in case of a partial restore, reissues the mode set and restores 
  6701. the important video attributes. 
  6702.  
  6703. The SaveRestore Hardware service is based on the PMI sequence for the SetMode; 
  6704. all of the ports that are programmed by the SetMode section for the current 
  6705. mode will be saved and restored. When saving a mode, the VIDEOPMI interpreter 
  6706. parses the command list of the SetMode section. 
  6707.  
  6708. BOUTB commands are converted into BINB commands. The VIDEOPMI executes the 
  6709. newly constructed section in order to capture register values and converts all 
  6710. of the commands back into their original SetMode format. The command list is 
  6711. then ready for a subsequent RestoreState call and is returned to the user. 
  6712.  
  6713. This approach has some limitations, mainly for adapters that employ double and 
  6714. higher indirection levels in register addressing; for example, the WDc24. 
  6715.  
  6716.  
  6717. ΓòÉΓòÉΓòÉ 8.1.6. Adapter Configuration ΓòÉΓòÉΓòÉ
  6718.  
  6719. This portion of the chapter specifies the requirements placed on the .PMI file 
  6720. by the video subsystem. It does not address the physical installation steps for 
  6721. an adapter, the bus management, device enumeration, and conflict management 
  6722. employed by the operating system. 
  6723.  
  6724. An adapter is defined by its Hardware section, which lists the type of bus, the 
  6725. default start address of the I/O and memory space, and alternative addresses 
  6726. for the I/O and memory space, as addressable by the CPU. The adapter is 
  6727. uniquely defined by its OEMString and Version strings. On desktop PowerPCs, 
  6728. only PCI adapters are supported. 
  6729.  
  6730.  
  6731. ΓòÉΓòÉΓòÉ 8.2. PMI Language Elements ΓòÉΓòÉΓòÉ
  6732.  
  6733. The VIDEOPMI language consists of the following elements: 
  6734.  
  6735.   o  Sections 
  6736.  
  6737.   o  User-defined functions 
  6738.  
  6739.   o  Expressions 
  6740.  
  6741.   o  PMI commands, identifiers, constants, variables, string-literals, and 
  6742.      comments 
  6743. The language is not case-sensitive, so BOUTB and boutb represent the same 
  6744. identifier. Throughout this section, Backus-Naur Form (BNF) grammar is used to 
  6745. describe the syntax. Some examples are given in the text. Where such examples 
  6746. are omitted, sample .PMI files accompanying the document should be used as a 
  6747. reference. 
  6748.  
  6749.  
  6750. ΓòÉΓòÉΓòÉ 8.2.1. Comments and Delimiters ΓòÉΓòÉΓòÉ
  6751.  
  6752. Comments can be either in-line comments (//) or ANSI C-style comments (/*  */). 
  6753. White space is used as the token delimiter and a semicolon (;) is used as the 
  6754. expression delimiter. 
  6755.  
  6756. The Comment section defines a mode-info related comment that describes the mode 
  6757. to the user. See [Comment] in PMI Sections. 
  6758.  
  6759.  
  6760. ΓòÉΓòÉΓòÉ 8.2.2. Include Files ΓòÉΓòÉΓòÉ
  6761.  
  6762. PMI allows for inclusion of other .PMI files, all of which must conform to the 
  6763. PMI language. An Include file facility is provided in order to offer 
  6764. flexibility in supporting multiple adapter configurations with a single .PMI 
  6765. file. 
  6766.  
  6767. PMI sub-files are included via #include directive. The include statement can be 
  6768. found anywhere in the .PMI file as long as it meets the following conditions: 
  6769.  
  6770.   o  The include statement does not violate the integrity of the section before 
  6771.      and the section after. 
  6772.  
  6773.   o  References to the objects belonging to the include file are made after the 
  6774.      inclusion. 
  6775.  
  6776.      The included files should be in the same directory as the current .PMI 
  6777.      file. 
  6778.  
  6779.      #include "filename"       //PMI extension assumed 
  6780.  
  6781.  
  6782. ΓòÉΓòÉΓòÉ 8.2.3. Constants, String-Literals, Identifiers, and Keywords ΓòÉΓòÉΓòÉ
  6783.  
  6784. PMI constants are 32-bit integer constants, either in decimal or hexadecimal 
  6785. format. 
  6786.  
  6787.  
  6788. <digit>  ::= '0'..'9'
  6789. <hexdigit> ::= <digit>  |  'a'..'f'
  6790. <character> ::= 'a'..'z' |  'A'..  'Z'|  '_' |  '.'
  6791. <decimal number>  ::= <digit>  |  <decimal number> <digit>
  6792. <hexadecimal number>  ::= '0x' <hexdigit>  |
  6793.                          <hexadecimal number>  <hexdigit>
  6794. <constant>  ::= <decimal number>  |  <hexadecimal number>
  6795.  
  6796. String-literals consist of any combination of printable ASCII characters in 
  6797. quotes. String-literals are not parsed in any way; they are stored in their 
  6798. uppercase format and are passed on query-style calls, converting both source 
  6799. and target to uppercase. String-literals are limited to 128 characters in 
  6800. length, including 0 at the end. Binary strings are also limited to 128 bits (4 
  6801. doublewords). 
  6802.  
  6803.  
  6804. <string>  ::= "<ASCII character> [<string>]"
  6805. <binary-string>  ::= " <'0'|'1'> | <'0'|1'> [<binary-string>]"
  6806.  
  6807. An Identifier, or a name, is a sequence of letters and digits. The first 
  6808. character must be a letter. The underscore (_) and point (.) count as a letter, 
  6809. but point (.) cannot be used in the first position. Maximum length of an 
  6810. identifier is 32 characters. 
  6811.  
  6812.  
  6813. <name>  ::= <character>  <token>
  6814. <token>  ::= {<character>  |  [<digit> <token>]}
  6815.  
  6816. Keywords are reserved identifiers and are divided into three groups: 
  6817.  
  6818.   o  PMI keyvariables, which are keywords representing configuration and mode 
  6819.      parameters 
  6820.  
  6821.   o  PMI constants, backed by system-wide definitions 
  6822.  
  6823.   o  All other reserved identifiers 
  6824.  
  6825. All of the PMI keyvariables are available through the VIDEOPMI programming 
  6826. interface as fields of the video instance structure. They are also available to 
  6827. all of the PMI sections and functions and can be used in conditional statements 
  6828. or expressions. At run time, during a SetMode, some of the ModeInfo PMI 
  6829. keyvariables could differ from the values assigned by the .PMI file. These PMI 
  6830. keyvariables can be modified at the user or system level and are, therefore, 
  6831. regarded as dynamic. Others are called static. At the procedural level, static 
  6832. PMI keyvariables are fixed to the values specified in the .PMI file and cannot 
  6833. be changed for a given mode. Some dynamic variables have a limited set of 
  6834. possible values; others are valid in a range that should be verified by 
  6835. dedicated sections. See [ModeInfo], [Hardware], and [TuneDisplay] in PMI 
  6836. Sections for more information on dynamic vs. static keyvariables. 
  6837.  
  6838. Not all of the PMI keyvariables have to be defined. See [ModeInfo] and 
  6839. [Hardware] in PMI Sections for further explanations. 
  6840.  
  6841.  
  6842. ΓòÉΓòÉΓòÉ 8.2.3.1. PMI keyvariables ΓòÉΓòÉΓòÉ
  6843.  
  6844. The following table lists all of the keyvariables for the Protect Mode 
  6845. Interface (PMI): 
  6846.  
  6847. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6848. ΓöéName                          ΓöéSection                       Γöé
  6849. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6850. ΓöéApertureSize                  ΓöéModeInfo                      Γöé
  6851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6852. ΓöéBitsPerPixel                  ΓöéModeInfo                      Γöé
  6853. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6854. ΓöéBufferAddress                 ΓöéModeInfo                      Γöé
  6855. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6856. ΓöéBusType                       ΓöéHardware                      Γöé
  6857. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6858. ΓöéBytesPerScanLine              ΓöéModeInfo                      Γöé
  6859. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6860. ΓöéColorFormat                   ΓöéModeInfo                      Γöé
  6861. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6862. ΓöéColorWeight                   ΓöéModeInfo                      Γöé
  6863. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6864. ΓöéDACString                     ΓöéHardware                      Γöé
  6865. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6866. ΓöéEndian                        ΓöéHardware                      Γöé
  6867. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6868. ΓöéHorizontalRefresh             ΓöéMonitorModeInfo               Γöé
  6869. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6870. ΓöéHPolarityPositive             ΓöéMonitorModeInfo               Γöé
  6871. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6872. ΓöéInt10ModeSet                  ΓöéModeInfo                      Γöé
  6873. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6874. ΓöéMemoryIOAddress               ΓöéHardware                      Γöé
  6875. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6876. ΓöéModeAttributes                ΓöéModeInfo                      Γöé
  6877. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6878. ΓöéNumberOfPlanes                ΓöéModeInfo                      Γöé
  6879. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6880. ΓöéOEMString                     ΓöéHardware                      Γöé
  6881. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6882. ΓöéPageLength                    ΓöéModeInfo                      Γöé
  6883. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6884. ΓöéPortIOAddress                 ΓöéHardware                      Γöé
  6885. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6886. ΓöéSaveSize                      ΓöéModeInfo                      Γöé
  6887. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6888. ΓöéScreenLeftEdge                ΓöéMonitorModeInfo               Γöé
  6889. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6890. ΓöéScreenRightEdge               ΓöéMonitorModeInfo               Γöé
  6891. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6892. ΓöéScreenBottomEdge              ΓöéMonitorModeInfo               Γöé
  6893. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6894. ΓöéScreenTopEdge                 ΓöéMonitorModeInfo               Γöé
  6895. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6896. ΓöéSlotID                        ΓöéEnableController              Γöé
  6897. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6898. ΓöéTextRows                      ΓöéModeInfo                      Γöé
  6899. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6900. ΓöéTotalMemory                   ΓöéHardware                      Γöé
  6901. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6902. ΓöéVerticalRefresh               ΓöéMonitorModeInfo               Γöé
  6903. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6904. ΓöéVPolarityPositive             ΓöéMonitorModeInfo               Γöé
  6905. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6906. ΓöéXCharSize                     ΓöéModeInfo                      Γöé
  6907. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6908. ΓöéXResolution                   ΓöéModeInfo                      Γöé
  6909. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6910. ΓöéYCharSize                     ΓöéModeInfo                      Γöé
  6911. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6912. ΓöéYResolution                   ΓöéModeInfo                      Γöé
  6913. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6914.  
  6915.  
  6916. ΓòÉΓòÉΓòÉ 8.2.3.2. PMI Constants ΓòÉΓòÉΓòÉ
  6917.  
  6918. The following table lists the constants used by the Protect Mode Interface 
  6919. (PMI): 
  6920.  
  6921. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6922. ΓöéName                          ΓöéSection                       Γöé
  6923. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6924. ΓöéBIG                           ΓöéHardware                      Γöé
  6925. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6926. ΓöéEISA                          ΓöéHardware                      Γöé
  6927. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6928. ΓöéISA                           ΓöéHardware                      Γöé
  6929. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6930. ΓöéLITTLE                        ΓöéHardware                      Γöé
  6931. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6932. ΓöéMCA                           ΓöéHardware                      Γöé
  6933. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6934. ΓöéMMIO                          ΓöéDeclarations                  Γöé
  6935. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6936. ΓöéPCI                           ΓöéHardware                      Γöé
  6937. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6938. ΓöéPCMCIA**                      ΓöéHardware                      Γöé
  6939. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6940. ΓöéPIO                           ΓöéDeclarations                  Γöé
  6941. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6942. ΓöéVLB                           ΓöéHardware                      Γöé
  6943. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6944.  
  6945.  
  6946. ΓòÉΓòÉΓòÉ 8.2.3.3. PMI Keywords ΓòÉΓòÉΓòÉ
  6947.  
  6948. The following table lists the reserved identifiers, called Keywords, used by 
  6949. the Protect Mode Interface (PMI): 
  6950.  
  6951. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6952. ΓöéName                          ΓöéSection                       Γöé
  6953. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6954. Γöé[Cleanup]                     ΓöéPMI sections                  Γöé
  6955. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6956. Γöé[Comment]                     ΓöéPMI sections                  Γöé
  6957. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6958. Γöé[Declarations]                ΓöéPMI sections                  Γöé
  6959. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6960. Γöé[DisableController]           ΓöéPMI sections                  Γöé
  6961. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6962. Γöé[EnableController]            ΓöéPMI sections                  Γöé
  6963. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6964. Γöé[GetBank]                     ΓöéPMI sections                  Γöé
  6965. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6966. Γöé[Hardware]                    ΓöéPMI sections                  Γöé
  6967. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6968. Γöé[IdentifyAdapter]             ΓöéPMI sections                  Γöé
  6969. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6970. Γöé[IsEngineBusy]                ΓöéPMI sections                  Γöé
  6971. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6972. Γöé[ModeInfo]                    ΓöéPMI sections                  Γöé
  6973. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6974. Γöé[MonitorModeInfo]             ΓöéPMI sections                  Γöé
  6975. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6976. Γöé[PMIVersion]                  ΓöéPMI sections                  Γöé
  6977. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6978. Γöé[SetBank]                     ΓöéPMI sections                  Γöé
  6979. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6980. Γöé[SetMode]                     ΓöéPMI sections                  Γöé
  6981. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6982. Γöé[SetMonitorTimings]           ΓöéPMI sections                  Γöé
  6983. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6984. Γöé[TrapRegs]                    ΓöéPMI sections                  Γöé
  6985. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6986. Γöé[TuneDisplay]                 ΓöéPMI sections                  Γöé
  6987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6988. Γöé[UnLock]                      ΓöéPMI sections                  Γöé
  6989. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6990. ΓöéABOUTDW                       ΓöéPMI commands                  Γöé
  6991. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6992. ΓöéABOUTW                        ΓöéPMI commands                  Γöé
  6993. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6994. ΓöéACCEL                         ΓöéTrapRegs                      Γöé
  6995. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6996. ΓöéBYTE_IOPORT                   ΓöéTrapRegs                      Γöé
  6997. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6998. ΓöéBYTE_MMIOPORT                 ΓöéTrapRegs                      Γöé
  6999. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7000. ΓöéBINB                          ΓöéPMI commands                  Γöé
  7001. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7002. ΓöéBOUTB                         ΓöéPMI commands                  Γöé
  7003. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7004. ΓöéDATAMASK                      ΓöéTrapRegs                      Γöé
  7005. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7006. ΓöéDWORD_IOPORT                  ΓöéTrapRegs                      Γöé
  7007. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7008. ΓöéDWORD_MMIOPORT                ΓöéTrapRegs                      Γöé
  7009. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7010. ΓöéENDWHILE                      ΓöéPMI constructs                Γöé
  7011. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7012. ΓöéGOTO                          ΓöéPMI constructs                Γöé
  7013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7014. ΓöéIF                            ΓöéPMI constructs                Γöé
  7015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7016. ΓöéINB                           ΓöéPMI commands                  Γöé
  7017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7018. ΓöéINDEX                         ΓöéTrapRegs                      Γöé
  7019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7020. ΓöéINDEXMASK                     ΓöéTrapRegs                      Γöé
  7021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7022. ΓöéINDW                          ΓöéPMI commands                  Γöé
  7023. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7024. ΓöéINW                           ΓöéPMI commands                  Γöé
  7025. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7026. ΓöéMEMCMP                        ΓöéPMI constructs                Γöé
  7027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7028. ΓöéOUTB                          ΓöéPMI commands                  Γöé
  7029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7030. ΓöéOUTDW                         ΓöéPMI commands                  Γöé
  7031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7032. ΓöéOUTW                          ΓöéPMI commands                  Γöé
  7033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7034. ΓöéRESET                         ΓöéTrapRegs                      Γöé
  7035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7036. ΓöéREADB                         ΓöéPMI commands                  Γöé
  7037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7038. ΓöéREADDW                        ΓöéPMI commands                  Γöé
  7039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7040. ΓöéREADW                         ΓöéPMI commands                  Γöé
  7041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7042. ΓöéRMWB                          ΓöéPMI commands                  Γöé
  7043. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7044. ΓöéRMWBI                         ΓöéPMI commands                  Γöé
  7045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7046. ΓöéRMWW                          ΓöéPMI commands                  Γöé
  7047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7048. ΓöéRO                            ΓöéTrapRegs                      Γöé
  7049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7050. ΓöéRW                            ΓöéTrapRegs                      Γöé
  7051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7052. ΓöéSTRCMP                        ΓöéPMI constructs                Γöé
  7053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7054. ΓöéWHILE                         ΓöéPMI constructs                Γöé
  7055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7056. ΓöéWO                            ΓöéTrapRegs                      Γöé
  7057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7058. ΓöéWORD_IOPORT                   ΓöéTrapRegs                      Γöé
  7059. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7060. ΓöéWORD_MMIOPORT                 ΓöéTrapRegs                      Γöé
  7061. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7062. ΓöéWRITEB                        ΓöéPMI commands                  Γöé
  7063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7064. ΓöéWRITEDW                       ΓöéPMI commands                  Γöé
  7065. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7066. ΓöéWRITEW                        ΓöéPMI commands                  Γöé
  7067. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7068.  
  7069. Variables are user-defined identifiers that symbolically represent a hardware 
  7070. register in terms of its offset, in either the CPU's I/O space or memory space. 
  7071. Use of variables is required for system architectures in which dynamic 
  7072. configuration and multiple instances of the same hardware are possible. A 
  7073. variable must be declared prior to being used. See [Declarations] in PMI 
  7074. Sections. 
  7075.  
  7076.  
  7077. <memory-mapped variable>  ::= <mmio variable>  =  'MMIO{'<number>'}'
  7078. <port-variable declaration>  ::= <pio variable>  = 'PIO{'<number>'}'
  7079. <mmio variable>  ::= <name>
  7080. <pio variable>  ::= <name>
  7081.  
  7082. For example: 
  7083.  
  7084.  
  7085. seq_address = PIO{0x3c4};
  7086. interrupt_en = MMIO{0x00000080}
  7087.  
  7088. Labels are user-defined identifiers that refer to code locations. The scope of 
  7089. a label is its containing function (or section). A label name within an adapter 
  7090. definition should be unique. The label must be declared prior to its reference. 
  7091.  
  7092.  
  7093. <label>  ::= <name>':'
  7094.  
  7095.  
  7096. ΓòÉΓòÉΓòÉ 8.2.4. Registers ΓòÉΓòÉΓòÉ
  7097.  
  7098. Registers are internal local variables that are used to hold interim results 
  7099. and return or pass information. There are 256 32-bit noninitialized registers 
  7100. that are private to every VIDEOPMI caller. Registers should be assigned their 
  7101. values prior to being used. They can be used as a source in port OUT commands 
  7102. and memory WRITE commands or as a destination in the port IN commands and 
  7103. memory READ commands. Size of these operations is determined by the size of the 
  7104. PMI command. A set of 32-bit operations on registers is also defined in the 
  7105. syntax. When used in block I/O commands, the register index should be the same 
  7106. as that of the port index to which it corresponds. Register r0 is used as the 
  7107. return value register from functions that have a return value. Register r0 is 
  7108. also used to provide the bank number to the SetBank function. 
  7109.  
  7110. Care should be taken in assigning registers in sections that contain function 
  7111. calls. Because all of the internal and imported PMI functions have 
  7112. addressability to the same set of registers, they will overwrite values set 
  7113. before function calls. 
  7114.  
  7115. <register>  = r<'0'..'255'>
  7116.  
  7117.  
  7118. ΓòÉΓòÉΓòÉ 8.2.5. Operators, Assignment Expressions, and Conditional Expressions ΓòÉΓòÉΓòÉ
  7119.  
  7120. The following operators are valid in the PMI syntax: 
  7121.  
  7122.  
  7123. <postfix unary additive op>  ::= '++'  |  '--'
  7124. <additive op>  ::= '+'  |  '-'
  7125. <shift op> ::= '<<'  |  '>>'
  7126. <bitwise op> ::= '&'  |  '|'  |  '^'
  7127. <relational op> ::= '<'  |  '>'  |  '==' | '<=' |  '>=' |  '!='
  7128. <binary assignment op> ::= '&=' | '|= ' | '<<=' |  '>>=' | '+=' | '-='
  7129.  | '^='
  7130. <unary negation op>  ::= '~'
  7131. <assignment op>  ::= '='
  7132.  
  7133. Both assignment and conditional expressions in the PMI syntax are limited to a 
  7134. single expression term. The value of a conditional expression is either TRUE 
  7135. (nonzero) or FALSE (zero). 
  7136.  
  7137.  
  7138. <assignment>  ::=
  7139. <register><postfix unary additive op>  |
  7140.  
  7141. <register><binary assignment op> [<constant>|<register>]  |
  7142.  
  7143. <register><assignment op>  { <PMI Keyvariable>  |
  7144.                              <register operand>|<constant>  } |
  7145.  
  7146. <register><assignment op>  {<register operand>  | <PMI keyvariable>}
  7147.                            {<additive op>|<shift op> |  <bitwiseop>}
  7148.                            {<constant>  |  <register>
  7149.  
  7150. <register operand>  ::= [<unary negation op>]<register>
  7151.  
  7152. Examples: 
  7153.  
  7154.  
  7155. r0 = VerticalRefresh;
  7156. r0 <<= 0x10;
  7157. r1++; r2--;
  7158. r1 = ~r2 ^ 0x04;
  7159. r2 = XResolution <<  r1;
  7160. r1 = r2 + 0xffff;
  7161.  
  7162.  
  7163. <condition>  ::=
  7164.           '(' { <PMI Keyvariable>  |  <register>} {<relational op> | <bitwise op>}
  7165.  
  7166.           { <PMI Keyvariable>  |  <register>  |  <constant>  } ')'
  7167.  
  7168. Examples: 
  7169.  
  7170.  
  7171. (XResolution == 1024)
  7172. (r1 & 0x0fe0)
  7173. (r2 == VerticalRefresh)
  7174.  
  7175.  
  7176. ΓòÉΓòÉΓòÉ 8.2.6. PMI Functions ΓòÉΓòÉΓòÉ
  7177.  
  7178. A PMI function is defined as a PMI Section with a user-defined name other than 
  7179. one of the predefined Section names. 
  7180.  
  7181. PMI functions have the following characteristics: 
  7182.  
  7183.   o  Argument passing is performed using registers. 
  7184.  
  7185.   o  Functions can be of either the VOID type (no return value) or of the 
  7186.      APIRET type (return 0 for success and nonzero for failure). 
  7187.  
  7188.   o  Function prototypes are not explicitly declared; the calling section has 
  7189.      to understand how many and which registers need to be set and set them 
  7190.      before calling the function. 
  7191.  
  7192.   o  Functions are invoked by specifying the function name in a section. 
  7193.  
  7194.   o  Functions must be declared prior to their use. 
  7195.  
  7196.   o  A function may be called from within a function. 
  7197.  
  7198.   o  Recursions are not allowed. 
  7199.  
  7200.   o  There is no explicit exit or return command from functions. 
  7201.  
  7202.   o  The last command or assignment in the function's section is considered its 
  7203.      exit point. 
  7204.  
  7205. PMI functions should be used extensively to create commonality and to 
  7206. encapsulate related operations. This use will reduce development costs, support 
  7207. more adapter-specific variations, reduce the size of the .PMI file, and improve 
  7208. performance. 
  7209.  
  7210. The VIDEO_ADAPTER structure is passed by PMI procedural callers at every PMI 
  7211. entry point and is available to all of the PMI functions other than 
  7212. IdentifyAdapter. All PMI functions have addressability to the current state of 
  7213. the PMI registers and care should be taken in using the registers. 
  7214.  
  7215.  
  7216. ΓòÉΓòÉΓòÉ 8.2.7. PMI Commands ΓòÉΓòÉΓòÉ
  7217.  
  7218. PMI commands are divided into several categories, as follows: 
  7219.  
  7220.   o  Simple I/O commands 
  7221.  
  7222.   o  Block I/O commands 
  7223.  
  7224.   o  Read/Modify/Write commands 
  7225.  
  7226.   o  Simple memory access commands 
  7227.  
  7228.   o  WAIT command 
  7229.  
  7230.  
  7231. ΓòÉΓòÉΓòÉ 8.2.7.1. INx Commands ΓòÉΓòÉΓòÉ
  7232.  
  7233. INx commands perform an I/O input from the source and place the result into the 
  7234. destination.  Width can be byte, word, or doubleword. The syntax is as follows: 
  7235.  
  7236.  
  7237. INB( destination, source);
  7238. INW( destination, source);
  7239. INDW( destination, source);
  7240.  
  7241. <destination>  ::= <register>
  7242. <source> ::= <constant>  |  <pio variable>
  7243.  
  7244.  
  7245. ΓòÉΓòÉΓòÉ 8.2.7.2. OUTx Commands ΓòÉΓòÉΓòÉ
  7246.  
  7247. OUTx commands perform an I/O output from the source into the destination. Width 
  7248. can be byte, word, or doubleword. The syntax is as follows: 
  7249.  
  7250.  
  7251. OUTB( destination, source);
  7252. OUTW( destination, source);
  7253. OUTDW( destination, source);
  7254.  
  7255. <destination>  ::= <pio variable>  |  <constant>
  7256. <source>  ::= {<constant>  |  <register>}
  7257.  
  7258. For example: 
  7259.  
  7260.  
  7261. outb(seq_address,r1);              //seq_address must have been declared.
  7262. outw(0x3c4,0x5520);
  7263.  
  7264.  
  7265. ΓòÉΓòÉΓòÉ 8.2.7.3. Block I/O Commands ΓòÉΓòÉΓòÉ
  7266.  
  7267. Block I/O commands are designed for indexed ports. Byte-indexed access requires 
  7268. both index and data port values. Word and Dword block I/O is implemented as 
  7269. autoincrement block I/O, which causes no explicit modification to the index 
  7270. register. Word and Dword block I/O assumes that the hardware either implements 
  7271. autoincrementing or that the values being written specify both index and data. 
  7272. The autoincrementing (ABOUTx) command is not available for byte size. All block 
  7273. I/O commands assume that a set of PMI registers has been programmed prior to 
  7274. calling the command. The startindex field is used as the index of the first PMI 
  7275. register in the set and as the first indexed port value (except in ABOUTx 
  7276. commands). If the hardware's autoincrementing feature needs to be programmed 
  7277. explicitly, it should be done prior to calling the block I/O and should be left 
  7278. enabled upon completion of the mode set. See "Save and Restore State" in 
  7279. Overview and [TrapRegs] in PMI Sections. 
  7280.  
  7281.  
  7282. BINB( count, startindex, indexport, dataport );
  7283. BOUTB( count,startindex, indexport, dataport );
  7284. ABOUTW( count, startindex, port )
  7285. ABOUTDW( count, startindex, port );
  7286.  
  7287. <startindex>  ::= <constant>
  7288. <count>  ::= <constant>
  7289. <indexport>  ::= <pio variable>  |  <constant>
  7290. <dataport>  ::= <pio variable>  |  <constant>
  7291. <port>  ::= <pio variable>  |  <constant>
  7292.  
  7293. For example: 
  7294.  
  7295.  
  7296. r0 = 0x11; r1 = 0x12; r2 = 0x13;
  7297. boutb(0x03, 0x00, seq_address, seq_data);   //seq_address and seq_data
  7298.                                                   //already declared.
  7299.  
  7300.  
  7301. ΓòÉΓòÉΓòÉ 8.2.7.4. RMWx Commands ΓòÉΓòÉΓòÉ
  7302.  
  7303. RMWx (Read/Modify/Write) commands are available in byte format (indexed or 
  7304. nonindexed) and in word format (nonindexed). A nonindexed port RMWx can be used 
  7305. for ports that have different read and write access I/O addresses. The syntax 
  7306. is as follows: 
  7307.  
  7308.  
  7309. RMWBI( indexport, dataport, index, andmask, ormask );
  7310. RMWB( bytereadport, bytewriteport, andmask, ormask );
  7311. RMWW( wordreadport, wordwriteport, andmask, ormask );
  7312.  
  7313. <indexport>  ::= <pio variable>  |  <constant>
  7314. <dataport>  ::= <pio variable>  |  <constant>
  7315. <bytereadport>  ::= <pio variable>  |  <constant>
  7316. <bytewriteport>  ::= <pio variable>  |  <constant>
  7317. <wordreadport>  ::= <pio variable>  |  <constant>
  7318. <wordwriteport>  ::= <pio variable>  |  <constant>
  7319. <index>  ::= <constant>
  7320. <andmask>  ::= <constant>
  7321. <ormask>  ::= <constant>
  7322.  
  7323. For example: 
  7324.  
  7325.  
  7326. rmww(0x4ae8, 0x4ae8, 0x01, 0x00);
  7327.  
  7328.  
  7329. ΓòÉΓòÉΓòÉ 8.2.7.5. Memory I/O Commands ΓòÉΓòÉΓòÉ
  7330.  
  7331. Memory I/O commands have only simple, single-port access format. Block I/O or 
  7332. indexing is not facilitated. Supported widths are Byte, Word, or Dword. Both 
  7333. destination and source represent either physical addresses or a register. The 
  7334. syntax is as follows: 
  7335.  
  7336.  
  7337. READB( destination, source );      //read from source address, store
  7338.                                              //in destination variable
  7339. READW(destination, source );
  7340. READDW( destination, source);
  7341.  
  7342. <destination>  ::= <register>
  7343. <source>  ::= <constant>  |  <mmio variable>
  7344.  
  7345. WRITEB( destination, source );          //read from source variable, store
  7346.                                              //in destination address
  7347. WRITEW( destination, source );
  7348. WRITEDW( destination, source );
  7349. <destination>  ::= <mmio variable>  |  <constant>
  7350. <source>  ::= <constant>|<register>
  7351.  
  7352. For example: 
  7353.  
  7354.  
  7355. writedw(interrupt_en, r1);      //interrupt_en already declared.
  7356. writeb(0xa0000080,0x88);      //write 0x88 into phys.  add 0xa00000080
  7357. readw(r1, 0xa0000080);        //read a word from 0xa0000080 into r1.
  7358.  
  7359.  
  7360. ΓòÉΓòÉΓòÉ 8.2.7.6. WAIT Command ΓòÉΓòÉΓòÉ
  7361.  
  7362. The WAIT command should be used to wait on vertical retrace or to wait on a 
  7363. desired status. The command allows for a time-out in milliseconds. The 
  7364. condition for wait has been met if port value ANDed with andmask has the 
  7365. waitonvalue. Register r0 is set to convey the status: 
  7366.  
  7367.   o  TRUE (1) means that the waiting condition has been met. 
  7368.  
  7369.   o  FALSE means that a time-out has occurred. 
  7370.  
  7371. The wait is interruptable. This command should not be used in Cleanup sections. 
  7372.  
  7373. The port can be an immediate value, which presumes that the port is an I/O port 
  7374. or a declared port. In these cases, the port's declaration type is used in 
  7375. interpreting this command. 
  7376.  
  7377.  
  7378. WAIT( port, andmask, timeout, waitonvalue );
  7379. <andmask>  ::= <number>
  7380. <timeout>  ::= <number>
  7381. <waitonvalue> ::= <number>
  7382.  
  7383. <port>  ::= <  constant>  |  <pio variable>  |  <mmio variable>
  7384.  
  7385.  
  7386. ΓòÉΓòÉΓòÉ 8.2.8. PMI Constructs and Library Functions ΓòÉΓòÉΓòÉ
  7387.  
  7388. PMI constructs are keywords that are used for program flow control in PMI 
  7389. command sections. There are three flow control constructs:  WHILE loop, 
  7390. unconditional jump GOTO, and conditional IF GOTO label jump. The constructs can 
  7391. be nested. Label reference can only be forward; in other words, a label must 
  7392. have been encountered before its referring construct. 
  7393.  
  7394.  
  7395. WHILE <condition>       ;while loop condition is true, proceed
  7396. ...                             ;else continue after ENDWHILE statement
  7397. ...
  7398. ...
  7399. ENDWHILE
  7400.  
  7401. GOTO <label>            ;jump to label
  7402.  
  7403. IF <condition>  GOTO <label>     ;if condition true, jump to label
  7404.  
  7405. For example: 
  7406.  
  7407.  
  7408. if (r1 != 0x88) goto done
  7409.  
  7410. Two library functions facilitate string and binary compares: STRCMP and MEMCMP. 
  7411. These functions are especially useful in searching for signature sequences when 
  7412. identifying the adapter or comparing other string-literal names. STRCMP is used 
  7413. to compare a zero-ended character string (must be in double quotes) source with 
  7414. a destination specified as its physical address. MEMCMP is used to compare 
  7415. binary fields. The source string-literal for MEMCMP is assumed to be a string 
  7416. of 1s and 0s. If there is a need to search for a hexadecimal or other strings, 
  7417. these must be converted to their binary form first. Byte alignment of both the 
  7418. source and target in the physical memory is assumed. Both functions return the 
  7419. result in r0:  zero if the match was completely successful or nonzero 
  7420. otherwise. The length of the search is determined by the length of the source 
  7421. string. 
  7422.  
  7423. String compares are performed after both source and target are converted to 
  7424. uppercase. 
  7425.  
  7426.  
  7427. STRCMP(<destination>, <source>};
  7428. <destination>  ::= <address>        ;physical address
  7429. <source>  ::= <string>)
  7430. MEMCMP(<destination>, <source>};
  7431. <source>  ::= <binary-string>
  7432. <address> ::= <PMI keyvariable> | <constant>
  7433.  
  7434. For example: 
  7435.  
  7436.  
  7437. MEMCMP (0xc0154,"1001001111010001"); //compare 2 bytes at 0xc0154 with 0x93d1
  7438.  
  7439.  
  7440. ΓòÉΓòÉΓòÉ 8.3. PMI Sections ΓòÉΓòÉΓòÉ
  7441.  
  7442. This part of the chapter discusses the different types of Sections in a .PMI 
  7443. file. 
  7444.  
  7445.  
  7446. ΓòÉΓòÉΓòÉ 8.3.1. Sections and Their Order of Appearance ΓòÉΓòÉΓòÉ
  7447.  
  7448. Note:  The Service sections are commented on and illustrated using the PMI 
  7449.        language. 
  7450.  
  7451. The following table lists the sections in the order they appear in a .PMI file. 
  7452.  
  7453. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7454. ΓöéName              ΓöéRequiredΓöéType          ΓöéComments            Γöé
  7455. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7456. Γöé[PMIVersion]      ΓöéYes     ΓöéInformational Γöé                    Γöé
  7457. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7458. Γöé[Hardware]        ΓöéYes     ΓöéInformational Γöé                    Γöé
  7459. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7460. Γöé[Declarations]    ΓöéNo      ΓöéInformational ΓöéProvides multiple   Γöé
  7461. Γöé                  Γöé        Γöé              Γöéinstances, dynamic  Γöé
  7462. Γöé                  Γöé        Γöé              Γöéconfiguration       Γöé
  7463. Γöé                  Γöé        Γöé              Γöésupport             Γöé
  7464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7465. Γöé[TrapRegs]        ΓöéYes     ΓöéInformational ΓöéProvides limited    Γöé
  7466. Γöé                  Γöé        Γöé              Γöévirtualization      Γöé
  7467. Γöé                  Γöé        Γöé              Γöésupport             Γöé
  7468. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7469. Γöé[IdentifyAdapter] ΓöéYes     ΓöéService       Γöé                    Γöé
  7470. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7471. Γöé[DisableCΓöéYes     ΓöéService       ΓöéProvides            Γöé
  7472. Γöé                  Γöé        Γöé              Γöéconfiguration       Γöé
  7473. Γöé                  Γöé        Γöé              Γöésupport, if         Γöé
  7474. Γöé                  Γöé        Γöé              Γöéapplicable          Γöé
  7475. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7476. Γöé[EnableController]ΓöéYes     ΓöéService       ΓöéProvides            Γöé
  7477. Γöé                  Γöé        Γöé              Γöéconfiguration       Γöé
  7478. Γöé                  Γöé        Γöé              Γöésupport, if         Γöé
  7479. Γöé                  Γöé        Γöé              Γöéapplicable          Γöé
  7480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7481. Γöé[UnLock]          ΓöéYes     ΓöéService       Γöé                    Γöé
  7482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7483. Γöé[Cleanup]         ΓöéYes     ΓöéService       ΓöéProvides reset,     Γöé
  7484. Γöé                  Γöé        Γöé              Γöédisable, and        Γöé
  7485. Γöé                  Γöé        Γöé              Γöébail-out support    Γöé
  7486. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7487. Γöé[IsEngineBusy]    ΓöéYes     ΓöéService       ΓöéRequired for        Γöé
  7488. Γöé                  Γöé        Γöé              Γöéaccelerators and    Γöé
  7489. Γöé                  Γöé        Γöé              Γöécoprocessors        Γöé
  7490. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7491. Γöé[SetBank]         ΓöéYes     ΓöéService       ΓöéIf applicable       Γöé
  7492. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7493. Γöé[GetBank]         ΓöéYes     ΓöéService       ΓöéIf applicable       Γöé
  7494. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7495. Γöé[TuneDisplay]     ΓöéNo      ΓöéService       ΓöéProvides display    Γöé
  7496. Γöé                  Γöé        Γöé              Γöécentering and sizingΓöé
  7497. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7498. Γöé[SetMonitΓöéNo      ΓöéService       ΓöéProvides end-user   Γöé
  7499. Γöé                  Γöé        Γöé              Γöéinterface for       Γöé
  7500. Γöé                  Γöé        Γöé              Γöéchanging monitor    Γöé
  7501. Γöé                  Γöé        Γöé              Γöétimings without     Γöé
  7502. Γöé                  Γöé        Γöé              Γöécomplete mode       Γöé
  7503. Γöé                  Γöé        Γöé              Γöéchanges             Γöé
  7504. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7505. Γöé[Comment]         ΓöéNo      ΓöéInformational ΓöéOne per ModeInfo, ifΓöé
  7506. Γöé                  Γöé        Γöé              Γöédesired             Γöé
  7507. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7508. Γöé[ModeInfo]        ΓöéYes     ΓöéInformational ΓöéMultiple entries    Γöé
  7509. Γöé                  Γöé        Γöé              Γöéwith unique values  Γöé
  7510. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7511. Γöé[MonitorModeInfo] ΓöéNo      ΓöéInformational ΓöéProvides multiple   Γöé
  7512. Γöé                  Γöé        Γöé              Γöémonitor-timing      Γöé
  7513. Γöé                  Γöé        Γöé              Γöésupport             Γöé
  7514. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7515. Γöé[SetMode]         ΓöéYes     ΓöéService       ΓöéAt least one per    Γöé
  7516. Γöé                  Γöé        Γöé              Γöéfile or, at most,   Γöé
  7517. Γöé                  Γöé        Γöé              Γöéone per             Γöé
  7518. Γöé                  Γöé        Γöé              ΓöéMonitorModeInfo     Γöé
  7519. Γöé                  Γöé        Γöé              Γöésection             Γöé
  7520. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7521.  
  7522.  
  7523. ΓòÉΓòÉΓòÉ 8.3.2. User-Defined Function Sections ΓòÉΓòÉΓòÉ
  7524.  
  7525. Any section denoted by [NAME] not listed in the preceding table is regarded as 
  7526. a user-defined section. The function can be called internally by the predefined 
  7527. PMI sections or other user-defined functions (see "PMI Functions" in PMI 
  7528. Language Elements). 
  7529.  
  7530.  
  7531. ΓòÉΓòÉΓòÉ 8.3.3. Predefined PMI Sections ΓòÉΓòÉΓòÉ
  7532.  
  7533. The following text describes each of the PMI Sections listed in the table at 
  7534. the beginning of this chapter. 
  7535.  
  7536.  
  7537. ΓòÉΓòÉΓòÉ 8.3.3.1. [PMIVersion] ΓòÉΓòÉΓòÉ
  7538.  
  7539. This section is used to describe the PMI language revision level used. 
  7540.  
  7541.  
  7542. ΓòÉΓòÉΓòÉ 8.3.3.2. [Hardware] ΓòÉΓòÉΓòÉ
  7543.  
  7544.   o  BusType = { ISA | VLB | PCI | EISA | PCMCIA | MCA } 
  7545.  
  7546.      The hardware description is available through a system query function. Any 
  7547.      other definition is regarded as a user definition. 
  7548.  
  7549.   o  OEMString  = "CHIPNAME ADAPTERNAME, ADAPTER MANUFACTURER NAME" 
  7550.  
  7551.      OEMString has an internal length of 128 chars, 0 ended. This string should 
  7552.      be sufficient to uniquely describe the video adapter. The string will be 
  7553.      presented to the user at configuration and installation and is the key 
  7554.      element of the system's description of the adapter. It is regarded as a 
  7555.      user definition, meaning that no translation of this information to any 
  7556.      other format is performed. Any trademark information should be provided as 
  7557.      a comment in the .PMI file. 
  7558.  
  7559.      If the .PMI file is not specifically written for an adapter, the 
  7560.      ADAPTERNAME GENERIC is suggested (such files may be shipped by the chip 
  7561.      manufacturers or software vendors). CHIPNAME is a required token and is 
  7562.      used as a key in the display driver installation process to find a 
  7563.      corresponding display driver for a given .PMI file (and vice versa). 
  7564.  
  7565.   o  DACString = "MANUFACTURER NAME [, DACNAME]" 
  7566.  
  7567.      DACNAME, such as Bt485 or AT&T 491 is optional. Regarded as a user 
  7568.      definition. Any trademark information should be provided as a comment. 
  7569.  
  7570.   o  Version = <string> 
  7571.  
  7572.      User-defined. Should represent the version of the manufacturer's .PMI 
  7573.      file, rather than the revision level of the hardware. If multiple versions 
  7574.      of the .PMI file exist for the same OEMString description, and all 
  7575.      respective IdentifyAdapter function calls were successful, the file with 
  7576.      the greater Version string is assumed to be the more appropriate one and 
  7577.      is offered at the top of the PMI list during the video configuration. 
  7578.  
  7579.      The user, however, does have a choice of selecting a different .PMI file. 
  7580.      Note that the PMIVersion section is used to describe the PMI language 
  7581.      revision level used, not the version of the .PMI file. 
  7582.  
  7583.   o  TotalMemory = <constant> 
  7584.  
  7585.      This represents the total size of the currently installed VRAM memory in 
  7586.      bytes. 
  7587.  
  7588.   o  MemoryIOAddress  = <constant> ['{' <mmio list> '}']     <mmio list> ::= 
  7589.      <constant> | <constant> [',' <mmio list>] 
  7590.  
  7591.      Specifies the default base memory address for memory mapped I/O and a list 
  7592.      of possible base addresses. The default value should match the value set 
  7593.      by the configuration performed at the time of the adapter's installation. 
  7594.      It is possible to reconfigure the adapter's address at a later time 
  7595.      without modifying the .PMI file. See "Adapter Configuration" in Overview 
  7596.      and [EnableController] and [Declarations] in this chapter. 
  7597.  
  7598.   o  PortIOAddress   = <constant> ['{' <pio list> '}']    <pio list> ::= 
  7599.      <constant> | <constant> [',' <pio list>] 
  7600.  
  7601.      Specifies default base port address for port I/O and a list of possible 
  7602.      I/O addresses. For example, this variable for an MCA XGA adapter would 
  7603.      reflect its instance that needs to be added to all of the register 
  7604.      addresses. See the preceding discussion on MemoryIOAddress. See also 
  7605.      "Adapter Configuration" in Overview and [EnableController] and 
  7606.      [Declarations] in this chapter. 
  7607.  
  7608.   o  Endian = {BIG | LITTLE} 
  7609.  
  7610.      This represents the endian control capability of the device. The PMI 
  7611.      constants are always represented with the most significant byte at the 
  7612.      leftmost position. There are three possible cases of endian control: 
  7613.  
  7614.        -  The device can conform to the endian type of the platform, such as 
  7615.           WEITEK or XGA. 
  7616.  
  7617.        -  The device cannot conform to the endian type but is of the same 
  7618.           endian type as the platform. 
  7619.  
  7620.        -  The device is of a different endian type than the platform on which 
  7621.           it is installed. 
  7622.  
  7623.         The first two cases require no endian conversion on the part of the 
  7624.         VIDEOPMI interpreter. In the third case, the VIDEOPMI interpreter 
  7625.         native to a platform will perform the byte swapping to the platform's 
  7626.         endian type. The programming of the endian control on devices that are 
  7627.         capable of address swapping, such as XGA or WEITEK, is the 
  7628.         responsibility of the .PMI file. In the case of WEITEK, this is done 
  7629.         indirectly by generating correct addresses. It is preferable to 
  7630.         configure the adapter in the endian control of the platform for which 
  7631.         it is intended, if such capability is present. 
  7632.  
  7633. Here is a sample .PMI file for a Viper VLB card: 
  7634.  
  7635.  
  7636. BusType = VLB
  7637. OEMString = "P9000 VIPER, Diamond Computer Systems Inc."
  7638. DACString = "Brooktree Corporation"
  7639. Version = "3.2"
  7640. TotalMemory = 2097152
  7641. MemoryIOAddress = 0x80000000
  7642. PortIOAddress = 0x00000000
  7643. Endian = LITTLE
  7644.  
  7645.  
  7646. ΓòÉΓòÉΓòÉ 8.3.3.3. [Declarations] ΓòÉΓòÉΓòÉ
  7647.  
  7648. This section is a list of port mnemonics defined by their offsets. Use MMIO for 
  7649. those whose offset is relative to MemoryIOAddress and PIO for those whose 
  7650. offset is relative to the PortIOAddress field in the Hardware section. 
  7651. Addresses for the ports that are referenced by their mnemonics are resolved at 
  7652. the time of the mode sets, using the MemoryIOAddress and/or PortIOAddress 
  7653. hardware values. These values can be changed at run time to allow for dynamic 
  7654. reconfiguration. 
  7655.  
  7656. Here is a sample .PMI file for a Viper VLB card: 
  7657.  
  7658.  
  7659. sysconfig   = MMIO{0x00100004}
  7660. interrupt_en= MMIO{0x0010000c}
  7661. x0y0        = MMIO{0x00181018}
  7662. x1y1        = MMIO{0x00181028}
  7663. x2y2        = MMIO{0x00181048}
  7664. x3y3        = MMIO{0x00181068}
  7665. cindex      = MMIO{0x0018018c}
  7666. w_off.xy    = MMIO{0x00180190}
  7667. fground     = MMIO{0x00180200}
  7668. bground     = MMIO{0x00180204}
  7669. pmask       = MMIO{0x00180208}
  7670. draw_mode   = MMIO{0x0018020c}
  7671. pat_originx = MMIO{0x00180210}
  7672. pat_originy = MMIO{0x00180214}
  7673. raster      = MMIO{0x00180218}
  7674. pixel8_reg  = MMIO{0x0018021c}
  7675. w_min       = MMIO{0x00180220}
  7676. w_max       = MMIO{0x00180224}
  7677. pattern0    = MMIO{0x00180280}
  7678. pattern2    = MMIO{0x00180284}
  7679. pattern4    = MMIO{0x00180288}
  7680. pattern6    = MMIO{0x0018028c}
  7681. pattern8    = MMIO{0x00180290}
  7682. patternA    = MMIO{0x00180294}
  7683. patternC    = MMIO{0x00180298}
  7684. patternE    = MMIO{0x0018029c}
  7685. hrzt        = MMIO{0x00100108}
  7686. hrzsr       = MMIO{0x0010010c}
  7687. hrzbr       = MMIO{0x00100110}
  7688. hrzbf       = MMIO{0x00100114}
  7689. prehrzc     = MMIO{0x00100118}
  7690. vrtt        = MMIO{0x00100120}
  7691. vrtsr       = MMIO{0x00100124}
  7692. vrtbr       = MMIO{0x00100128}
  7693. vrtbf       = MMIO{0x0010012c}
  7694. prevrtc     = MMIO{0x00100130}
  7695. srtctl      = MMIO{0x00100138}
  7696. memconfig   = MMIO{0x00100184}
  7697. rfperiod    = MMIO{0x00100188}
  7698. rfcount     = MMIO{0x0010018c}
  7699. rlmax       = MMIO{0x00100190}
  7700.  
  7701.  
  7702. ΓòÉΓòÉΓòÉ 8.3.3.4. [TrapRegs] ΓòÉΓòÉΓòÉ
  7703.  
  7704. All ports of an adapter that need to be accessed by the video subsystem in both 
  7705. I/O or memory space should be listed with their respective definitions in the 
  7706. TrapRegs section. A port could be either an immediate or a mnemonic defined in 
  7707. the Declarations section. The list of trapped registers is available through a 
  7708. system query function. 
  7709.  
  7710. In OS/2 Warp, PowerPC Edition, I/O ports and video memory have to be mapped 
  7711. before access can be performed. This section contains all the physical video 
  7712. resource needed for PMI services. In a future release, VIDEOPMI will handle all 
  7713. the mapping of video resource defined in this section. Currently, mapping is 
  7714. handled by the microkernel console driver. See Hardware Access Under OS/2 Warp, 
  7715. PowerPC Edition for details. 
  7716.  
  7717. In a future release, the virtual video driver will use the TrapRegs definition 
  7718. to allocate storage for shadow registers, install all of the necessary I/O 
  7719. hooks, and decide whether a background access to a register is permissible. The 
  7720. driver is aware of VGA and 8514 ports and makes the appropriate decision, if 
  7721. access is made to the registers with known definitions. All port access in the 
  7722. background is divided into two categories: 
  7723.  
  7724.   o  The first is access that constitutes an acceleration or an action that 
  7725.      initiates a change in the hardware's response beyond the dumb 
  7726.      store-retrieve behavior. Such access would require a specialized virtual 
  7727.      driver. 
  7728.  
  7729.   o  The second is access that is permissible and can be shadowed. Such access 
  7730.      would include resetting of acceleration, disabling of the accelerator, 
  7731.      other actions whose purpose is to enable the hardware for a dumb-frame 
  7732.      access, or actions that are "accelerator no-op." 
  7733.  
  7734. In order to facilitate the virtual driver's decision on the type of access a 
  7735. DOS application is making, accelerator-related ports should be marked as ACCEL. 
  7736. If there is a reset state of these ports that denotes "acceleration reset 
  7737. state," that should be specified using resetzeromask and resetonemask. The 
  7738. virtual driver will allow background port access to the ACCEL ports if it 
  7739. conforms to the two reset masks. These two reset fields are bitmasks or 
  7740. allowable values; first is the bitmask of 0s and second is the bitmask of 1s. 
  7741. For example, RESETMASK(0xca,0x4a) means that value 0 is allowed in positions 7, 
  7742. 6, 3, and 1, and value 1 is allowed in positions 6, 3, and 1. This limited 
  7743. virtualization should allow at least nonaccelerated modes to be virtualized 
  7744. correctly. Vendors wishing to virtualize accelerated mode have to invest in a 
  7745. dedicated virtual driver. 
  7746.  
  7747. Multiports (port arrays) should be defined in terms of the address port, 
  7748. INDEXMASK. This address port represents the bitmask of the index address fields 
  7749. (INDEX list). The INDEX list represents the writeable registers within the 
  7750. register array and data port with the DATAMASK. It is possible to have register 
  7751. arrays that are addressable through a single address/data register. This type 
  7752. of array is referred to as single-access. Single-access register arrays are 
  7753. identified by having the same data register and address register. INDEXMASK and 
  7754. DATAMASK are assumed to be contiguous. Indexed registers are assumed to be read 
  7755. from and written to in the same fashion, although the virtual driver will treat 
  7756. some known ports, such as the 8514 multifunction array, differently (as special 
  7757. cases). Single-access registers are assumed to be autoincrement-enabled and 
  7758. will be saved by reading the port INDEXMASK number of times; the read index 
  7759. fields will be interpreted for appropriate register shadowing. The 
  7760. autoincrementing feature should, therefore, be enabled for reading at all times 
  7761. (SetMode). 
  7762.  
  7763. If a port is serving as address/data gate for a number of different register 
  7764. arrays (such is the case on WDc24),  proper virtualization of such arrays can 
  7765. be done only by a dedicated virtual driver. Such an address/data port can be 
  7766. listed as a nonindexed port and marked as ACCEL. This indicates that any access 
  7767. to the port other than RESET constitutes an accelerated function and cannot be 
  7768. permitted in the background. Ports should be marked as RW (read-write), RO 
  7769. (Read-only), or WO (write-only) in order to facilitate the Save/Restore. 
  7770.  
  7771. The virtualization of the port access, in which read access defines a port 
  7772. other than the write access, is not supported. 
  7773.  
  7774. Read-only ports also could be listed in the TrapRegs and, if listed, a 
  7775. dedicated I/O hook function would prohibit write access to the port at all 
  7776. times. However, read access in the foreground would be permitted (not I/O 
  7777. hooked), and background access would return values recorded at the switch time. 
  7778. This listing is done so that a vendor can protect a writeable register from 
  7779. VDM's write access by declaring it as read-only. Virtualization of read-access 
  7780. ports that differs from this scheme would require a dedicated virtual driver. 
  7781.  
  7782. It is recommended, but not necessary, to program all of the writeable ports 
  7783. from the TrapRegs list in the course of each mode set. 
  7784.  
  7785.  
  7786. <port description> {<readport> [<writeport>]  |
  7787.                     <indexport> [<index description> ','
  7788.                     <dataport>       <datamask>] }
  7789. <port description> ::= <port size> <accesstype> ['ACCEL'
  7790.                     ['RESET('<resetzeromask> ',' <resetonemask>')']]
  7791.  
  7792. <port size> ::= 'BYTE_IOPORT' |  'WORD_IOPORT' |   'DWORD_IOPORT' |
  7793.                 'BYTE_MMIOPORT' | 'WORD_MMIOPORT' | 'DWORD_MMIOPORT'
  7794. <resetzeromask> ::= <constant>
  7795. <resetonemask> ::= <constant>
  7796. <index description> ::= 'INDEXMASK(' <bitmask> ')'
  7797.                         'INDEX ('<index range>  ')'
  7798. <index range> ::= <constant> '-' <constant> |
  7799.                   <constant> '-' <constant> [','<index range>]
  7800. <datamask>     ::= 'DATAMASK ('<constant>')'
  7801. <readport> ::= <pio variable> | <mmio name>
  7802. <writeport> ::= <pio variable>
  7803. <accesstype> ::= 'RO' | 'RW' | 'WO'
  7804.  
  7805. Here is a sample .PMI file for a Viper VLB card: 
  7806.  
  7807.  
  7808. BYTE_IOPORT RW 0x3c2, 0x3cc;
  7809. BYTE_IOPORT RW 0x3c4 INDEXMASK(01fx) INDEX( 0x00-0x05, 0x11-0x13 ), 0x3c5
  7810.                          DATAMASK(0xff);
  7811. BYTE_IOPORT RW 0x3d4 INDEXMASK(01fx) INDEX( 0x00-0x1d ), 0x3d5
  7812.                          DATAMASK(0xff);
  7813. BYTE_IOPORT RW 0x3c0 INDEXMASK(01fx) INDEX( 0x00-0x13 ), 0x3c0
  7814.                          DATAMASK(0xff);
  7815. BYTE_IOPORT RW 0x3ce INDEXMASK(0x0f) INDEX( 0x00-0x0f ), 0x3cf
  7816.                          DATAMASK(0xff);
  7817. DWORD_MMIOPORT RW ACCEL sysconfig;
  7818. DWORD_MMIOPORT RW ACCEL rfperiod;
  7819. DWORD_MMIOPORT RW ACCEL rlmax;
  7820. DWORD_MMIOPORT RW ACCEL pmask;
  7821. DWORD_MMIOPORT RW ACCEL draw_mode;
  7822. DWORD_MMIOPORT RW ACCEL pat_originx;
  7823. DWORD_MMIOPORT RW ACCEL pat_originy;
  7824. DWORD_MMIOPORT RW ACCEL w_min;
  7825. DWORD_MMIOPORT RW ACCEL w_max;
  7826. DWORD_MMIOPORT RW ACCEL hrzt;
  7827. DWORD_MMIOPORT RW ACCEL hrzsr;
  7828. DWORD_MMIOPORT RW ACCEL hrzbr;
  7829. DWORD_MMIOPORT RW ACCEL hrzbf;
  7830. DWORD_MMIOPORT RW ACCEL prehrzc;
  7831. DWORD_MMIOPORT RW ACCEL vrtt;
  7832. DWORD_MMIOPORT RW ACCEL vrtsr;
  7833. DWORD_MMIOPORT RW ACCEL vrtbr;
  7834. DWORD_MMIOPORT RW ACCEL vrtbf;
  7835. DWORD_MMIOPORT RW ACCEL prevrtc;
  7836. DWORD_MMIOPORT RW ACCEL memconfig;
  7837. DWORD_MMIOPORT RW ACCEL srtctl;
  7838.  
  7839. Here is a sample of an 8514/a Advanced Function Control Register on S3: 
  7840.  
  7841.  
  7842. WORD_IOPORT ACCEL RESET(0xff,0xde) 0x4ae8;
  7843.  
  7844. All bit positions are valid for 0 value. Bit 0, when loaded with 1, is enabling 
  7845. the enhanced display function, which is prohibited. Bit 5, when loaded with 1, 
  7846. is enabling the MMIO addressing, which is also prohibited. Dynamic switching 
  7847. between MMIO and port I/O driver access for any adapter currently requires a 
  7848. dedicated virtual driver. 
  7849.  
  7850.  
  7851. ΓòÉΓòÉΓòÉ 8.3.3.5. [IdentifyAdapter] ΓòÉΓòÉΓòÉ
  7852.  
  7853. This is a required section and should perform the adapter identification. 
  7854. Recommended identification steps depend on the bus architecture and hardware 
  7855. support for the identification. For example, on a PCI adapter, a positive check 
  7856. of the PCI device ID, revision ID, and vendor ID would be sufficient. On an ISA 
  7857. card, a  physical memory location can be read and compared against a string or 
  7858. a binary key, using MEMCMP and STRCMP PMI commands. Or, an identification port 
  7859. could be read in order to confirm the adapter type and revision level. The 
  7860. dependency on familiar port response should be minimal and resorted to only if 
  7861. more reliable checks do not exist. For vendors writing .PMI files for generic 
  7862. adapter support, however, this may be the only option, and it should be 
  7863. implemented with great care. 
  7864.  
  7865. Register r0 is used to hold the function result. The register should contain 
  7866. zero if the adapter matches its Hardware description (OEMString and DACString 
  7867. in its entirety) or nonzero otherwise. 
  7868.  
  7869. The purpose of the IdentifyAdapter function is to verify that an instance of 
  7870. the adapter is found that matches the OEMString and Version string from the 
  7871. .PMI file's Hardware section. Whether multiple instances exist, or if the 
  7872. instance found is not configured to the passed MemoryIOAddress and 
  7873. PortIOAddress, is of no consequence. 
  7874.  
  7875. An adapter is considered available if its IdentifyAdapter section returns 
  7876. success. Consequently, if the .PMI file contains the minimum VIDEOPMI content, 
  7877. its .PMI file will be loaded. 
  7878.  
  7879. Warning: It is essential that any I/O or MMIO registers modified in this 
  7880. section be saved and restored! This is of great importance, as IdentifyAdapter 
  7881. sections from a .PMI file will be executed on nonrelated hardware in an attempt 
  7882. to find the corresponding .PMI file. 
  7883.  
  7884.  
  7885. ΓòÉΓòÉΓòÉ 8.3.3.6. [DisableController] ΓòÉΓòÉΓòÉ
  7886.  
  7887. The DisableController function disables the SVGA controller's sync generation 
  7888. and enables VGA sync generation if a VGA chip is sharing the function. If 
  7889. possible, addressability to the controller should also be disabled. PMI 
  7890. keyvariable SlotID is used to identify the target controller. 
  7891.  
  7892. Here is a sample .PMI file for a Viper VLB card: 
  7893.  
  7894.  
  7895. [DisableController]
  7896.  // Enable VGA and reset memory address
  7897.  r0 = 0;                                 //r0 = 0 is success
  7898. rmwbi(0x3c4,0x3c5,0x12,0xEC,0x0);
  7899.  
  7900.  
  7901. ΓòÉΓòÉΓòÉ 8.3.3.7. [EnableController] ΓòÉΓòÉΓòÉ
  7902.  
  7903. This section provides the means to enable the generation of sync signals and, 
  7904. through software, to configure the controller that can be configured and to 
  7905. verify configuration for those that cannot be configured. If an SVGA adapter is 
  7906. sharing sync-generation functions with a co-residing VGA controller, the Enable 
  7907. call should disable VGA sync generation and enable the same function of the 
  7908. SVGA controller (SVGA is a term used, in a broad sense, to refer to the 
  7909. advanced controller that is the target of PMI's programming). 
  7910.  
  7911. For adapters that can be configured by software means and can coexist in 
  7912. multiple instances, the EnableController function is used to configure the 
  7913. instance found in the SlotID PMI keyvariable. The instance is configured to 
  7914. respond to the current values for the MemoryIOAddress and PortIOAddress. 
  7915. Failure to do so should be indicated by setting r0 to a nonzero value. 
  7916.  
  7917. The difference between the EnableController and UnLock sections is that UnLock 
  7918. does not configure the adapter, it merely provides access to any lockable 
  7919. addresses. 
  7920.  
  7921. Here is a sample VDATA.PMI for a Viper VLB card: 
  7922.  
  7923.  
  7924. [EnableController]
  7925. UnLock;                  // call Unlock section
  7926. r0 = 0;                  //indicate success
  7927. if (MemoryIOAddress != 0xA0000000) goto case1
  7928. rmwbi(0x3c4,0x3c5,0x12,0xFC,0x11);
  7929. goto exitenable;
  7930. case1:
  7931. if (MemoryIOAddress != 080000000) goto case2
  7932. rmwbi(0x3c4,0x3c5,0x12,0xFC,0x13);
  7933. goto exitenable;
  7934. case2:
  7935. if (MemoryIOAddress != 0x40000000) goto case3
  7936. rmwbi(0x3c4,0x3c5,0x12,0xFC,0x12);
  7937. goto exitenable;
  7938. case3:
  7939. r0 = 0xFFFF;             //r0 set to reflect failure
  7940. exitenable:
  7941.  
  7942.  
  7943. ΓòÉΓòÉΓòÉ 8.3.3.8. [UnLock] ΓòÉΓòÉΓòÉ
  7944.  
  7945. This section contains the list of commands required to make the hardware 
  7946. available for the execution of the SetMode section, as well as for saving and 
  7947. restoring of the controller and video buffer. The list of commands should be 
  7948. inclusive of saving and restoring the registers modified in the process, with 
  7949. the exclusion of the unlock key register. The function can be mode-sensitive, 
  7950. via conditional statements that evaluate key mode PMI keyvariables. However, 
  7951. the function could be a superset of all required unlock commands, for as long 
  7952. as such a sequence is not counterproductive in any mode sets. 
  7953.  
  7954. Here is a sample .PMI file for a 9GXE S3 card: 
  7955.  
  7956.  
  7957. inb(r0, 0x3d4);               //save index
  7958. outb(0x3d4, 0x38);
  7959. outb(0x3d5, 0x48);
  7960. outb(0x3d4, 0x39);
  7961. outb(0x3d5, 0xa0);
  7962. outb(0x3d4, r0);              //restore index
  7963.  
  7964.  
  7965. ΓòÉΓòÉΓòÉ 8.3.3.9. [Cleanup] ΓòÉΓòÉΓòÉ
  7966.  
  7967. Cleanup is used on session switches or when SetMode control is being 
  7968. relinquished to a driver that may not be VIDEOPMI-driven. This function is also 
  7969. used if and when a mode targeting the VGA chip is to be issued from a resource 
  7970. other than the .PMI file. The virtual video driver depends on this function 
  7971. during session switches when the engine is found busy and a reset engine 
  7972. mechanism is needed as part of the recovery. The function will also be used at 
  7973. shutdown, after the shutdown message is displayed. It ensures that extended 
  7974. functionality is disabled and reset to the extent that pure VGA compatibility 
  7975. and/or subsequent use of the accelerator is allowed. For SVGA and 
  7976. accelerator/coprocessors that coexist with a VGA chip, this function is used to 
  7977. disable the controller and enable the VGA chip. Recommended order of disabling 
  7978. is: 
  7979.  
  7980.   o  Reset DAC to VGA mode. 
  7981.  
  7982.   o  Reset engine. 
  7983.  
  7984.   o  Disable extended functionality. 
  7985.  
  7986.   o  Enable VGA. 
  7987.  
  7988.   o  Set clock to 25 MHz. 
  7989.  
  7990. Here is a sample .PMI file for a Viper VLB card: 
  7991.  
  7992.  
  7993. [Cleanup]
  7994.           //reset DAC
  7995. r0   = 0x00000000;
  7996. r1   = 0x00000000;
  7997. ProgramDAC;
  7998.           //reset clock to 60Hz, 32 KHz
  7999. r0  = 0x0045A8BC;
  8000. ProgramClock;
  8001.           //enable VGA
  8002. DisableController;
  8003.  
  8004.  
  8005. ΓòÉΓòÉΓòÉ 8.3.3.10. [IsEngineBusy] ΓòÉΓòÉΓòÉ
  8006.  
  8007. On accelerators, some operations may require that the engine has completed its 
  8008. current command. This section should query the status of the accelerator and 
  8009. set r0 to TRUE (nonzero) if the engine is still busy or to FALSE (0) if it is 
  8010. not. Currently, only the VPMI virtual driver needs this function. 
  8011.  
  8012.  
  8013. ΓòÉΓòÉΓòÉ 8.3.3.11. [SetBank] ΓòÉΓòÉΓòÉ
  8014.  
  8015. Specifies the commands necessary in order to switch banks on a frame buffer 
  8016. device. The function is called as part of the saving and restoring of the frame 
  8017. buffer for any mode with an aperture smaller than the PageLength. The bank 
  8018. number is assumed to be in r0. If the aperture is large enough to accommodate 
  8019. direct access to VRAM needed in any mode, the section may be omitted. 
  8020.  
  8021. Here is a sample .PMI file for a 9GXE S3 card: 
  8022.  
  8023.  
  8024. [SetBank]
  8025.                          //r0 contains the bank number
  8026. inb(r1, 0x3d4);          //save index
  8027. outb(0x3d4, 0x35);
  8028. r2   = r0   &  0x0000000f;
  8029. outb(0x3d4, 0x51);
  8030. inb(r2, 0x3d5);
  8031. r2   & = 0x00000030;
  8032. r0   >>= 0x00000002;
  8033. r2   & = 0x000000f3;
  8034. r0   |= r2  ;
  8035. outb(0x3d5, r0);         //set bank
  8036. outb(0x3d4, r1);         //restore index
  8037.  
  8038.  
  8039. ΓòÉΓòÉΓòÉ 8.3.3.12. [GetBank] ΓòÉΓòÉΓòÉ
  8040.  
  8041. Specifies the name of the function to be called in order to get the current 
  8042. write bank. This assumes a device with an aperture smaller than the PageLength. 
  8043. The bank number is assumed to be returned in r0. It should be sensitive to the 
  8044. mode. 
  8045.  
  8046. Here is a sample .PMI file for a 9GXE S3 card: 
  8047.  
  8048.  
  8049. [GetBank]
  8050. inb(r1, 0x3d4);          //save index
  8051. outb(0x3d4, 0x35);
  8052. inb(r0, 0x3d5);
  8053. r0   & = 0x0000000f;
  8054. outb(0x3d4, 0x51);
  8055. inb(r2, 0x3d5);
  8056. r2   & = 0x00000004;
  8057. r2   <<= 0x00000002;
  8058. r0   |= r2  ;            //r0 contains the value
  8059. outb(0x3d4, r1);         //restore index
  8060.  
  8061.  
  8062. ΓòÉΓòÉΓòÉ 8.3.3.13. [TuneDisplay] ΓòÉΓòÉΓòÉ
  8063.  
  8064. This section lists the execution steps required to set the start and end of the 
  8065. vertical active display in terms of the line count along the vertical sweep. It 
  8066. also lists the start and end of the horizontal active display in terms of the 
  8067. dot count along the horizontal sweep. The input values are the ScreenLeftEdge, 
  8068. ScreenRightEdge, ScreenTopEdge, and ScreenBottomEdge PMI keyvariables. The 
  8069. function should implement verification of the values, to keep them in the valid 
  8070. range for the current mode. 
  8071.  
  8072. This section is not required but, if supplied, it provides a monitor centering 
  8073. and sizing capability. If provided, TuneDisplay should be invoked by the 
  8074. respective SetMode section in order to ensure that user-selected values are 
  8075. being reflected in the mode set. This applies to all MonitorModeInfo sections 
  8076. that list the four PMI keyvariables. If the current mode does not contain the 
  8077. PMI keyvariables, TuneDisplay will be a no-op, because default mode values do 
  8078. not correspond to how the real hardware is programmed and, therefore, the 
  8079. tuning cannot be performed. 
  8080.  
  8081. The PMI keyvariable values represent the pixel count (dot count*bytesperpixel) 
  8082. and line count. They are incremented according to the end-user's configuration 
  8083. requests, which are processed one unit at a time. For example, if the user is 
  8084. trying to center a display in 640x480x64K, the start values of the current 
  8085. active display are obtained from the mode table for the current mode. For every 
  8086. mouse or pointer drag-increment on the centering area to the left, the current 
  8087. ScreenLeftEdge and ScreenRightEdge fields are incremented and a call into 
  8088. TuneDisplay is made with the current values. TuneDisplay translates the values 
  8089. into the dot count or any other internal representation and validates the 
  8090. range. 
  8091.  
  8092. See "Supported Modes" and "MonitorModeInfo" in Overview for more information. 
  8093.  
  8094. Here is a sample .PMI file for a Viper VLB card: 
  8095.  
  8096.  
  8097. [TuneDisplay]
  8098. r0 = 1;             //set return code to failure, if validation fails
  8099. if (BitsPerPixel < 8) goto exittune
  8100.                     // all horizontal values are set in terms of DDOTCLK
  8101.                     //multiply by the number of bytes.
  8102. r9 = BitsPerPixel >> 4;
  8103. r5 = ScreenLeftEdge << r9;         //r5 = hrzbr
  8104. r6 = ScreenRightEdge << r9;        //r6 = hrzbf
  8105. r7 = ScreenTopEdge;                //r7 = vrtbr
  8106. r8 = ScreenBottomEdge;             //r8 = vrtbf
  8107. readdw(r1, hrzsr);                 //validate parameters
  8108. if (r5 <= r1) goto exittune        //validate left edge > hrzsr
  8109. readdw(r2, vrtsr);
  8110. if (r7 <= r2) goto exittune        //validate top edge > vrtsr
  8111. readdw(r3, hrzt);
  8112. if (r6 >= r3) goto exittune        //validate right edge < hrzt
  8113. readdw(r4, vrtt);
  8114. if (r8 >= r4) goto exittune        //validate bottom edge < vrtt
  8115. writedw(hrzbr, r5);
  8116. writedw(hrzbf, r6);
  8117. writedw(vrtbr, r7);
  8118. writedw(vrtbf, r8);
  8119. r0 = 0;                            //indicate success exittune:
  8120.  
  8121.  
  8122. ΓòÉΓòÉΓòÉ 8.3.3.14. [SetMonitorTimings] ΓòÉΓòÉΓòÉ
  8123.  
  8124. Vendors interested in providing the user interface that allows for manipulation 
  8125. of the timing generation for the current mode, without performing the entire 
  8126. mode set, should include this section. The section is responsible for verifying 
  8127. that input parameters (PMI keyvariables set for the current mode and passed 
  8128. through the VIDEO_ADAPTER structure) are in a valid range. If provided, the 
  8129. SetMode section should make use of the same function to ensure the integrity of 
  8130. the timing programming between the mode set and independent refresh set 
  8131. exercises. 
  8132.  
  8133. Here is a sample .PMI file for a Viper VLB card: 
  8134.  
  8135.  
  8136. [SetMonitorTimings]
  8137. r0   = 0x1;                     //indicate failure
  8138. if (BitsPerPixel < 8)   goto exitclock
  8139. r0   = 0x00679c35;            //set mem speed
  8140. ProgramClock;
  8141.                               //validate refresh values
  8142. if(HorizontalRefresh == 32) goto hclock32
  8143. if(HorizontalRefresh == 35) goto hclock35
  8144. if(HorizontalRefresh == 38) goto hclock38
  8145. if(HorizontalRefresh == 48) goto hclock48
  8146. if(HorizontalRefresh == 64) goto hclock64
  8147. if(HorizontalRefresh == 57) goto hclock57
  8148. if(HorizontalRefresh == 58) goto hclock58
  8149. if(HorizontalRefresh == 61) goto hclock61
  8150. goto exitclock;
  8151. hclock32:
  8152. if (VerticalRefresh != 60) goto exitclock
  8153. r30 = 0x0045A8BC;             // r30 contains dotclock value
  8154. r31 = 0x000000C7;             // r31 contains hrzt
  8155. r32 = 0x00000017;             // r32 contains hrzsr
  8156. r33 = 0x0000020D;             // r33 contains vrtt
  8157. r34 = 0x00000001;             // r34 contains vrtsr
  8158. goto ProgramSerial;
  8159. hclock35:
  8160. if (VerticalRefresh != 56) goto exitclock
  8161. r30  = 0x004F54A1;            // r30 contains dotclock value
  8162. r31 = 0x000000FD;             // r31 contains hrzt
  8163. r32 = 0x0000001D;             // r32 contains hrzsr
  8164. r33 = 0x00000278;             // r33 contains vrtt
  8165. r34 = 0x00000004;             // r34 contains vrtsr
  8166. goto ProgramSerial;
  8167. hclock38:
  8168. if (VerticalRefresh != 72) goto exitclock
  8169. r30  = 0x004BD8B5;            // r30 contains dotclock value
  8170. r31 = 0x000000CF;             // r31 contains hrzt
  8171. r32 = 0x00000005;             // r32 contains hrzsr
  8172. r33 = 0x00000208;             // r33 contains vrtt
  8173. r34 = 0x00000003;             // r34 contains vrtsr
  8174. goto ProgramSerial;
  8175. hclock48:
  8176. if (VerticalRefresh != 60) goto vclock72
  8177. r30  = 0x004D4423;            // r30 contains dotclock value
  8178. r31 = 0x0000014F;             // r31 contains hrzt
  8179. r32 = 0x0000001D;             // r32 contains hrzsr
  8180. r33 = 0x00000326;             // r33 contains vrtt
  8181. r34 = 0x00000006;             // r34 contains vrtsr
  8182. goto ProgramSerial;
  8183. vclock72:
  8184. if (VerticalRefresh != 72) goto exitclock
  8185. r30  = 0x0045AC3D;            // r30 contains dotclock value
  8186. r31 = 0x00000103;             // r31 contains hrzt
  8187. r32 = 0x0000001B;             // r32 contains hrzsr
  8188. r33 = 0x0000029A;             // r33 contains vrtt
  8189. r34 = 0x00000006;             // r34 contains vrtsr
  8190. goto ProgramSerial;
  8191. hclock64:
  8192. if (VerticalRefresh != 80) goto exitclock
  8193. r30  = 0x00433018;            // r30 contains dotclock value
  8194. r31 = 0x00000151;             // r31 contains hrzt
  8195. r32 = 0x00000021;             // r32 contains hrzsr
  8196. r33 = 0x00000324;             // r33 contains vrtt
  8197. r34 = 0x00000006;             // r34 contains vrtsr
  8198. goto ProgramSerial;
  8199. hclock57:
  8200. if (VerticalRefresh != 70) goto exitclock
  8201. r30 = 0x004FAC28;             // r30 contains dotclock value
  8202. r31 = 0x0000014B;             // r31 contains hrzt
  8203. r32 = 0x00000021;             // r32 contains hrzsr
  8204. r33 = 0x00000326;             // r33 contains vrtt
  8205. r34 = 0x00000006;             // r34 contains vrtsr
  8206. goto ProgramSerial;
  8207. hclock58:
  8208. if (VerticalRefresh != 72) goto exitclock
  8209. r30 = 0x004F7822;             // r30 contains dotclock value
  8210. r31 = 0x0000014B;             // r31 contains hrzt
  8211. r32 = 0x00000021;             // r32 contains hrzsr
  8212. r33 = 0x00000326;             // r33 contains vrtt
  8213. r34 = 0x00000006;             // r34 contains vrtsr
  8214. goto ProgramSerial;
  8215. hclock61:
  8216. if (VerticalRefresh != 76) goto exitclock
  8217. r30 = 0x004F8021;             // r30 contains dotclock value
  8218. r31 = 0x0000014A;             // r31 contains hrzt
  8219. r32 = 0x00000021;             // r32 contains hrzsr
  8220. r33 = 0x00000327;             // r33 contains vrtt
  8221. r34 = 0x00000006;             // r34 contains vrtsr
  8222. goto ProgramSerial;
  8223. ProgramSerial:                //input parameter r0 already set
  8224. ProgramClock;                 //program dotclock serial clock
  8225.                // horizontal values are set in terms of DDOTCLK
  8226. if (BitsPerPixel == 8) goto allset
  8227. r31 <= 1; r31++; r2 <= 1; r2++;
  8228. if (BitsPerPixel == 16) goto allset
  8229. if (BitsPerPixel != 24) goto exitclock
  8230. r31 <= 1; r31++; r2 <= 1; r2++;
  8231. allset:                 //program hrzt and vrtt
  8232. writedw(hrzt, r31);
  8233. writedw(hrzsr,r32);
  8234. writedw(vrtt, r33);
  8235. writedw(vrtsr,r34);
  8236.                //set polarity
  8237. r1 = HPolarityPositive << 6;
  8238. r1 |= VPolarityPositive << 7;
  8239. outb(0x3c4,0x12);
  8240. inb(r2, 0x3c5);
  8241. r2 &= 0x3f;
  8242. r2 |= r1;
  8243. outb(0x3c5, r2);
  8244.                // do clock doubling if needed
  8245. if (VerticalRefresh < 68) goto SetDAC
  8246. r0   = 0x00000008;
  8247. r1   = 0x00000040;
  8248. if (BitsPerPixel != 16) goto DACOK
  8249. r1   = 0x00000030;            // 64K colors
  8250. DACOK:
  8251. ProgramDAC;
  8252. SetDAC:
  8253. TuneDisplay;             //size and position the active display
  8254. r0  = 0;                 //indicate success
  8255. exitclock:               //all done
  8256.  
  8257.  
  8258. ΓòÉΓòÉΓòÉ 8.3.3.15. [Comment] ΓòÉΓòÉΓòÉ
  8259.  
  8260. This section contains the description for each mode. It is placed right before 
  8261. the [ModeInfo] section. When the .PMI file is processed, the contents of this 
  8262. section are ignored. 
  8263.  
  8264.  
  8265. ΓòÉΓòÉΓòÉ 8.3.3.16. [ModeInfo] ΓòÉΓòÉΓòÉ
  8266.  
  8267. ModeInfo, together with the MonitorModeInfo section, defines mode capabilities 
  8268. of the PMI adapter. The complete list of all ModeInfo and MonitorModeInfo 
  8269. headers is available through a system-mode query function. The ModeInfo header 
  8270. specifies attributes that are not dependent on the type of display attached. 
  8271. Some of the fields are optional and, if not provided, are internally set to 0. 
  8272. Most fields are static; that is, they will not be modified at run-time and 
  8273. changed from their .PMI file values. However, Aperture address is a dynamic PMI 
  8274. keyvariable and is set by the caller to reflect the current value. All of the 
  8275. mode PMI keyvariables are field members of the VIDEOMODEINFO structure, a 
  8276. substructure of the VIDEO_ADAPTER. 
  8277.  
  8278.   o  ModeAttributes    = <constant> 
  8279.  
  8280.        -  Static PMI keyvariable. Required. 
  8281.        -  0x18 for color graphic modes, 0x08 for color text modes. 
  8282.        -  See VESA SVPMI Standard for full description. 
  8283.  
  8284.   o  BytesPerScanLine      = <constant> 
  8285.  
  8286.        -  Static PMI keyvariable. Required. 
  8287.        -  Length of logical scan line in bytes. 
  8288.        -  See VESA SVPMI Standard for full description. 
  8289.  
  8290.   o  XResolution      = <constant> 
  8291.  
  8292.        -  Static PMI keyvariable. Required. 
  8293.        -  Horizontal resolution in pixels or characters in graphics and text 
  8294.           modes, respectively. 
  8295.  
  8296.   o  YResolution      = <constant> 
  8297.  
  8298.        -  Static PMI keyvariable. Required. 
  8299.        -  Vertical resolution in pixels or characters in graphics and text 
  8300.           modes, respectively. 
  8301.  
  8302.   o  XCharSize    = <constant> 
  8303.  
  8304.        -  Static PMI keyvariable. Required in text modes. 
  8305.        -  Character cell width in pixels. 
  8306.  
  8307.   o  YCharSize    = <constant> 
  8308.  
  8309.        -  Static PMI keyvariable. Required in text modes. 
  8310.        -  Character cell height in pixels. 
  8311.  
  8312.   o  TextRows     = <constant> 
  8313.  
  8314.        -  Static PMI keyvariable. Required in both graphics and text modes. 
  8315.        -  Number of text rows. 
  8316.  
  8317.   o  BitsPerPixel     = <constant> 
  8318.  
  8319.        -  Static PMI keyvariable. Required. 
  8320.        -  Color depth. 
  8321.  
  8322.   o  NumberOfPlanes    = <constant> 
  8323.  
  8324.        -  Static PMI keyvariable. Required. 
  8325.        -  [4|1] planar vs. linear memory organization. 
  8326.  
  8327.   o  PageLength    = <constant> 
  8328.  
  8329.        -  Static PMI keyvariable. Required. 
  8330.        -  Size of memory required to save a page of the on-screen VRAM. 
  8331.  
  8332.   o  SaveSize     = <constant> 
  8333.  
  8334.        -  Static PMI keyvariable. Required. 
  8335.        -  Size of memory required to save all of the on-screen VRAM. It should 
  8336.           be set to include at least the logical scanline width 
  8337.           (BytesPerScanLine*Yresolution). 
  8338.  
  8339.   o  Int10ModeSet     = <constant> 
  8340.  
  8341.        -  Static PMI keyvariable. Required if the same mode can be set though 
  8342.           BIOS. 
  8343.  
  8344.   o  ColorFormat      = <string> 
  8345.  
  8346.        -  Static PMI keyvariable. Optional. 
  8347.        -  User defined. 
  8348.        -  Zero-ended string. Required for hi-color and true-color modes. 
  8349.  
  8350.           Suggested definitions: 
  8351.  
  8352.           [ RGB | BGR | GBR .| YUI ] 
  8353.  
  8354.  
  8355.        -  Not used internally; available to drivers through a mode query. 
  8356.        -  If not specified, empty string is returned. 
  8357.  
  8358.   o  ColorWeight      = <constant> ':' <constant> ':' <constant> 
  8359.  
  8360.        -  Static PMI keyvariable. Optional. 
  8361.        -  User defined. 
  8362.        -  Required for hi-color and true-color modes. 
  8363.        -  Not used internally; available to drivers through a mode query. 
  8364.        -  If not specified, zeros are returned. 
  8365.  
  8366.   o  BufferAddress     = <constant> | 
  8367.  
  8368.        -  Dynamic PMI keyvariable. Required if direct VRAM access is possible. 
  8369.  
  8370.        -  Represents the physical address of the video buffer. If direct buffer 
  8371.           access is possible, VIDEOPMI interpreter will copy VRAM in chunks of 
  8372.           ApertureSize or SaveSize, whichever is smaller. If 0, no direct 
  8373.           buffer access is possible. 
  8374.  
  8375.         This PMI keyvariable is dynamic on all systems in which remapping of 
  8376.         the aperture is possible. In such cases, it should be assigned the 
  8377.         LinearWindowAddress value from the Hardware description. The SetMode 
  8378.         section should ensure that it programs hardware to reflect the 
  8379.         hardware's dynamic value. 
  8380.  
  8381.   o  ApertureSize     = <constant> 
  8382.  
  8383.        -  Static PMI keyvariable. Required if direct VRAM access is possible. 
  8384.        -  Size of the aperture. If ApertureSize < SaveSize and BufferAddress is 
  8385.           not 0, SetBank and GetBank sections are required. 
  8386.        -  Aperture size will not be modified, even if hardware does allow for 
  8387.           different sizes. 
  8388.  
  8389. Here is a sample .PMI file for a 9GXE S3 card: 
  8390.  
  8391.  
  8392. [comment]
  8393.      Graphics Mode: 1280 x 1024 x 256 colors.
  8394.  
  8395. [ModeInfo]
  8396.      ModeAttributes   = 0x18
  8397.      BytesPerScanLine = 1280
  8398.      XResolution      = 1280
  8399.      YResolution      = 1024
  8400.      TextRows         = 64
  8401.      BitsPerPixel     = 8
  8402.      NumberOfPlanes   = 1
  8403.      PageLength       = 1310720
  8404.      SaveSize         = 1310720
  8405.      Int10ModeSet     = 0x107
  8406.      BufferAddress    = 0x000a0000
  8407.      ApertureSize     = 0x00010000
  8408.  
  8409.  
  8410. ΓòÉΓòÉΓòÉ 8.3.3.17. [MonitorModeInfo] ΓòÉΓòÉΓòÉ
  8411.  
  8412. This section provides information on the capabilities of the adapter in terms 
  8413. of the synchronization signal range. This section is optional if an adapter 
  8414. does not require software intervention in order to detect the monitor type and 
  8415. program the optimal HSYNC, VSYNC, HBLNK, and VBLNK signals. Because the 
  8416. industry lacks a standard for monitor detection, most adapters require user 
  8417. intervention in order to detect the monitor and additional software to handle 
  8418. selection of the horizontal and vertical frequencies for the configured 
  8419. monitor. In the OS/2 environment, the configuration and recording of the user 
  8420. selection is done by the DSPCONF utility. The information is then available to 
  8421. all video drivers. 
  8422.  
  8423. Depending on the type of clock generator, the specified frequencies could be 
  8424. definable only in distinct (discrete) sets of values, or they could be 
  8425. generated within the maximum range of the clock chip. Threfore, one or more 
  8426. MonitorModeInfo sections are used to provide a vehicle for user configuration 
  8427. of the refresh setup and for the subsequent mode setting. 
  8428.  
  8429. If clock generation is contiguous within a range, a single MonitorModeInfo with 
  8430. the end of the range should be listed per each mode. Otherwise, a list of 
  8431. MonitorModeInfo sections should list all of the discrete refresh pairs. In this 
  8432. case, an exact match between the monitor refresh specification and the 
  8433. adapter's refresh capability has to happen (this includes the polarity 
  8434. information). If the vendor providing the .PMI file does not wish to 
  8435. discriminate based on the polarity, the polarity can be omitted or set to a 
  8436. predefined value of 2. 
  8437.  
  8438. Note that all of the PMI keyvariables are marked as dynamic. This means that 
  8439. their run-time values could differ from their values specified in the flat 
  8440. file, depending on the user configuration. This also means that sections 
  8441. programming the hardware should verify that the values passed are in the valid 
  8442. range. 
  8443.  
  8444.   o  VerticalRefresh    = <constant> 
  8445.  
  8446.        -  Dynamic PMI keyvariable. Required. 
  8447.        -  Vertical refresh in Hz, rounded to the nearest integer. 
  8448.        -  Should be set to 0 for flat panel and other non-CRT display modes. 
  8449.           Otherwise, set to either a discrete value or end-of-range value. 
  8450.  
  8451.   o  HorizontalRefresh     = <constant> 
  8452.  
  8453.        -  Dynamic PMI keyvariable. Required. 
  8454.        -  Horizontal refresh in KHz, rounded to the nearest integer. 
  8455.        -  Should be set to 0 for flat panel and other non-CRT display modes. 
  8456.           Otherwise, set to either a discrete value or end-of-range value. 
  8457.  
  8458.   o  VPolarityPositive     = <'0' | '1' | '2'> 
  8459.  
  8460.        -  Vertical polarity. 
  8461.        -  Dynamic PMI keyvariable. Not required. 
  8462.        -  0 indicates negative; 1 indicates positive; 2 indicates that either 
  8463.           one can be set and should not be used when matching the monitor 
  8464.           specification. A value of 2 is logically the same as omitting the 
  8465.           keyvariable. 
  8466.  
  8467.   o  HPolarityPositive     = <'0' | '1' | '2'> 
  8468.  
  8469.        -  Horizontal polarity. 
  8470.        -  Dynamic PMI keyvariable. Not required. 
  8471.        -  0 indicates negative; 1 indicates positive; 2 indicates that either 
  8472.           one can be set and should not be used when matching the monitor 
  8473.           specification. A value of 2 is logically the same as omitting the 
  8474.           keyvariable. 
  8475.  
  8476.   o  ScreenLeftEdge    = <constant> 
  8477.  
  8478.        -  Dynamic PMI keyvariable. Required if TuneDisplay section exists. 
  8479.  
  8480.        -  Defines the start of the active horizontal display in terms of the 
  8481.           pixel count. Internally, it represents the offset in terms of the dot 
  8482.           count along the horizontal sweep. 
  8483.  
  8484.        -  If the TuneDisplay section is provided, the user has the option of 
  8485.           fine-tuning this value. Consequently, the SetMode call will set the 
  8486.           hardware according to the dynamic value of this PMI keyvariable (see 
  8487.           [TuneDisplay] and [SetMode] in this chapter). 
  8488.  
  8489.   o  ScreenRightEdge    = <constant> 
  8490.  
  8491.        -  Dynamic PMI keyvariable. Required if TuneDisplay section exists. 
  8492.  
  8493.        -  Defines the end of the horizontal active display in terms of the 
  8494.           pixel count. Internally, it represents the offset in terms of the dot 
  8495.           count along the horizontal sweep for the current mode. 
  8496.  
  8497.        -  If the TuneDisplay section is provided, the user has the option of 
  8498.           fine-tuning this value. Consequently, the mode will set the hardware 
  8499.           according to the dynamic value of this PMI keyvariable (see 
  8500.           [TuneDisplay] and [SetMode] in this chapter). 
  8501.  
  8502.   o  ScreenBottomEdge      = <constant> 
  8503.  
  8504.        -  Dynamic PMI keyvariable. Required if TuneDisplay section exists. 
  8505.  
  8506.        -  Defines the end of the active vertical display in terms of the line 
  8507.           count along the vertical sweep in the current mode. 
  8508.  
  8509.        -  If the TuneDisplay section is provided, the user has the option of 
  8510.           fine-tuning this value. Consequently, the mode will set the hardware 
  8511.           according to the dynamic value of this PMI keyvariable (see 
  8512.           [TuneDisplay] and [SetMode] in this chapter). 
  8513.  
  8514.   o  ScreenTopEdge    = <constant> 
  8515.  
  8516.        -  Dynamic PMI keyvariable. Required if TuneDisplay section exists. 
  8517.  
  8518.        -  Defines the start of the vertical sync in the current mode. 
  8519.  
  8520.        -  If the TuneDisplay section is provided, the user has the option of 
  8521.           fine-tuning this value. Consequently, the mode will set the hardware 
  8522.           according to the dynamic value of this PMI keyvariable (see 
  8523.           [TuneDisplay] and [SetMode] in this chapter). 
  8524.  
  8525. Here is a sample .PMI file for a Viper VLB card: 
  8526.  
  8527.  
  8528. [MonitorModeInfo]             //1024 x 768 resolution
  8529.  
  8530. VerticalRefresh         = 80
  8531. HorizontalRefresh       = 64
  8532. VPolarityPositive       = 1
  8533. HPolarityPositive       = 1
  8534. ScreenLeftEdge          = 0x00000047
  8535. ScreenRightEdge         = 0x00000147
  8536. ScreenTopEdge           = 0x00000023
  8537. ScreenBottomEdge        = 0x00000323
  8538.  
  8539.  
  8540. ΓòÉΓòÉΓòÉ 8.3.3.18. [SetMode] ΓòÉΓòÉΓòÉ
  8541.  
  8542. This section lists the required execution steps for a successful mode set. 
  8543. There could be one SetMode section per MonitorModeInfo, or one per ModeInfo, or 
  8544. one that services multiple modes. The Interpreter tags all ModeInfo and 
  8545. MonitorModeInfo sections found between two SetMode sections and, later on, 
  8546. associates the last SetMode with all of them. Thus, SetMode services for all of 
  8547. the modes could be provided by a number of different functions (if desired, a 
  8548. single function that serves as a router can be used). The SetMode section is 
  8549. also executed when Saving and Restoring the mode (see [SaveRestore] in this 
  8550. chapter). 
  8551.  
  8552. Any number of PMI functions can be called from within the mode section. The 
  8553. SetMode section has to ensure that the adapter is programmed to reflect the 
  8554. run-time settings of the ModeInfo/MonitorModeInfo structure. These settings are 
  8555. passed in the VIDEO_ADAPTER.VIDEOMODEINFO structure at the procedural level. 
  8556. The settings are also available as PMI keyvariables to the PMI language command 
  8557. sequences. On dynamic Legacy and PnP hardware, or when a coprocessor co-resides 
  8558. with a VGA chip, the SetMode has to ensure that the setup is configured 
  8559. appropriately for the mode to be set. This should be facilitated by an embedded 
  8560. EnableController call, which is sensitive to the current Hardware PMI 
  8561. keyvariable values. 
  8562.  
  8563. Vendors who provide the TuneDisplay section for sizing of the active display 
  8564. and the SetMonitorTimings section for manipulation of the timing PMI 
  8565. keyvariables should ensure that the SetMode section has the ability to set the 
  8566. run-time values for the timing PMI keyvariables. The easiest way to ensure this 
  8567. is by making the SetMode section use the SetMonitorTimings and TuneDisplay 
  8568. sections. See "Supported Modes" in Overview and [EnableController] in this 
  8569. chapter for more information. 
  8570.  
  8571. Here is a sample .PMI file for a Viper VLB card: 
  8572.  
  8573.  
  8574. [SetMode]
  8575. SetP9000AccelMode;
  8576.  
  8577. /*
  8578. ** Set accelerated mode on P9000
  8579. */
  8580. [SetP9000AccelMode]
  8581. EnableController;             //configure controller
  8582. r0   = 0x00000000;            //set DAC
  8583. r1   = 0x00000040;            //256 color 6:6:6
  8584. if (BitsPerPixel != 16) goto DAC
  8585. r1   = 0x00000030;            // 64K colors
  8586. DAC:
  8587. ProgramDAC;
  8588. InitializeP9000;              //initialize P9000 registers
  8589.                               //set sysconfig and clipping
  8590. if (Xresolution != 640) goto not640
  8591. r1  = 0x028001e0;             //640x480x8
  8592. r0  = 0x00563000;
  8593. if (BitsPerPixel == 8) goto domodeset
  8594. r0  = 0x00683000;             //640x480x16 bits
  8595. goto domodeset
  8596. not640:
  8597. if (Yresolution != 800) goto not800     //800x600x8
  8598. r0  =  0x00587000;
  8599. r1  =  0x03200258;
  8600. goto domodeset
  8601. not800:                       //must be 1024x760x8
  8602. r0  =  0x00603000;
  8603. r1  =  0x04000300;
  8604. domodeset:
  8605. writedw(sysconfig,r0);
  8606. writedw(w_min,0x00000000);
  8607. writedw(w_max,r1);            //program clipping
  8608. SetMonitorTimings;            //program clock and timings. Calls TuneDisplay.
  8609. writedw(srtctl,0x000001e5);   //enable
  8610.  
  8611.  
  8612. ΓòÉΓòÉΓòÉ 8.4. Hardware Access Under OS/2 Warp, PowerPC Edition ΓòÉΓòÉΓòÉ
  8613.  
  8614. To improve the portability of the operating system, the microkernel provides 
  8615. Programmed I/O (PIO) abstraction for hardware access. All the video resources, 
  8616. which include video memory, I/O ports, and memory mapped I/O registers, have to 
  8617. be mapped to the address space of the current process before access can be 
  8618. performed. 
  8619.  
  8620. Unlike OS/2, the same physical address may be mapped to different addresses for 
  8621. different processes. Therefore, the virtual addresses should be allocated per 
  8622. process instance data, because they will not be the same for different 
  8623. processes. Memory read/write on virtual addresses is used to access both I/O 
  8624. ports and physical memory. For each process, the first PMI function call should 
  8625. be PMIREQUEST_WPOSVIDEOACCESS, in order to map the video resources to the 
  8626. address space of the calling process. Virtual addresses can be queried through 
  8627. PMIREQUEST_GETPIOINFO. 
  8628.  
  8629. Currently, the microkernel console driver is handling the granting of access 
  8630. and mapping of video hardware resources. The video resources are defined in a 
  8631. text file called rdf.stz in the \mk directory. Following is a sample definition 
  8632. for Weitek P9100. In the future, VIDEOPMI will take over the granting of video 
  8633. hardware access. The video resource will be defined in the TrapReg section of 
  8634. the .PMI file. 
  8635.  
  8636.  
  8637. 9100100E:
  8638.         dev_class       = WEITEK_9100
  8639.         adap_name       = "Weitek Power 9100 Glacier Video Adapter"
  8640.         setting         = "mem:video_mem1:c1800000-c1bfffff"
  8641.         setting         = "mem:mmio_mem:c1000000-c1067fff"
  8642.         setting         = "io:io_3c0:3c0-3ca"
  8643.         setting         = "io:io_3cc:3cc"
  8644.         setting         = "io:io_3b4:3b4-3b5"
  8645.         setting         = "io:io_3ba:3ba"
  8646.         setting         = "io:io_3d4:3d4-3d5"
  8647.         setting         = "io:io_3da:3da"
  8648.         setting         = "io:io_3ce:3ce-3cf"
  8649.         setting         = "mem:vga_mem:a0000-bffff"
  8650.  
  8651.  
  8652. ΓòÉΓòÉΓòÉ 8.4.1. .PMI file Loading ΓòÉΓòÉΓòÉ
  8653.  
  8654. Three graphics adapters, S3 928, S3 864, and Weitek P9100, are currently 
  8655. supported on the desktop PowerPC. These adapters all have different .PMI files 
  8656. under different names. When VIDEOPMI is first loaded, it calls the microkernel 
  8657. console driver to query the dev_class string for the adapter in rdf.stz as 
  8658. described in the previous section on hardware access. Based on the string, the 
  8659. corresponding .PMI file is loaded. The clients of VIDEOPMI do not have to load 
  8660. the .PMI files explicitly. The .PMI file names for these three adapters are 
  8661. defined in VIDEOPMI. For other adapters, the .PMI file name will be the string 
  8662. of dev_class with .PMI extension. For example, if the dev_class of a Cirrus 
  8663. Logic adapter is GD5434, the .PMI file name will be GD5434.PMI. 
  8664.  
  8665.  
  8666. ΓòÉΓòÉΓòÉ 8.4.2. New Graphics Adapter Support ΓòÉΓòÉΓòÉ
  8667.  
  8668. To support a new graphics adapter based on the current architecture, the 
  8669. following changes have to be made to enable PMI services: 
  8670.  
  8671.   1. Add the console display entry in conscfg.stz in the \mk directory. 
  8672.  
  8673.      An example conscfg.stz is shown here. A new entry has to be added in 
  8674.      OPTIONAL_CONS_DISPLAYS; its definition follows. 
  8675.  
  8676.  
  8677.                    CONSOLE0:
  8678.                            CONS_DEVICES = XGA, PS2_PDP, PS2_KBD
  8679.                            OPTIONAL_CONS_DISPLAYS = S3, WEITEK_9100, ATI, IBM_8514, SVGA, VGA
  8680.  
  8681.                    VGA:
  8682.                            CONS_RESOURCE_TYPE = DISPLAY
  8683.                            CONS_IO_MODE = MAPPED
  8684.                            CONS_PRIMARY = display
  8685.  
  8686.                    PS2_PDP:
  8687.                            CONS_RESOURCE_TYPE = POINTER
  8688.                            CONS_IO_MODE = STREAM
  8689.                            CONS_PRIMARY = TRUE
  8690.  
  8691.                    PS2_KBD:
  8692.                            CONS_RESOURCE_TYPE = CHARACTER
  8693.                            CONS_IO_MODE = STREAM
  8694.                            CONS_PRIMARY = TRUE
  8695.  
  8696.                    XGA:
  8697.                            CONS_RESOURCE_TYPE = DISPLAY
  8698.                            CONS_IO_MODE = MAPPED
  8699.                            CONS_PRIMARY = TRUE
  8700.  
  8701.                    ATI:
  8702.                            CONS_RESOURCE_TYPE = DISPLAY
  8703.                            CONS_IO_MODE = MAPPED
  8704.                            CONS_PRIMARY = FALSE
  8705.  
  8706.                    IBM_8514:
  8707.                            CONS_RESOURCE_TYPE = DISPLAY
  8708.                            CONS_IO_MODE = MAPPED
  8709.                            CONS_PRIMARY = FALSE
  8710.  
  8711.                    S3:
  8712.                            CONS_RESOURCE_TYPE = DISPLAY
  8713.                            CONS_IO_MODE = MAPPED
  8714.                            CONS_PRIMARY = TRUE
  8715.  
  8716.                    WEITEK_9100:
  8717.                            CONS_RESOURCE_TYPE = DISPLAY
  8718.                            CONS_IO_MODE = MAPPED
  8719.                            CONS_PRIMARY = TRUE
  8720.  
  8721.                    SVGA:
  8722.                            CONS_RESOURCE_TYPE = DISPLAY
  8723.                            CONS_IO_MODE = MAPPED
  8724.                            CONS_PRIMARY = TRUE
  8725.  
  8726.   2. Add hardware resource definitions in rdf.stz. 
  8727.  
  8728.   3. Add the new .PMI file in the \os2 directory. 
  8729.  
  8730.  
  8731. ΓòÉΓòÉΓòÉ 9. Video Installation and Configuration ΓòÉΓòÉΓòÉ
  8732.  
  8733. The video configuration subsystem consists of the operating-system-service 
  8734. neutral Video Configuration Manager (VCMAN), an OS/2 operating-system-service 
  8735. module VIDEOCFG.DLL, and a persistent namespace in the Registry. 
  8736.  
  8737.  
  8738. ΓòÉΓòÉΓòÉ 9.1. Overview ΓòÉΓòÉΓòÉ
  8739.  
  8740. The purpose of VCMAN and its associated components is as follows: 
  8741.  
  8742.   o  Provide customized video installation and configuration for all 
  8743.      installable video devices at the time of feature installation. 
  8744.  
  8745.   o  Handle hardware configuration failures, such as booting into an altered 
  8746.      hardware configuration, by providing default installation and 
  8747.      configuration. 
  8748.  
  8749.   o  Handle hot plugging, once it becomes available, by doing customized 
  8750.      install the first time the device is encountered and autoinstall and 
  8751.      configuration each time thereafter. 
  8752.  
  8753.   o  Provide mode preview, which allows users to preview how the desktop will 
  8754.      look once their selection become active. 
  8755.  
  8756.   o  Provide advanced desktop features, such as desktop orientation, panning, 
  8757.      and palette management. 
  8758.  
  8759. VCMAN detects video devices at system boot time and handles video hardware 
  8760. configuration failures. VCMAN owns and manages the video configuration 
  8761. namespace in the Registry. The namespace contains the current video 
  8762. configuration and any previous video configurations that have not been 
  8763. uninstalled. Other video subsystems can access this video namespace directly to 
  8764. update and retrieve system video configuration. 
  8765.  
  8766. VIDEOCFG.DLL provides the video configuration GUI interfaces used by the System 
  8767. Settings notebook and the Video Feature Install objects in OS/2 Warp, Version 
  8768. 3, PowerPC Edition. (A Video Feature Install Object is an object specific to 
  8769. video that represents a product that can be installed to a user's system.) 
  8770. VIDEOCFG.DLL provides a set of services to query and modify the current video 
  8771. configuration and exports two PM dialog windows: 
  8772.  
  8773.   o  The first handles monitor resolutions, monitor vertical refresh rates, and 
  8774.      mode preview. 
  8775.  
  8776.   o  The second handles monitor selection and screen sizing. 
  8777.  
  8778. VIDEOCFG.DLL directly accesses the video namespace in the Registry and changes 
  8779. the system video configuration based on user selections. Other operating system 
  8780. services besides OS/2 can create their own video configuration user interfaces 
  8781. and record video configuration changes in the video namespace. 
  8782.  
  8783. The video installation is implemented using the Feature Install Device Driver 
  8784. Install Objects. (A Feature Install Device Driver Install Object is an object 
  8785. that represents a product that can be installed to a user's system.) The 
  8786. Feature Install Framework provides the means for file transfers and updates to 
  8787. system files (config.sys, os2.ini, win.ini ...). (The Feature Install Framework 
  8788. consists of methods and associated interfaces used in the installation of a 
  8789. software component.) At the end of the feature install process, the Feature 
  8790. Install Framework calls VIDEOCFG.DLL for GUI video configurations and to 
  8791. populate the video namespace with installation information. 
  8792.  
  8793. Because video installation depends on the OS/2 Feature Install Framework, OS/2 
  8794. Warp, PowerPC Edition is required to be the dominant operating system service. 
  8795. OS/2 Warp, PowerPC Edition cannot install video support for the MVM server or 
  8796. any other operating system services alone, since there are no install-engine 
  8797. services to do the file transfers and system file updates. The following figure 
  8798. diagrams the video installation and configuration subsystems. 
  8799.  
  8800.  
  8801. ΓòÉΓòÉΓòÉ 9.2. Video Configuration Manager (VCMAN) ΓòÉΓòÉΓòÉ
  8802.  
  8803. VCMAN is an operating-system-service task that handles video hardware detection 
  8804. at system boot time and changes to the video hardware configuration. VCMAN has 
  8805. to do the bus walking to find a video hardware device, instead of the OS/2 
  8806. Warp, PowerPC Edition Configuration Manager because, in OS/2 Warp, Version 3, 
  8807. PowerPC Edition Release 1, the Configuration Manager can only detect a number 
  8808. of predefined video hardware devices that are specified in the stanza file. 
  8809. (rdf.stz is a resource definition file -- a stanza file -- that specifies 
  8810. various hardware devices in terms of I/O ports and memory.) The system will not 
  8811. boot if any other video device is installed. 
  8812.  
  8813. With the assist of VIDEOPMI, VCMAN can detect any video device, if a .PMI file 
  8814. for that device is provided. VCMAN and VIDEOPMI are invoked at boot time by 
  8815. entries in the boot.cfg file. VCMAN does bus walking by loading each of the 
  8816. .PMI files through the VIDEOPMI interface. According to the bus ID, a .PMI file 
  8817. that matches the ID is loaded. If no .PMI file matches this ID, VCMAN attempts 
  8818. to load all of the .PMI files. According to the PMI specification, loading 
  8819. implicitly invokes the embedded device identification routine and, if the 
  8820. device identification fails, loading also fails. 
  8821.  
  8822. Once a .PMI file is successfully loaded, the device description in the .PMI 
  8823. file is added to the namespace and the VIDEOPMI SetMode and bit-map services 
  8824. are available. The resource definition of the video device is already in the 
  8825. HRM as a result of the .PMI file loading (VIDEOPMI's responsibility). The 
  8826. installed video device's installation and configuration information is logged 
  8827. in the Registry. This video namespace also stores information for previously 
  8828. installed video devices, if they have not been uninstalled through inventory 
  8829. objects of Feature Install Framework. 
  8830.  
  8831. In the booting process, if VCMAN detects a different video device than the 
  8832. current video configuration specified in the Registry, VCMAN will search the 
  8833. Registry for any previously installed video configuration that corresponds to 
  8834. the video hardware detected. If this configuration exists in the Registry, 
  8835. VCMAN will update the Registry to make that configuration the one. In this 
  8836. case, the current video configuration becomes the previously installed 
  8837. configuration. If the configuration does not exist, VCMAN will update the 
  8838. current video configuration in the Registry to some default configuration that 
  8839. supports any type of video device. The default configuration is the same 
  8840. configuration that the installation process uses when booting off the CDROM. 
  8841. When installing OS/2 Warp, PowerPC Edition from CDROM, VCMAN and VIDEOPMI are 
  8842. loaded before the media preparation phase. VIDEOPMI provides the SetMode and 
  8843. bit-map services needed for the media preparation, because the console is 
  8844. removed from the OS/2 Warp, PowerPC Edition microkernel. 
  8845.  
  8846.  
  8847. ΓòÉΓòÉΓòÉ 9.3. OS/2 Video Configuration Model (VIDEOCFG.DLL) ΓòÉΓòÉΓòÉ
  8848.  
  8849. VIDEOCFG.DLL exports the video configuration GUI interface, which offers two 
  8850. (or more) dialog windows. The DLL also provides a set of API services to query 
  8851. and modify video configurations in the Registry for use by other OS/2 Warp, 
  8852. PowerPC Edition modules. The first dialog window shows current monitor 
  8853. resolution and vertical refresh rates, and allows users to change them. There 
  8854. is also a mode preview function, which allows a user to preview the selected 
  8855. new mode. 
  8856.  
  8857. The second window shows the installed monitor, available adapter definitions, 
  8858. and available monitor definitions, if adapter definitions can take advantage of 
  8859. the monitor information. It also provides the screen sizing function. 
  8860.  
  8861. The current video settings are stored in the persistent namespace of the 
  8862. Registry. VIDEOCFG.DLL will record any user's video configuration changes by 
  8863. updating this namespace directly. VIDEOCFG.DLL is the focal point for adapter 
  8864. and monitor information. It provides an interface to the install for the 
  8865. end-user to associate a video adapter with a display and thus handle multiple 
  8866. display configurations in a more general way. The VIDEOCFG.DLL stores all of 
  8867. the video-related information in the persistent namespace of the Registry. 
  8868.  
  8869. It also manages various monitor files. XGA uses a Display Mode Query Set (DMQS) 
  8870. file; some industry monitors have a standard VESA Video Display Information 
  8871. File (VDIF). New monitors are expected to support the VESA DDC (display data 
  8872. channel). Yet, there are many existing monitors that do not support any of 
  8873. these formats. VIDEOCFG.DLL supports all of these formats, arbitrates between 
  8874. them, and passes the monitor information to the display configuration utility. 
  8875. In order to cover monitors that do not support DDC or VDIF, a third flat-format 
  8876. description is defined by the OS/2 Warp, PowerPC Edition '.DIF', and a database 
  8877. of the most popular monitors is shipped with the release. VCMAN resorts to the 
  8878. entries from the '.DIF' if neither DDC nor VDIF is available. 
  8879.  
  8880. At the present time, the only clients that use the services of VIDEOCFG.DLL for 
  8881. video configuration are the Video Feature Install Objects and the OS/2 Warp, 
  8882. PowerPC Edition System Settings notebook. The Video Feature Install Objects 
  8883. import these VIDEOCFG.DLL dialog windows for video configuration in order to 
  8884. complete a customized video installation and configuration. The OS/2 Warp, 
  8885. PowerPC Edition System Settings notebook uses the dialog windows for altering 
  8886. the current video configuration. The following API services are exported by 
  8887. VIDEOCFG.DLL: 
  8888.  
  8889. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8890. ΓöéInstallation Functions        ΓöéConfiguration Functions       Γöé
  8891. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8892. ΓöéAddMonitorData                ΓöéGetAllMonitorsDefinition      Γöé
  8893. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8894. ΓöéQueryNumMonitors              ΓöéGetCurrentCFG                 Γöé
  8895. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8896. Γöé                              ΓöéGetCurrentDesktopMode         Γöé
  8897. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8898. Γöé                              ΓöéGetMonitorDefinition          Γöé
  8899. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8900. Γöé                              ΓöéQueryDisplayTypePageData      Γöé
  8901. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8902. Γöé                              ΓöéQueryScreenPageData           Γöé
  8903. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8904. Γöé                              ΓöéSetCurrentCFG                 Γöé
  8905. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8906.  
  8907.  
  8908. ΓòÉΓòÉΓòÉ 9.4. The Video Namespace in the Registry ΓòÉΓòÉΓòÉ
  8909.  
  8910. The video installation and configuration information is stored in the 
  8911. persistent namespace of the Registry; the information remains consistent 
  8912. between system boots. The information is recorded in the Registry at the time 
  8913. of video installation (default installation and configuration when installing 
  8914. from CDROM or customized installation and configuration at Feature Install 
  8915. time) and video configuration (through System Settings object). Any subsequent 
  8916. video installation does not delete the current video configuration. Instead, 
  8917. the current configuration is marked as the previous configuration. This enables 
  8918. VCMAN to restore that configuration if a previously installed video hardware 
  8919. device is later reinstalled. The video configuration is deleted if the user 
  8920. uninstalls it using the Feature Install Inventory object. Any other video 
  8921. subsystems in OS/2 Warp, PowerPC Edition can register with the Registry to be 
  8922. notified of any video configuration change in order to take appropriate 
  8923. actions. The following figure illustrates the video configuration registry 
  8924. layout. 
  8925.  
  8926. The CurrentVideoConfiguration node and the Configuration I, Configuration II, 
  8927. and so on, nodes all have the same node attributes, as listed below: 
  8928.  
  8929. GraddName 
  8930.           The character string specifies the GRADD for the installed video 
  8931.           device. 
  8932.  
  8933. PMIFileName 
  8934.           The character string specifies the .PMI file name for the installed 
  8935.           video device. 
  8936.  
  8937. DesktopConfiguration 
  8938.           XResolution, YResolution, Pixel Depth, and Desktop Orientation of the 
  8939.           current desktop configuration. 
  8940.  
  8941. AdapterOEMString 
  8942.           The character string specifies the OEM name of the installed adapter. 
  8943.  
  8944. The CurrentVideoConfiguration node has one more attribute than previous video 
  8945. configurations: 
  8946.  
  8947. MonitorDefinition 
  8948.           The MONITORINFO structure that specifies the current installed 
  8949.           monitor's definition. 
  8950.  
  8951.  
  8952. ΓòÉΓòÉΓòÉ 9.5. Video Feature Install Objects ΓòÉΓòÉΓòÉ
  8953.  
  8954. Video drivers are installed using the Feature Install Objects. These objects 
  8955. are created by  drag-and-drop operations using the Feature Install Framework 
  8956. Toolkit. File transfer and system file updates can be configured through the 
  8957. Settings notebook pages of these objects (for a complete development process of 
  8958. a Feature Install object, refer to the Device Driver Installation design 
  8959. documentation). 
  8960.  
  8961. At the end of the feature install process, the Feature Install Object calls 
  8962. VIDEOCFG.DLL to display the video configuration dialog windows and to record 
  8963. driver installation information in the Registry. For video devices supported by 
  8964. OS/2 Warp, PowerPC Edition Release 1 and shipped in the CDROM, there is one 
  8965. video Feature Install Object for each video driver. These objects reside in the 
  8966. video installation folder on the OS/2 desktop of OS/2 Warp, PowerPC Edition. 
  8967. Each new vendor video driver, will have to create its own video Feature Install 
  8968. Object and package it with the diskettes containing the actual binary video 
  8969. driver. These new objects will not be copied to the video installation folder. 
  8970.  
  8971.  
  8972. ΓòÉΓòÉΓòÉ 9.6. Function Descriptions ΓòÉΓòÉΓòÉ
  8973.  
  8974. This section contains detailed descriptions of each of the video installation 
  8975. and configuration functions, including parameters and syntax. 
  8976.  
  8977.  
  8978. ΓòÉΓòÉΓòÉ 9.7. AddMonitorData ΓòÉΓòÉΓòÉ
  8979.  
  8980.  
  8981. ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Syntax ΓòÉΓòÉΓòÉ
  8982.  
  8983. /*******************************************/
  8984. /* Description:  AddMonitorData adds a     */
  8985. /* monitor definition to the VIDEOCFG.DLL  */
  8986. /* monitor definitions database. The       */
  8987. /* monitor definition is also written to   */
  8988. /* the MONITOR.DIF file.                   */
  8989. /*******************************************/
  8990. #include <ddi.h>
  8991.  
  8992. MONITORINFO    *pNewMonitorInfo;  /*  Pointer to the MONITORINFO data structure. */
  8993. ULONG          rc;                /*  Return codes. */
  8994.  
  8995. rc = AddMonitorData(*pNewMonitorInfo);
  8996.  
  8997.  
  8998. ΓòÉΓòÉΓòÉ <hidden> AddMonitorData Parameter - *pNewMonitorInfo ΓòÉΓòÉΓòÉ
  8999.  
  9000. *pNewMonitorInfo (MONITORINFO) - input 
  9001.    Pointer to the MONITORINFO data structure. 
  9002.  
  9003.    This parameter points to the MONITORINFO data structure that specifies the 
  9004.    new monitor definition to add to the database. 
  9005.  
  9006.  
  9007. ΓòÉΓòÉΓòÉ <hidden> AddMonitorData Return Value - rc ΓòÉΓòÉΓòÉ
  9008.  
  9009. rc (ULONG) - returns 
  9010.    Return codes. 
  9011.  
  9012.      0              Function is successful 
  9013.      Nonzero        Returns one of the following errors: 
  9014.  
  9015.           ERROR_INVALID_PARAMETER 
  9016.           ERROR_NO_MONITOR_SUPPORT 
  9017.  
  9018.  
  9019. ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Parameters ΓòÉΓòÉΓòÉ
  9020.  
  9021. *pNewMonitorInfo (MONITORINFO) - input 
  9022.    Pointer to the MONITORINFO data structure. 
  9023.  
  9024.    This parameter points to the MONITORINFO data structure that specifies the 
  9025.    new monitor definition to add to the database. 
  9026.  
  9027. rc (ULONG) - returns 
  9028.    Return codes. 
  9029.  
  9030.      0              Function is successful 
  9031.      Nonzero        Returns one of the following errors: 
  9032.  
  9033.           ERROR_INVALID_PARAMETER 
  9034.           ERROR_NO_MONITOR_SUPPORT 
  9035.  
  9036.  
  9037. ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Remarks ΓòÉΓòÉΓòÉ
  9038.  
  9039. None. 
  9040.  
  9041.  
  9042. ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Topics ΓòÉΓòÉΓòÉ
  9043.  
  9044. Select an item: 
  9045.  
  9046. Syntax
  9047. Parameters
  9048. Returns
  9049. Remarks
  9050. Glossary
  9051.  
  9052.  
  9053. ΓòÉΓòÉΓòÉ 9.8. GetAllMonitors ΓòÉΓòÉΓòÉ
  9054.  
  9055.  
  9056. ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Syntax ΓòÉΓòÉΓòÉ
  9057.  
  9058. /*******************************************/
  9059. /* Description:  GetAllMonitors retrieves  */
  9060. /* all monitor definitions. These monitor  */
  9061. /* definitions are defined in the          */
  9062. /* MONITOR.DIF file.                       */
  9063. /*******************************************/
  9064. #include <ddi.h>
  9065.  
  9066. MONITORINFO    *pMonitors;     /*  Pointer to the array of MONITORINFO data structures. */
  9067. PULONG         pulBufferSize;  /*  Specifies the size of the pMonitors buffer, in bytes. */
  9068. ULONG          rc;             /*  Return codes. */
  9069.  
  9070. rc = GetAllMonitors(*pMonitors, pulBufferSize);
  9071.  
  9072.  
  9073. ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors Parameter - *pMonitors ΓòÉΓòÉΓòÉ
  9074.  
  9075. *pMonitors (MONITORINFO) - output 
  9076.    Pointer to the array of MONITORINFO data structures. 
  9077.  
  9078.    This parameter points to the array of MONITORINFO data structures that 
  9079.    receive all the monitor definitions in the MONITOR.DIF file. 
  9080.  
  9081.  
  9082. ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors Parameter - pulBufferSize ΓòÉΓòÉΓòÉ
  9083.  
  9084. pulBufferSize (PULONG) - output 
  9085.    Specifies the size of the pMonitors buffer, in bytes. 
  9086.  
  9087.    If the buffer size is too small to contain all monitor definitions, the 
  9088.    ERROR_NOT_ENOUGH_MEMORY error is returned. The variable is then given the 
  9089.    size of the buffer required in order to contain all monitor definitions. 
  9090.  
  9091.  
  9092. ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors Return Value - rc ΓòÉΓòÉΓòÉ
  9093.  
  9094. rc (ULONG) - returns 
  9095.    Return codes. 
  9096.  
  9097.      0              Function is successful 
  9098.      Nonzero        Returns one of the following errors: 
  9099.  
  9100.           ERROR_INVALID_PARAMETER 
  9101.           ERROR_NO_MONITOR_SUPPORT 
  9102.           ERROR_NOT_ENOUGH_MEMORY 
  9103.  
  9104.  
  9105. ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Parameters ΓòÉΓòÉΓòÉ
  9106.  
  9107. *pMonitors (MONITORINFO) - output 
  9108.    Pointer to the array of MONITORINFO data structures. 
  9109.  
  9110.    This parameter points to the array of MONITORINFO data structures that 
  9111.    receive all the monitor definitions in the MONITOR.DIF file. 
  9112.  
  9113. pulBufferSize (PULONG) - output 
  9114.    Specifies the size of the pMonitors buffer, in bytes. 
  9115.  
  9116.    If the buffer size is too small to contain all monitor definitions, the 
  9117.    ERROR_NOT_ENOUGH_MEMORY error is returned. The variable is then given the 
  9118.    size of the buffer required in order to contain all monitor definitions. 
  9119.  
  9120. rc (ULONG) - returns 
  9121.    Return codes. 
  9122.  
  9123.      0              Function is successful 
  9124.      Nonzero        Returns one of the following errors: 
  9125.  
  9126.           ERROR_INVALID_PARAMETER 
  9127.           ERROR_NO_MONITOR_SUPPORT 
  9128.           ERROR_NOT_ENOUGH_MEMORY 
  9129.  
  9130.  
  9131. ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Remarks ΓòÉΓòÉΓòÉ
  9132.  
  9133. None. 
  9134.  
  9135.  
  9136. ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Topics ΓòÉΓòÉΓòÉ
  9137.  
  9138. Select an item: 
  9139.  
  9140. Syntax
  9141. Parameters
  9142. Returns
  9143. Remarks
  9144. Glossary
  9145.  
  9146.  
  9147. ΓòÉΓòÉΓòÉ 9.9. GetCurrentCFG ΓòÉΓòÉΓòÉ
  9148.  
  9149.  
  9150. ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Syntax ΓòÉΓòÉΓòÉ
  9151.  
  9152. /*******************************************/
  9153. /* Description:  GetCurrentCFG gets the    */
  9154. /* current video configuration stored in   */
  9155. /* the Registry.                           */
  9156. /*******************************************/
  9157. #include <ddi.h>
  9158.  
  9159. ADAPTERINFO    *pAdapter;  /*  Pointer to the ADAPTERINFO data structure. */
  9160. MONITORINFO    *pMonitor;  /*  Pointer to the MONITORINFO data structure. */
  9161. ULONG          rc;         /*  Return codes. */
  9162.  
  9163. rc = GetCurrentCFG(*pAdapter, *pMonitor);
  9164.  
  9165.  
  9166. ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG Parameter - *pAdapter ΓòÉΓòÉΓòÉ
  9167.  
  9168. *pAdapter (ADAPTERINFO) - output 
  9169.    Pointer to the ADAPTERINFO data structure. 
  9170.  
  9171.    This parameter points to the data structure receiving the current video 
  9172.    adapter information. 
  9173.  
  9174.  
  9175. ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG Parameter - *pMonitor ΓòÉΓòÉΓòÉ
  9176.  
  9177. *pMonitor (MONITORINFO) - output 
  9178.    Pointer to the MONITORINFO data structure. 
  9179.  
  9180.    This parameter points to the data structure receiving the current video 
  9181.    monitor information. 
  9182.  
  9183.  
  9184. ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG Return Value - rc ΓòÉΓòÉΓòÉ
  9185.  
  9186. rc (ULONG) - returns 
  9187.    Return codes. 
  9188.  
  9189.      0              Function is successful 
  9190.      Nonzero        Returns one of the following errors: 
  9191.  
  9192.           ERROR_INVALID_PARAMETER 
  9193.           ERROR_INVALID_CONFIGURATION 
  9194.  
  9195.  
  9196. ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Parameters ΓòÉΓòÉΓòÉ
  9197.  
  9198. *pAdapter (ADAPTERINFO) - output 
  9199.    Pointer to the ADAPTERINFO data structure. 
  9200.  
  9201.    This parameter points to the data structure receiving the current video 
  9202.    adapter information. 
  9203.  
  9204. *pMonitor (MONITORINFO) - output 
  9205.    Pointer to the MONITORINFO data structure. 
  9206.  
  9207.    This parameter points to the data structure receiving the current video 
  9208.    monitor information. 
  9209.  
  9210. rc (ULONG) - returns 
  9211.    Return codes. 
  9212.  
  9213.      0              Function is successful 
  9214.      Nonzero        Returns one of the following errors: 
  9215.  
  9216.           ERROR_INVALID_PARAMETER 
  9217.           ERROR_INVALID_CONFIGURATION 
  9218.  
  9219.  
  9220. ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Remarks ΓòÉΓòÉΓòÉ
  9221.  
  9222. None. 
  9223.  
  9224.  
  9225. ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Topics ΓòÉΓòÉΓòÉ
  9226.  
  9227. Select an item: 
  9228.  
  9229. Syntax
  9230. Parameters
  9231. Returns
  9232. Remarks
  9233. Glossary
  9234.  
  9235.  
  9236. ΓòÉΓòÉΓòÉ 9.10. GetCurrentDesktopMode ΓòÉΓòÉΓòÉ
  9237.  
  9238.  
  9239. ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Syntax ΓòÉΓòÉΓòÉ
  9240.  
  9241. /*******************************************/
  9242. /* Description:  GetCurrentDesktopMode     */
  9243. /* retrieves the current desktop mode      */
  9244. /* information stored in the Registry. The */
  9245. /* desktop mode information includes X and */
  9246. /* Y resolutions, bits per  pixel,         */
  9247. /* vertical and horizontal refresh rates,  */
  9248. /* vertical and horizontal  polarity       */
  9249. /* positives, and screen top, bottom,      */
  9250. /* left, and right.                        */
  9251. /*******************************************/
  9252. #include <ddi.h>
  9253.  
  9254. VIDEO_ADAPTER    *pVideoAdapter;  /*  Pointer to the VIDEO_ADAPTER data structure. */
  9255. ULONG            rc;              /*  Return codes. */
  9256.  
  9257. rc = GetCurrentDesktopMode(*pVideoAdapter);
  9258.  
  9259.  
  9260. ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode Parameter - *pVideoAdapter ΓòÉΓòÉΓòÉ
  9261.  
  9262. *pVideoAdapter (VIDEO_ADAPTER) - output 
  9263.    Pointer to the VIDEO_ADAPTER data structure. 
  9264.  
  9265.    This parameter points to the data structure receiving the desktop mode 
  9266.    information. 
  9267.  
  9268.  
  9269. ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode Return Value - rc ΓòÉΓòÉΓòÉ
  9270.  
  9271. rc (ULONG) - returns 
  9272.    Return codes. 
  9273.  
  9274.      TRUE           Function is successful 
  9275.      FALSE          Function is unsuccessful. 
  9276.  
  9277.  
  9278. ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Parameters ΓòÉΓòÉΓòÉ
  9279.  
  9280. *pVideoAdapter (VIDEO_ADAPTER) - output 
  9281.    Pointer to the VIDEO_ADAPTER data structure. 
  9282.  
  9283.    This parameter points to the data structure receiving the desktop mode 
  9284.    information. 
  9285.  
  9286. rc (ULONG) - returns 
  9287.    Return codes. 
  9288.  
  9289.      TRUE           Function is successful 
  9290.      FALSE          Function is unsuccessful. 
  9291.  
  9292.  
  9293. ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Remarks ΓòÉΓòÉΓòÉ
  9294.  
  9295. None. 
  9296.  
  9297.  
  9298. ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Topics ΓòÉΓòÉΓòÉ
  9299.  
  9300. Select an item: 
  9301.  
  9302. Syntax
  9303. Parameters
  9304. Returns
  9305. Remarks
  9306. Glossary
  9307.  
  9308.  
  9309. ΓòÉΓòÉΓòÉ 9.11. GetMonitorDefinition ΓòÉΓòÉΓòÉ
  9310.  
  9311.  
  9312. ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Syntax ΓòÉΓòÉΓòÉ
  9313.  
  9314. /*******************************************/
  9315. /* Description:  GetMonitorDefinition      */
  9316. /* retrieves a specific monitor definition */
  9317. /* from the MONITOR.DIF file.              */
  9318. /*******************************************/
  9319. #include <ddi.h>
  9320.  
  9321. PSZ            pszMonitorName;  /*  Pointer to the character string that specifies the monitor name. */
  9322. MONITORINFO    *pMonitor;       /*  Pointer to the MONITORINFO data structure that receives the monitor definition. */
  9323. ULONG          rc;              /*  Return codes. */
  9324.  
  9325. rc = GetMonitorDefinition(pszMonitorName,
  9326.        *pMonitor);
  9327.  
  9328.  
  9329. ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition Parameter - pszMonitorName ΓòÉΓòÉΓòÉ
  9330.  
  9331. pszMonitorName (PSZ) - input 
  9332.    Pointer to the character string that specifies the monitor name. 
  9333.  
  9334.  
  9335. ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition Parameter - *pMonitor ΓòÉΓòÉΓòÉ
  9336.  
  9337. *pMonitor (MONITORINFO) - input 
  9338.    Pointer to the MONITORINFO data structure that receives the monitor 
  9339.    definition. 
  9340.  
  9341.  
  9342. ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition Return Value - rc ΓòÉΓòÉΓòÉ
  9343.  
  9344. rc (ULONG) - returns 
  9345.    Return codes. 
  9346.  
  9347.      0              Function is successful 
  9348.      Nonzero        Returns one of the following errors: 
  9349.  
  9350.           ERROR_INVALID_PARAMETER 
  9351.           ERROR_NO_MONITOR_SUPPORT 
  9352.           ERROR_MONITOR_NOT_FOUND 
  9353.  
  9354.  
  9355. ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Parameters ΓòÉΓòÉΓòÉ
  9356.  
  9357. pszMonitorName (PSZ) - input 
  9358.    Pointer to the character string that specifies the monitor name. 
  9359.  
  9360. *pMonitor (MONITORINFO) - input 
  9361.    Pointer to the MONITORINFO data structure that receives the monitor 
  9362.    definition. 
  9363.  
  9364. rc (ULONG) - returns 
  9365.    Return codes. 
  9366.  
  9367.      0              Function is successful 
  9368.      Nonzero        Returns one of the following errors: 
  9369.  
  9370.           ERROR_INVALID_PARAMETER 
  9371.           ERROR_NO_MONITOR_SUPPORT 
  9372.           ERROR_MONITOR_NOT_FOUND 
  9373.  
  9374.  
  9375. ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Remarks ΓòÉΓòÉΓòÉ
  9376.  
  9377. None. 
  9378.  
  9379.  
  9380. ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Topics ΓòÉΓòÉΓòÉ
  9381.  
  9382. Select an item: 
  9383.  
  9384. Syntax
  9385. Parameters
  9386. Returns
  9387. Remarks
  9388. Glossary
  9389.  
  9390.  
  9391. ΓòÉΓòÉΓòÉ 9.12. QueryDisplayTypePageData ΓòÉΓòÉΓòÉ
  9392.  
  9393.  
  9394. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Syntax ΓòÉΓòÉΓòÉ
  9395.  
  9396. /*******************************************/
  9397. /* Description:  QueryDisplayTypePageData  */
  9398. /* retrieves the dialog  resource          */
  9399. /* information about the display-type page */
  9400. /* (page 1), so that loading of the dialog */
  9401. /* by a PM application is possible.        */
  9402. /*******************************************/
  9403. #include <ddi.h>
  9404.  
  9405. PHMODULE    phmodResourceMRI;   /*  Pointer to the module handle that receives the handle to the MRI resource module. */
  9406. PUSHORT     pusDialogId;        /*  Pointer to the variable that receives the Display-Type Page Dialog ID. */
  9407. PSZ         pszDialogTitle;     /*  Pointer to the character string that receives the Display-Type Page Dialog title. */
  9408. ULONG       ulDialogTitleLen;   /*  Specifies the size of the pszDialogTitle string, in bytes. */
  9409. PUSHORT     pusHelpId;          /*  Pointer to the variable that receives the Display-Type Page Dialog Help ID. */
  9410. PSZ         pszDialogProcName;  /*  Pointer to the character string that receives the Display-Type Page Dialog procedure name. */
  9411. ULONG       rc;                 /*  Return codes. */
  9412.  
  9413. rc = QueryDisplayTypePageData(phmodResourceMRI,
  9414.        pusDialogId, pszDialogTitle, ulDialogTitleLen,
  9415.        pusHelpId, pszDialogProcName);
  9416.  
  9417.  
  9418. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - phmodResourceMRI ΓòÉΓòÉΓòÉ
  9419.  
  9420. phmodResourceMRI (PHMODULE) - output 
  9421.    Pointer to the module handle that receives the handle to the MRI resource 
  9422.    module. 
  9423.  
  9424.  
  9425. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pusDialogId ΓòÉΓòÉΓòÉ
  9426.  
  9427. pusDialogId (PUSHORT) - output 
  9428.    Pointer to the variable that receives the Display-Type Page Dialog ID. 
  9429.  
  9430.  
  9431. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pszDialogTitle ΓòÉΓòÉΓòÉ
  9432.  
  9433. pszDialogTitle (PSZ) - output 
  9434.    Pointer to the character string that receives the Display-Type Page Dialog 
  9435.    title. 
  9436.  
  9437.  
  9438. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - ulDialogTitleLen ΓòÉΓòÉΓòÉ
  9439.  
  9440. ulDialogTitleLen (ULONG) - output 
  9441.    Specifies the size of the pszDialogTitle string, in bytes. 
  9442.  
  9443.  
  9444. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pusHelpId ΓòÉΓòÉΓòÉ
  9445.  
  9446. pusHelpId (PUSHORT) - output 
  9447.    Pointer to the variable that receives the Display-Type Page Dialog Help ID. 
  9448.  
  9449.  
  9450. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pszDialogProcName ΓòÉΓòÉΓòÉ
  9451.  
  9452. pszDialogProcName (PSZ) - output 
  9453.    Pointer to the character string that receives the Display-Type Page Dialog 
  9454.    procedure name. 
  9455.  
  9456.  
  9457. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Return Value - rc ΓòÉΓòÉΓòÉ
  9458.  
  9459. rc (ULONG) - returns 
  9460.    Return codes. 
  9461.  
  9462.      TRUE           Function is successful. 
  9463.      FALSE          Function is unsuccessful. 
  9464.  
  9465.  
  9466. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Parameters ΓòÉΓòÉΓòÉ
  9467.  
  9468. phmodResourceMRI (PHMODULE) - output 
  9469.    Pointer to the module handle that receives the handle to the MRI resource 
  9470.    module. 
  9471.  
  9472. pusDialogId (PUSHORT) - output 
  9473.    Pointer to the variable that receives the Display-Type Page Dialog ID. 
  9474.  
  9475. pszDialogTitle (PSZ) - output 
  9476.    Pointer to the character string that receives the Display-Type Page Dialog 
  9477.    title. 
  9478.  
  9479. ulDialogTitleLen (ULONG) - output 
  9480.    Specifies the size of the pszDialogTitle string, in bytes. 
  9481.  
  9482. pusHelpId (PUSHORT) - output 
  9483.    Pointer to the variable that receives the Display-Type Page Dialog Help ID. 
  9484.  
  9485. pszDialogProcName (PSZ) - output 
  9486.    Pointer to the character string that receives the Display-Type Page Dialog 
  9487.    procedure name. 
  9488.  
  9489. rc (ULONG) - returns 
  9490.    Return codes. 
  9491.  
  9492.      TRUE           Function is successful. 
  9493.      FALSE          Function is unsuccessful. 
  9494.  
  9495.  
  9496. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Remarks ΓòÉΓòÉΓòÉ
  9497.  
  9498. None. 
  9499.  
  9500.  
  9501. ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Topics ΓòÉΓòÉΓòÉ
  9502.  
  9503. Select an item: 
  9504.  
  9505. Syntax
  9506. Parameters
  9507. Returns
  9508. Remarks
  9509. Glossary
  9510.  
  9511.  
  9512. ΓòÉΓòÉΓòÉ 9.13. QueryNumMonitors ΓòÉΓòÉΓòÉ
  9513.  
  9514.  
  9515. ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Syntax ΓòÉΓòÉΓòÉ
  9516.  
  9517. /*******************************************/
  9518. /* Description:  QueryNumMonitors queries  */
  9519. /* the number of monitor defintions        */
  9520. /* available.                              */
  9521. /*******************************************/
  9522. #include <ddi.h>
  9523.  
  9524. PULONG    pulNumMonitors;  /*  Pointer to variable receiving the number of monitor definitions. */
  9525. ULONG     rc;              /*  Return codes. */
  9526.  
  9527. rc = QueryNumMonitors(pulNumMonitors);
  9528.  
  9529.  
  9530. ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors Parameter - pulNumMonitors ΓòÉΓòÉΓòÉ
  9531.  
  9532. pulNumMonitors (PULONG) - output 
  9533.    Pointer to variable receiving the number of monitor definitions. 
  9534.  
  9535.  
  9536. ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors Return Value - rc ΓòÉΓòÉΓòÉ
  9537.  
  9538. rc (ULONG) - returns 
  9539.    Return codes. 
  9540.  
  9541.      0              Function is successful 
  9542.      Nonzero        Returns the following error: 
  9543.  
  9544.           ERROR_NO_MONITOR_SUPPORT 
  9545.  
  9546.  
  9547. ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Parameters ΓòÉΓòÉΓòÉ
  9548.  
  9549. pulNumMonitors (PULONG) - output 
  9550.    Pointer to variable receiving the number of monitor definitions. 
  9551.  
  9552. rc (ULONG) - returns 
  9553.    Return codes. 
  9554.  
  9555.      0              Function is successful 
  9556.      Nonzero        Returns the following error: 
  9557.  
  9558.           ERROR_NO_MONITOR_SUPPORT 
  9559.  
  9560.  
  9561. ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Remarks ΓòÉΓòÉΓòÉ
  9562.  
  9563. None. 
  9564.  
  9565.  
  9566. ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Topics ΓòÉΓòÉΓòÉ
  9567.  
  9568. Select an item: 
  9569.  
  9570. Syntax
  9571. Parameters
  9572. Returns
  9573. Remarks
  9574. Glossary
  9575.  
  9576.  
  9577. ΓòÉΓòÉΓòÉ 9.14. QueryScreenPageData ΓòÉΓòÉΓòÉ
  9578.  
  9579.  
  9580. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Syntax ΓòÉΓòÉΓòÉ
  9581.  
  9582. /*******************************************/
  9583. /* Description:  QueryScreenPageData       */
  9584. /* retrieves the dialog resource           */
  9585. /* information about the screen page so    */
  9586. /* that loading of the dialog by a PM      */
  9587. /* application  is possible.               */
  9588. /*******************************************/
  9589. #include <ddi.h>
  9590.  
  9591. PHMODULE    phmodResourceMRI;          /*  Pointer to the module handle that receives the handle to the MRI resource module. */
  9592. PUSHORT     pusDialogId;               /*  Pointer to the variable that receives the Screen Page Dialog ID. */
  9593. PSZ         pszDialogTitle;            /*  Pointer to the character string that receives the Screen Page Dialog title. */
  9594. ULONG       ulDialogTitleLen;          /*  Specifies the size of the pszDialogTitle string, in bytes. */
  9595. PUSHORT     pusHelpId;                 /*  Pointer to the variable that receives the Screen Page Dialog Help ID. */
  9596. PSZ         pszDialogProcName;         /*  Pointer to the character string that receives the Screen Page Dialog procedure name. */
  9597. BOOL        *pbPaletteManagedDisplay;  /*  Pointer to the variable that specifies the desktop palette-managed display flag. */
  9598. ULONG       rc;                        /*  Return codes. */
  9599.  
  9600. rc = QueryScreenPageData(phmodResourceMRI,
  9601.        pusDialogId, pszDialogTitle, ulDialogTitleLen,
  9602.        pusHelpId, pszDialogProcName, *pbPaletteManagedDisplay);
  9603.  
  9604.  
  9605. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - phmodResourceMRI ΓòÉΓòÉΓòÉ
  9606.  
  9607. phmodResourceMRI (PHMODULE) - output 
  9608.    Pointer to the module handle that receives the handle to the MRI resource 
  9609.    module. 
  9610.  
  9611.  
  9612. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pusDialogId ΓòÉΓòÉΓòÉ
  9613.  
  9614. pusDialogId (PUSHORT) - output 
  9615.    Pointer to the variable that receives the Screen Page Dialog ID. 
  9616.  
  9617.  
  9618. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pszDialogTitle ΓòÉΓòÉΓòÉ
  9619.  
  9620. pszDialogTitle (PSZ) - output 
  9621.    Pointer to the character string that receives the Screen Page Dialog title. 
  9622.  
  9623.  
  9624. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - ulDialogTitleLen ΓòÉΓòÉΓòÉ
  9625.  
  9626. ulDialogTitleLen (ULONG) - output 
  9627.    Specifies the size of the pszDialogTitle string, in bytes. 
  9628.  
  9629.  
  9630. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pusHelpId ΓòÉΓòÉΓòÉ
  9631.  
  9632. pusHelpId (PUSHORT) - output 
  9633.    Pointer to the variable that receives the Screen Page Dialog Help ID. 
  9634.  
  9635.  
  9636. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pszDialogProcName ΓòÉΓòÉΓòÉ
  9637.  
  9638. pszDialogProcName (PSZ) - output 
  9639.    Pointer to the character string that receives the Screen Page Dialog 
  9640.    procedure name. 
  9641.  
  9642.  
  9643. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - *pbPaletteManagedDisplay ΓòÉΓòÉΓòÉ
  9644.  
  9645. *pbPaletteManagedDisplay (BOOL) - input 
  9646.    Pointer to the variable that specifies the desktop palette-managed display 
  9647.    flag. 
  9648.  
  9649.  
  9650. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Return Value - rc ΓòÉΓòÉΓòÉ
  9651.  
  9652. rc (ULONG) - returns 
  9653.    Return codes. 
  9654.  
  9655.      TRUE           Function is successful. 
  9656.      FALSE          Function is unsuccessful. 
  9657.  
  9658.  
  9659. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Parameters ΓòÉΓòÉΓòÉ
  9660.  
  9661. phmodResourceMRI (PHMODULE) - output 
  9662.    Pointer to the module handle that receives the handle to the MRI resource 
  9663.    module. 
  9664.  
  9665. pusDialogId (PUSHORT) - output 
  9666.    Pointer to the variable that receives the Screen Page Dialog ID. 
  9667.  
  9668. pszDialogTitle (PSZ) - output 
  9669.    Pointer to the character string that receives the Screen Page Dialog title. 
  9670.  
  9671. ulDialogTitleLen (ULONG) - output 
  9672.    Specifies the size of the pszDialogTitle string, in bytes. 
  9673.  
  9674. pusHelpId (PUSHORT) - output 
  9675.    Pointer to the variable that receives the Screen Page Dialog Help ID. 
  9676.  
  9677. pszDialogProcName (PSZ) - output 
  9678.    Pointer to the character string that receives the Screen Page Dialog 
  9679.    procedure name. 
  9680.  
  9681. *pbPaletteManagedDisplay (BOOL) - input 
  9682.    Pointer to the variable that specifies the desktop palette-managed display 
  9683.    flag. 
  9684.  
  9685. rc (ULONG) - returns 
  9686.    Return codes. 
  9687.  
  9688.      TRUE           Function is successful. 
  9689.      FALSE          Function is unsuccessful. 
  9690.  
  9691.  
  9692. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Remarks ΓòÉΓòÉΓòÉ
  9693.  
  9694. None. 
  9695.  
  9696.  
  9697. ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Topics ΓòÉΓòÉΓòÉ
  9698.  
  9699. Select an item: 
  9700.  
  9701. Syntax
  9702. Parameters
  9703. Returns
  9704. Remarks
  9705. Glossary
  9706.  
  9707.  
  9708. ΓòÉΓòÉΓòÉ 9.15. SetCurrentCFG ΓòÉΓòÉΓòÉ
  9709.  
  9710.  
  9711. ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Syntax ΓòÉΓòÉΓòÉ
  9712.  
  9713. /*******************************************/
  9714. /* Description:  SetCurrentCFG sets the    */
  9715. /* current video configuration in the      */
  9716. /* Registry.                               */
  9717. /*******************************************/
  9718. #include <ddi.h>
  9719.  
  9720. ADAPTERINFO    *pAdapter;  /*  Pointer to the ADAPTERINFO data structure. */
  9721. MONITORINFO    *pMonitor;  /*  Pointer to the MONITORINFO data structure. */
  9722. ULONG          rc;         /*  Return codes. */
  9723.  
  9724. rc = SetCurrentCFG(*pAdapter, *pMonitor);
  9725.  
  9726.  
  9727. ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG Parameter - *pAdapter ΓòÉΓòÉΓòÉ
  9728.  
  9729. *pAdapter (ADAPTERINFO) - input 
  9730.    Pointer to the ADAPTERINFO data structure. 
  9731.  
  9732.    This parameter points to the data structure that specifies the current 
  9733.    adapter configuration to be set in the Registry. 
  9734.  
  9735.  
  9736. ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG Parameter - *pMonitor ΓòÉΓòÉΓòÉ
  9737.  
  9738. *pMonitor (MONITORINFO) - input 
  9739.    Pointer to the MONITORINFO data structure. 
  9740.  
  9741.    This parameter points to the data structure that specifies the current 
  9742.    monitor configuration to be set in the Registry. 
  9743.  
  9744.  
  9745. ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG Return Value - rc ΓòÉΓòÉΓòÉ
  9746.  
  9747. rc (ULONG) - returns 
  9748.    Return codes. 
  9749.  
  9750.      0              Function is successful 
  9751.      Nonzero        Returns one of the following errors: 
  9752.  
  9753.           ERROR_INVALID_PARAMETER 
  9754.           ERROR_INVALID_CONFIGURATION 
  9755.  
  9756.  
  9757. ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Parameters ΓòÉΓòÉΓòÉ
  9758.  
  9759. *pAdapter (ADAPTERINFO) - input 
  9760.    Pointer to the ADAPTERINFO data structure. 
  9761.  
  9762.    This parameter points to the data structure that specifies the current 
  9763.    adapter configuration to be set in the Registry. 
  9764.  
  9765. *pMonitor (MONITORINFO) - input 
  9766.    Pointer to the MONITORINFO data structure. 
  9767.  
  9768.    This parameter points to the data structure that specifies the current 
  9769.    monitor configuration to be set in the Registry. 
  9770.  
  9771. rc (ULONG) - returns 
  9772.    Return codes. 
  9773.  
  9774.      0              Function is successful 
  9775.      Nonzero        Returns one of the following errors: 
  9776.  
  9777.           ERROR_INVALID_PARAMETER 
  9778.           ERROR_INVALID_CONFIGURATION 
  9779.  
  9780.  
  9781. ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Remarks ΓòÉΓòÉΓòÉ
  9782.  
  9783. None. 
  9784.  
  9785.  
  9786. ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Topics ΓòÉΓòÉΓòÉ
  9787.  
  9788. Select an item: 
  9789.  
  9790. Syntax
  9791. Parameters
  9792. Returns
  9793. Remarks
  9794. Glossary
  9795.  
  9796.  
  9797. ΓòÉΓòÉΓòÉ 10. Syntax Conventions ΓòÉΓòÉΓòÉ
  9798.  
  9799. The programming statements in this book use the C language syntax. Support for 
  9800. code written in C is provided in header files identified by the filename 
  9801. extension ".h". Assembler support is provided in the include files identified 
  9802. by the filename extension ".INC". 
  9803.  
  9804.  
  9805. ΓòÉΓòÉΓòÉ 10.1. Parameter Names ΓòÉΓòÉΓòÉ
  9806.  
  9807. Parameter names are constructed to show the data type of the parameter and to 
  9808. indicate its use: 
  9809.  
  9810.   o  A lowercase prefix of one or more characters that indicates the data type. 
  9811.   o  An optional qualifier starting with an uppercase letter. 
  9812.  
  9813.      Where possible, standard names have been used to describe parameters. 
  9814.      Where multiple-word qualifiers are used, the order of the words is not 
  9815.      significant. 
  9816.  
  9817. For example: 
  9818.  
  9819.  
  9820.     hdc          /* device context handle         */
  9821.     pszFilename  /* pointer to a character string */
  9822.  
  9823. The following standard base tags and their associated type names are defined: 
  9824.  
  9825. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9826. ΓöéTag       ΓöéData Type ΓöéDescription                             Γöé
  9827. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9828. Γöéf         ΓöéBOOL      ΓöéFlag or Boolean variable. The qualifier Γöé
  9829. Γöé          Γöé          Γöédescribes the condition associated with Γöé
  9830. Γöé          Γöé          Γöéthe flag when it is TRUE. For example,  Γöé
  9831. Γöé          Γöé          ΓöéfSuccess is TRUE if successful and FALSEΓöé
  9832. Γöé          Γöé          Γöéif not; whereas fError is TRUE if an    Γöé
  9833. Γöé          Γöé          Γöéerror occurred and FALSE if no error    Γöé
  9834. Γöé          Γöé          Γöéoccurred. For objects of type BOOL, the Γöé
  9835. Γöé          Γöé          Γöévalue 0 implies FALSE and any nonzero   Γöé
  9836. Γöé          Γöé          Γöévalue implies TRUE.                     Γöé
  9837. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9838. Γöéch        ΓöéCHAR      ΓöéSigned eight-bit quantity; a character. Γöé
  9839. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9840. Γöés         ΓöéSHORT     ΓöéSigned 16-bit quantity; a SHORT. This isΓöé
  9841. Γöé          Γöé          Γöéoften used in place of us when it does  Γöé
  9842. Γöé          Γöé          Γöénot matter whether the value is signed  Γöé
  9843. Γöé          Γöé          Γöéor unsigned.                            Γöé
  9844. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9845. Γöél         ΓöéLONG      ΓöéSigned 32-bit quantity; a LONG. This is Γöé
  9846. Γöé          Γöé          Γöéoften used in place of ul when it does  Γöé
  9847. Γöé          Γöé          Γöénot matter whether the value is signed  Γöé
  9848. Γöé          Γöé          Γöéor unsigned.                            Γöé
  9849. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9850. Γöéuch       ΓöéUCHAR     ΓöéUnsigned eight-bit quantity; a byte.    Γöé
  9851. Γöé          Γöé          ΓöéSame as b.                              Γöé
  9852. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9853. Γöéus        ΓöéUSHORT    ΓöéUnsigned 16-bit quantity.               Γöé
  9854. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9855. Γöéul        ΓöéULONG     ΓöéUnsigned 32-bit quantity.               Γöé
  9856. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9857. Γöéb         ΓöéBYTE      ΓöéUnsigned eight-bit quantity; a byte.    Γöé
  9858. Γöé          Γöé          ΓöéSame as uch.                            Γöé
  9859. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9860. Γöész        ΓöéCHAR[ ]   ΓöéNULL-terminated string of characters.   Γöé
  9861. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9862. Γöéfb        ΓöéUCHAR     ΓöéByte of flags, that is, an array of     Γöé
  9863. Γöé          Γöé          Γöéflags packed in a BYTE.                 Γöé
  9864. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9865. Γöéfs        ΓöéUSHORT    ΓöéSHORT of flags, that is, an array of    Γöé
  9866. Γöé          Γöé          Γöéflags packed in a USHORT.               Γöé
  9867. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9868. Γöéfl        ΓöéULONG     ΓöéLONG of flags, that is, an array of     Γöé
  9869. Γöé          Γöé          Γöéflags packed in a ULONG. The three      Γöé
  9870. Γöé          Γöé          Γöépreceding types are used when more than Γöé
  9871. Γöé          Γöé          Γöéone flag is combined into a byte, SHORT Γöé
  9872. Γöé          Γöé          Γöéor LONG. Typically, the values are      Γöé
  9873. Γöé          Γöé          Γöécombined with the OR operator and are   Γöé
  9874. Γöé          Γöé          Γöéalways unsigned.                        Γöé
  9875. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9876. Γöér         ΓöéREAL      ΓöéReal number, single precision 32-bits.  Γöé
  9877. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9878. Γöérd        ΓöéDOUBLE    ΓöéReal number, double precision 64-bits.  Γöé
  9879. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9880. Γöépfn       Γöé          ΓöéPointer to a function.                  Γöé
  9881. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9882. Γöéx         Γöé          ΓöéX-coordinate.                           Γöé
  9883. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9884. Γöéy         Γöé          ΓöéY-coordinate.                           Γöé
  9885. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9886.  
  9887. The following standard prefixes are also defined: 
  9888.  
  9889. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9890. ΓöéPrefix    ΓöéDescription                                       Γöé
  9891. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9892. Γöép         Γöé32-bit pointer for an 80386 microprocessor. For   Γöé
  9893. Γöé          Γöéexample, pch is a pointer to a character.         Γöé
  9894. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9895. Γöéa         ΓöéArray. For example, ach is an array of characters.Γöé
  9896. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9897. Γöéi         ΓöéIndex to an array. For example, an ich is used to Γöé
  9898. Γöé          Γöéindex an ach.                                     Γöé
  9899. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9900. Γöéc         ΓöéCount. For example, cch is a count of characters. Γöé
  9901. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9902. Γöéd         ΓöéDelta or difference between instances of a type.  Γöé
  9903. Γöé          ΓöéFor example, dx is the difference between two     Γöé
  9904. Γöé          Γöévalues of x.                                      Γöé
  9905. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9906. Γöéh         ΓöéHandle. A value that uniquely identifies an objectΓöé
  9907. Γöé          Γöébut cannot directly be used to access it. For     Γöé
  9908. Γöé          Γöéexample, hps is a PS handle.                      Γöé
  9909. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9910. Γöémp        ΓöéMapping array. This prefix is always followed by  Γöé
  9911. Γöé          Γöétwo base types rather than one and represents the Γöé
  9912. Γöé          Γöémost general case of an array. Mathematically, an Γöé
  9913. Γöé          Γöéarray is a function mapping the index to the valueΓöé
  9914. Γöé          Γöéstored in the array. The prefix mp is an          Γöé
  9915. Γöé          Γöéabbreviation of map. In the construct mpab, a is  Γöé
  9916. Γöé          Γöéthe type of the index and b is the type of the    Γöé
  9917. Γöé          Γöévalue stored in the array. In most cases, the onlyΓöé
  9918. Γöé          Γöétype that is important is the type of the value.  Γöé
  9919. Γöé          ΓöéThe index is usually an integer with no other     Γöé
  9920. Γöé          Γöémeaning (the a prefix is used in this instance).  Γöé
  9921. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9922. Γöéoff       ΓöéOffset. Generally used as an offset within a data Γöé
  9923. Γöé          Γöéstructure. The actual address of the element      Γöé
  9924. Γöé          Γöéwithin the data structure is derived by adding an Γöé
  9925. Γöé          Γöéoffset to a pointer, which points to the beginningΓöé
  9926. Γöé          Γöéof the data structure. Normally, OFF is a byte    Γöé
  9927. Γöé          Γöéoffset. For example: pfoo = (FOO *)((BYTE         Γöé
  9928. Γöé          Γöé*)pfooBase + 0fff00)                              Γöé
  9929. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9930. Γöéid        ΓöéIdentifier. This is generally used for values thatΓöé
  9931. Γöé          Γöéidentify some object. Usually the association of  Γöé
  9932. Γöé          Γöéthe ID value and the object are established by theΓöé
  9933. Γöé          Γöéprogrammer. For example, all windows are          Γöé
  9934. Γöé          Γöéidentified by their Window ID, which can be set   Γöé
  9935. Γöé          Γöéand queried by the programmer.                    Γöé
  9936. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9937. Γöécmd       ΓöéCommand. Used for command values, typically as    Γöé
  9938. Γöé          Γöéfunction parameters.                              Γöé
  9939. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9940.  
  9941. Some parameters are used in pairs; the qualifiers that are used reflect the 
  9942. relationship between the two variables. For example: 
  9943.  
  9944. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9945. ΓöéParameter ΓöéDescription                                       Γöé
  9946. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9947. ΓöéFirst/LastΓöéFirst and last elements in a set. These are       Γöé
  9948. Γöé          Γöétypically used with indexes or pointers (pchFirst,Γöé
  9949. Γöé          ΓöépchLast). Both values represent valid values      Γöé
  9950. Γöé          Γöé(compare with Min/Max below). For all valid valuesΓöé
  9951. Γöé          Γöéof x: xFirst <= x <= xLast. The use of > with     Γöé
  9952. Γöé          ΓöéFirst or < with Last is almost always an          Γöé
  9953. Γöé          Γöé"off-by-one" error.                               Γöé
  9954. Γöé          ΓöéFor example, to determine whether an ich is withinΓöé
  9955. Γöé          ΓöéichFirst and ichLast:                 if (ich >= iΓöé
  9956. Γöé          Γöé                    ...                           Γöé
  9957. Γöé          Γöé            A typical loop:                       Γöé
  9958. Γöé          Γöé                for (ich = ichFirst; ich <= ichLasΓöé
  9959. Γöé          Γöé                    ...                           Γöé
  9960. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9961. ΓöéMin/Max   ΓöéSimilar to First/Last except that Max is not a    Γöé
  9962. Γöé          Γöévalid value in the set (Min is a valid value). ForΓöé
  9963. Γöé          Γöéall valid values of x in the set: xMin < = x <    Γöé
  9964. Γöé          ΓöéxMax. The use of > with Min or < = with Max is    Γöé
  9965. Γöé          Γöéalmost always an "off-by-one" error.              Γöé
  9966. Γöé          ΓöéFor example, to determine whether an ich is withinΓöé
  9967. Γöé          ΓöéichMin and ichMax:                 if (ich >= ichMΓöé
  9968. Γöé          Γöé                    ...                           Γöé
  9969. Γöé          Γöé            A typical loop:                       Γöé
  9970. Γöé          Γöé                for (ich = ichMin; ich < /* or != Γöé
  9971. Γöé          Γöé                    ...                           Γöé
  9972. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9973. Γöé          ΓöéThe current value (Cur) qualifier can be used withΓöé
  9974. Γöé          ΓöéMin and Max when Min or Max can change over time  Γöé
  9975. Γöé          Γöé(for example, pbStackMaxCur).                     Γöé
  9976. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9977. ΓöéOld/New   ΓöéOld and new. Typically used for values or states  Γöé
  9978. Γöé          Γöéwhen it is necessary to compare the old and new   Γöé
  9979. Γöé          Γöéstates of the value.                              Γöé
  9980. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9981. ΓöéNext/Prev ΓöéNext and previous. Typically used in situations inΓöé
  9982. Γöé          Γöéwhich items are being enumerated, such as with    Γöé
  9983. Γöé          Γöélinked lists.                                     Γöé
  9984. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9985. ΓöéSrc/Dst   ΓöéSource and destination. Typically used in transferΓöé
  9986. Γöé          Γöéoperations.                                       Γöé
  9987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9988. ΓöéT         ΓöéA temporary value.                                Γöé
  9989. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9990. ΓöéSave      ΓöéA temporary, saved value. Typically used when     Γöé
  9991. Γöé          Γöésaving and restoring some state.                  Γöé
  9992. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9993. ΓöéCur       ΓöéCurrent value.                                    Γöé
  9994. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9995.  
  9996. The base types and their prefixes are defined as follows: 
  9997.  
  9998. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9999. ΓöéData Type ΓöéPrefix                                            Γöé
  10000. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10001. ΓöéPSZ       Γöépsz                                               Γöé
  10002. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10003. ΓöéPCH       Γöépch                                               Γöé
  10004. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10005. ΓöéHAB       Γöéhab                                               Γöé
  10006. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10007. ΓöéHPS       Γöéhps                                               Γöé
  10008. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10009. ΓöéHDC       Γöéhdc                                               Γöé
  10010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10011. ΓöéHRGN      Γöéhrgn                                              Γöé
  10012. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10013. ΓöéHBITMAP   Γöéhbmp                                              Γöé
  10014. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10015. ΓöéPLONG     Γöépl                                                Γöé
  10016. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10017. ΓöéPOINTL    Γöéptl                                               Γöé
  10018. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10019. ΓöéPOINTL    Γöépt                                                Γöé
  10020. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10021. ΓöéRECTL     Γöércl                                               Γöé
  10022. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10023. ΓöéRECTL     Γöérc                                                Γöé
  10024. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10025. ΓöéHWND      Γöéhwnd                                              Γöé
  10026. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10027. ΓöéWPOINT    Γöéwpt                                               Γöé
  10028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10029. ΓöéWRECT     Γöéwrc                                               Γöé
  10030. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10031. ΓöéFIXED     Γöéfx                                                Γöé
  10032. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10033.  
  10034. Parameters for defined structures are the defined parameter names. For example: 
  10035.  
  10036. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10037.  
  10038.  
  10039.      AREADEFS struct
  10040.               {
  10041.                     defSet
  10042.                     fFlags
  10043.                     CodePage
  10044.               }AREADEFS
  10045.  
  10046. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10047.  
  10048. System-defined constants and flags are represented as two or more uppercase 
  10049. WORDs or mnemonic abbreviations separated by underscores. For example, 
  10050. SYS_CONSTANT and SYS_FLAG. 
  10051.  
  10052.  
  10053. ΓòÉΓòÉΓòÉ 10.1.1. Return Values ΓòÉΓòÉΓòÉ
  10054.  
  10055. Function-handling routines pass full 32-bit return codes back to the calling 
  10056. function. In MASM, the return code is passed in the EAX Register. 
  10057.  
  10058.  
  10059. ΓòÉΓòÉΓòÉ 10.1.2. Register Content Preservation ΓòÉΓòÉΓòÉ
  10060.  
  10061. Registers EAX, ECX, and EDX can be destroyed. All other registers must be 
  10062. preserved. 
  10063.  
  10064.  
  10065. ΓòÉΓòÉΓòÉ 10.1.3. Handles ΓòÉΓòÉΓòÉ
  10066.  
  10067. All handles and pointers are 32-bit values. 
  10068.  
  10069.  
  10070. ΓòÉΓòÉΓòÉ 10.1.4. Coordinates ΓòÉΓòÉΓòÉ
  10071.  
  10072. All coordinates are passed as signed 32-bit values unless stated otherwise. 
  10073. World, model, and presentation-page space coordinates are restricted to the 28 
  10074. low-order bits and lie within the range F8000000h through 07FFFFFFh. Device 
  10075. space coordinates are restricted to the 16 low-order bits and lie within the 
  10076. range FFFF0000h through 0000FFFFh. 
  10077.  
  10078.  
  10079. ΓòÉΓòÉΓòÉ 11. Data Types ΓòÉΓòÉΓòÉ
  10080.  
  10081. A description of each data type follows. 
  10082.  
  10083.  
  10084. ΓòÉΓòÉΓòÉ 11.1. ADAPTERINFO ΓòÉΓòÉΓòÉ
  10085.  
  10086. The ADAPTERINFO data structure receives information for the current video 
  10087. adapter. 
  10088.  
  10089. typedef struct _ADAPTERINFO {
  10090. ULONG    ulAdapterID;                                    /*  Specifies the adapter by ID. */
  10091. CHAR     szOEMString[MAX_OEM_STRING];  /*  Contains adapter information. */
  10092. CHAR     szDACString;                                    /*  Contains DAC information. */
  10093. CHAR     szRevision;                                     /*  Contains version information. */
  10094. ULONG    ulTotalMemory;                                  /*  Total video memory. */
  10095. ULONG    ulMMIOBaseAddress;                              /*  Base address for memory-mapped I/O registers. */
  10096. ULONG    ulPIOBaseAddress;                               /*  Base address for I/O ports. */
  10097. BYTE     bBusType;                                       /*  Type of bus (PCI, VLB, and so on.) */
  10098. BYTE     bEndian;                                        /*  Big Endian or little Endian. */
  10099. USHORT   usDeviceBusID;                                  /*  Reserved. */
  10100. USHORT   usVendorBusID;                                  /*  Reserved. */
  10101. USHORT   usSlotID;                                       /*  Reserved. */
  10102.  } ADAPTERINFO;
  10103.  
  10104. typedef ADAPTERINFO *FAR *PADAPTERINFO;
  10105.  
  10106.  
  10107. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulAdapterID ΓòÉΓòÉΓòÉ
  10108.  
  10109. ulAdapterID (ULONG) 
  10110.    Specifies the adapter by ID. 
  10111.  
  10112.  
  10113. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - szOEMString[MAX_OEM_STRING] ΓòÉΓòÉΓòÉ
  10114.  
  10115. szOEMString[MAX_OEM_STRING] (CHAR) 
  10116.    Contains adapter information. 
  10117.  
  10118.  
  10119. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - szDACString ΓòÉΓòÉΓòÉ
  10120.  
  10121. szDACString (CHAR) 
  10122.    Contains DAC information. 
  10123.  
  10124.  
  10125. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - szRevision ΓòÉΓòÉΓòÉ
  10126.  
  10127. szRevision (CHAR) 
  10128.    Contains version information. 
  10129.  
  10130.  
  10131. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulTotalMemory ΓòÉΓòÉΓòÉ
  10132.  
  10133. ulTotalMemory (ULONG) 
  10134.    Total video memory. 
  10135.  
  10136.  
  10137. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulMMIOBaseAddress ΓòÉΓòÉΓòÉ
  10138.  
  10139. ulMMIOBaseAddress (ULONG) 
  10140.    Base address for memory-mapped I/O registers. 
  10141.  
  10142.  
  10143. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulPIOBaseAddress ΓòÉΓòÉΓòÉ
  10144.  
  10145. ulPIOBaseAddress (ULONG) 
  10146.    Base address for I/O ports. 
  10147.  
  10148.  
  10149. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - bBusType ΓòÉΓòÉΓòÉ
  10150.  
  10151. bBusType (BYTE) 
  10152.    Type of bus (PCI, VLB, and so on.) 
  10153.  
  10154.    The valid values of this flag are as follows: 
  10155.  
  10156.      ISA_BUS        0 
  10157.  
  10158.      VLB_BUS        1 
  10159.  
  10160.      PCI_BUS        2 
  10161.  
  10162.      EISA_BUS       3 
  10163.  
  10164.      PCMCIA_BUS     4 
  10165.  
  10166.      MCA_BUS        5 
  10167.  
  10168.  
  10169. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - bEndian ΓòÉΓòÉΓòÉ
  10170.  
  10171. bEndian (BYTE) 
  10172.    Big Endian or little Endian. 
  10173.  
  10174.      LITTLE_ENDIAN  0 
  10175.  
  10176.      BIG_ENDIAN     1 
  10177.  
  10178.  
  10179. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - usDeviceBusID ΓòÉΓòÉΓòÉ
  10180.  
  10181. usDeviceBusID (USHORT) 
  10182.    Reserved. 
  10183.  
  10184.  
  10185. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - usVendorBusID ΓòÉΓòÉΓòÉ
  10186.  
  10187. usVendorBusID (USHORT) 
  10188.    Reserved. 
  10189.  
  10190.  
  10191. ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - usSlotID ΓòÉΓòÉΓòÉ
  10192.  
  10193. usSlotID (USHORT) 
  10194.    Reserved. 
  10195.  
  10196.  
  10197. ΓòÉΓòÉΓòÉ 11.2. BASECAPS ΓòÉΓòÉΓòÉ
  10198.  
  10199. Information provided by a GRADD to VMAN in the GHI_CMD_QUERYCAPS function. This 
  10200. information describes the hardware capabilities of the GRADD. 
  10201.  
  10202. typedef struct _BASECAPS {
  10203. ULONG   ulLength;   /*  Size of the BASECAPS data structure, in bytes. */
  10204. ULONG   ulHWFlags;  /*  Base caps flags. */
  10205.  } BASECAPS;
  10206.  
  10207. typedef BASECAPS *PBASECAPS;
  10208.  
  10209.  
  10210. ΓòÉΓòÉΓòÉ <hidden> BASECAPS Parameter - ulLength ΓòÉΓòÉΓòÉ
  10211.  
  10212. ulLength (ULONG) 
  10213.    Size of the BASECAPS data structure, in bytes. 
  10214.  
  10215.  
  10216. ΓòÉΓòÉΓòÉ <hidden> BASECAPS Parameter - ulHWFlags ΓòÉΓòÉΓòÉ
  10217.  
  10218. ulHWFlags (ULONG) 
  10219.    Base caps flags. 
  10220.  
  10221.  
  10222. ΓòÉΓòÉΓòÉ 11.3. BITBLTINFO ΓòÉΓòÉΓòÉ
  10223.  
  10224. BitBlt information structure, used for the GHI_CMD_BITBLT and VMI_CMD_BITBLT 
  10225. functions. 
  10226.  
  10227. typedef struct _BITBLTINFO {
  10228. ULONG       ulLength;       /*  Length of the BITBLTINFO data structure, in bytes. */
  10229. ULONG       ulBltFlags;     /*  Flags for rendering of rasterized data. */
  10230. ULONG       cBlits;         /*  Count of Blts to be performed. */
  10231. ULONG       ulROP;          /*  Raster operation. */
  10232. ULONG       ulMonoBackROP;  /*  Background mix if B_APPLY_BACK_ROP is set.  */
  10233. ULONG       ulSrcFGColor;   /*  Monochrome source Foreground color. */
  10234. ULONG       ulSrcBGColor;   /*  Monochrome source Background color and transparent color. */
  10235. ULONG       ulPatFGColor;   /*  Monochrome pattern Foreground color. */
  10236. ULONG       ulPatBGColor;   /*  Monochrome pattern Background color. */
  10237. PBYTE       abColors;       /*  Pointer to color translation table. */
  10238. PBMAPINFO   pSrcBmapInfo;   /*  Pointer to source bit map (BMAPINFO) */
  10239. PBMAPINFO   pDstBmapInfo;   /*  Pointer to destination bit map (BMAPINFO). */
  10240. PBMAPINFO   pPatBmapInfo;   /*  Pointer to pattern bit map (BMAPINFO). */
  10241. PPOINTL     aptlSrcOrg;     /*  Pointer to array of source origin POINTLs. */
  10242. PPOINTL     aptlPatOrg;     /*  Pointer to array of pattern origin POINTLs. */
  10243. PBLTRECT    abrDst;         /*  Pointer to array of Blt rects. */
  10244. PRECTL      prclSrcBounds;  /*  Pointer to source bounding rect of source Blts. */
  10245. PRECTL      prclDstBounds;  /*  Pointer to destination bounding rect of destination Blts. */
  10246.  } BITBLTINFO;
  10247.  
  10248. typedef BITBLTINFO *PBITBLTINFO;
  10249.  
  10250.  
  10251. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10252.  
  10253. ulLength (ULONG) 
  10254.    Length of the BITBLTINFO data structure, in bytes. 
  10255.  
  10256.  
  10257. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulBltFlags ΓòÉΓòÉΓòÉ
  10258.  
  10259. ulBltFlags (ULONG) 
  10260.    Flags for rendering of rasterized data. 
  10261.  
  10262.    Miscellaneous flags used by the graphics engine for rendering of rasterized 
  10263.    data: 
  10264.  
  10265.      BF_DEFAULT_STATE          Blt direction is left to right and top to 
  10266.                                bottom. 
  10267.  
  10268.      BF_DIR_RIGHT_LEFT         Blt direction is right to left. 
  10269.  
  10270.      BF_DIR_BOTTOM_TOP         Blt direction is bottom to top. 
  10271.  
  10272.      BF_ROP_INCL_SRC           ROP includes a source bit map. 
  10273.  
  10274.      BF_ROP_INCL_PAT           ROP includes a pattern bit map. 
  10275.  
  10276.      BF_SRC_TRANSPARENT        Source transparent involved. 
  10277.  
  10278.                                SRC will not change when SRC=BG_COLOR. 
  10279.  
  10280.      BF_DST_TRANSPARENT        Destination transparent involved. 
  10281.  
  10282.                                DST will not change when DST=BG_COLOR. 
  10283.  
  10284.      BF_PAT_TRANSPARENT        Pattern transparent involved. 
  10285.  
  10286.                                Pattern not involved when PAT=BG_COLOR. 
  10287.  
  10288.      BF_PAT_SOLID              Pattern is solid; all Foreground color. 
  10289.  
  10290.      BF_PAT_HOLLOW             Pattern is hollow (empty); no Foreground color. 
  10291.  
  10292.      BF_APPLY_BACK_ROP         Treat ROP as Foreground mix and MonoBackROP as 
  10293.                                Background mix. 
  10294.  
  10295.      BF_SRC_MONOINVERT         Zero (0) bits are Foreground on monochrome SRC 
  10296.                                bit map. 
  10297.  
  10298.      BF_PAT_MONOINVERT         Zero (0) bits are Foreground on monochrome PAT 
  10299.                                bit map. 
  10300.  
  10301.      BF_SR_BITS_EXTERNAL       Source bit map bits are in a nondevice-specific 
  10302.                                format. 
  10303.  
  10304.      BF_LAST_BLT               Defines last blit in a banded BitBlit. 
  10305.  
  10306.      BF_SRC_Y_FLIP             Source Y coordinates are inverted relative to 
  10307.                                device origin. 
  10308.  
  10309.  
  10310. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - cBlits ΓòÉΓòÉΓòÉ
  10311.  
  10312. cBlits (ULONG) 
  10313.    Count of Blts to be performed. 
  10314.  
  10315.  
  10316. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulROP ΓòÉΓòÉΓòÉ
  10317.  
  10318. ulROP (ULONG) 
  10319.    Raster operation. 
  10320.  
  10321.  
  10322. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulMonoBackROP ΓòÉΓòÉΓòÉ
  10323.  
  10324. ulMonoBackROP (ULONG) 
  10325.    Background mix if B_APPLY_BACK_ROP is set. 
  10326.  
  10327.  
  10328. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulSrcFGColor ΓòÉΓòÉΓòÉ
  10329.  
  10330. ulSrcFGColor (ULONG) 
  10331.    Monochrome source Foreground color. 
  10332.  
  10333.  
  10334. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulSrcBGColor ΓòÉΓòÉΓòÉ
  10335.  
  10336. ulSrcBGColor (ULONG) 
  10337.    Monochrome source Background color and transparent color. 
  10338.  
  10339.  
  10340. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulPatFGColor ΓòÉΓòÉΓòÉ
  10341.  
  10342. ulPatFGColor (ULONG) 
  10343.    Monochrome pattern Foreground color. 
  10344.  
  10345.  
  10346. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulPatBGColor ΓòÉΓòÉΓòÉ
  10347.  
  10348. ulPatBGColor (ULONG) 
  10349.    Monochrome pattern Background color. 
  10350.  
  10351.  
  10352. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - abColors ΓòÉΓòÉΓòÉ
  10353.  
  10354. abColors (PBYTE) 
  10355.    Pointer to color translation table. 
  10356.  
  10357.  
  10358. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - pSrcBmapInfo ΓòÉΓòÉΓòÉ
  10359.  
  10360. pSrcBmapInfo (PBMAPINFO) 
  10361.    Pointer to source bit map (BMAPINFO) 
  10362.  
  10363.  
  10364. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - pDstBmapInfo ΓòÉΓòÉΓòÉ
  10365.  
  10366. pDstBmapInfo (PBMAPINFO) 
  10367.    Pointer to destination bit map (BMAPINFO). 
  10368.  
  10369.  
  10370. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - pPatBmapInfo ΓòÉΓòÉΓòÉ
  10371.  
  10372. pPatBmapInfo (PBMAPINFO) 
  10373.    Pointer to pattern bit map (BMAPINFO). 
  10374.  
  10375.  
  10376. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - aptlSrcOrg ΓòÉΓòÉΓòÉ
  10377.  
  10378. aptlSrcOrg (PPOINTL) 
  10379.    Pointer to array of source origin POINTLs. 
  10380.  
  10381.  
  10382. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - aptlPatOrg ΓòÉΓòÉΓòÉ
  10383.  
  10384. aptlPatOrg (PPOINTL) 
  10385.    Pointer to array of pattern origin POINTLs. 
  10386.  
  10387.  
  10388. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - abrDst ΓòÉΓòÉΓòÉ
  10389.  
  10390. abrDst (PBLTRECT) 
  10391.    Pointer to array of Blt rects. 
  10392.  
  10393.  
  10394. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - prclSrcBounds ΓòÉΓòÉΓòÉ
  10395.  
  10396. prclSrcBounds (PRECTL) 
  10397.    Pointer to source bounding rect of source Blts. 
  10398.  
  10399.  
  10400. ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - prclDstBounds ΓòÉΓòÉΓòÉ
  10401.  
  10402. prclDstBounds (PRECTL) 
  10403.    Pointer to destination bounding rect of destination Blts. 
  10404.  
  10405.  
  10406. ΓòÉΓòÉΓòÉ 11.4. BMAPINFO ΓòÉΓòÉΓòÉ
  10407.  
  10408. Device-dependent bit map information structure. 
  10409.  
  10410. typedef struct _BMAPINFO {
  10411. ULONG   ulLength;        /*  Length of the BMAPINFO data structure, in bytes. */
  10412. ULONG   ulType;          /*  Description of the Blt. */
  10413. ULONG   ulWidth;         /*  Width in pels of the bit map. */
  10414. ULONG   ulHeight;        /*  Height in pels of the bit map. */
  10415. ULONG   ulBpp;           /*  Number of bits per pel/color depth. */
  10416. ULONG   ulBytesPerLine;  /*  Number of aligned bytes per line. */
  10417. PBYTE   pBits;           /*  Pointer to bit-map bits. */
  10418.  } BMAPINFO;
  10419.  
  10420. typedef BMAPINFO *PBMAPINFO;
  10421.  
  10422.  
  10423. ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10424.  
  10425. ulLength (ULONG) 
  10426.    Length of the BMAPINFO data structure, in bytes. 
  10427.  
  10428.  
  10429. ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulType ΓòÉΓòÉΓòÉ
  10430.  
  10431. ulType (ULONG) 
  10432.    Description of the Blt. 
  10433.  
  10434.      BMAP_VRAM             Bit map is in video memory. 
  10435.      BMAP_MEMORY           Bit map is in system memory. 
  10436.      BMAP_VERTICAL_SCAN    Scan lines are in a vertical format instead of the 
  10437.                            default horizontal format. 
  10438.      BMAP_FONT             BitBlit is a set of font character glyphs. 
  10439.  
  10440.  
  10441. ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulWidth ΓòÉΓòÉΓòÉ
  10442.  
  10443. ulWidth (ULONG) 
  10444.    Width in pels of the bit map. 
  10445.  
  10446.  
  10447. ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulHeight ΓòÉΓòÉΓòÉ
  10448.  
  10449. ulHeight (ULONG) 
  10450.    Height in pels of the bit map. 
  10451.  
  10452.  
  10453. ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulBpp ΓòÉΓòÉΓòÉ
  10454.  
  10455. ulBpp (ULONG) 
  10456.    Number of bits per pel/color depth. 
  10457.  
  10458.  
  10459. ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulBytesPerLine ΓòÉΓòÉΓòÉ
  10460.  
  10461. ulBytesPerLine (ULONG) 
  10462.    Number of aligned bytes per line. 
  10463.  
  10464.  
  10465. ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - pBits ΓòÉΓòÉΓòÉ
  10466.  
  10467. pBits (PBYTE) 
  10468.    Pointer to bit-map bits. 
  10469.  
  10470.  
  10471. ΓòÉΓòÉΓòÉ 11.5. BLTRECT ΓòÉΓòÉΓòÉ
  10472.  
  10473. Destination rectangle for a bitblt operation. 
  10474.  
  10475. typedef struct _BLTRECT {
  10476. ULONG   ulXOrg;  /*  X origin of the destination Blt. */
  10477. ULONG   ulYOrg;  /*  Y origin of the destination Blt. */
  10478. ULONG   ulXExt;  /*  X extent of the BitBlt. */
  10479. ULONG   ulYExt;  /*  Y extent of the BitBlt. */
  10480.  } BLTRECT;
  10481.  
  10482. typedef BLTRECT *PBLTRECT;
  10483.  
  10484.  
  10485. ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulXOrg ΓòÉΓòÉΓòÉ
  10486.  
  10487. ulXOrg (ULONG) 
  10488.    X origin of the destination Blt. 
  10489.  
  10490.  
  10491. ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulYOrg ΓòÉΓòÉΓòÉ
  10492.  
  10493. ulYOrg (ULONG) 
  10494.    Y origin of the destination Blt. 
  10495.  
  10496.  
  10497. ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulXExt ΓòÉΓòÉΓòÉ
  10498.  
  10499. ulXExt (ULONG) 
  10500.    X extent of the BitBlt. 
  10501.  
  10502.  
  10503. ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulYExt ΓòÉΓòÉΓòÉ
  10504.  
  10505. ulYExt (ULONG) 
  10506.    Y extent of the BitBlt. 
  10507.  
  10508.  
  10509. ΓòÉΓòÉΓòÉ 11.6. CAPSINFO ΓòÉΓòÉΓòÉ
  10510.  
  10511. GRADD capability information. 
  10512.  
  10513. typedef struct _CAPSINFO {
  10514. ULONG   ulLength;            /*  Size of the CAPSINFO data structure, in bytes. */
  10515. PSZ     pszFunctionClassID;  /*  Name describing the function set. */
  10516. PVOID   pCaps;               /*  Function-set-specific caps. */
  10517.  } CAPSINFO;
  10518.  
  10519. typedef CAPSINFO *PCAPSINFO;
  10520.  
  10521.  
  10522. ΓòÉΓòÉΓòÉ <hidden> CAPSINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10523.  
  10524. ulLength (ULONG) 
  10525.    Size of the CAPSINFO data structure, in bytes. 
  10526.  
  10527.  
  10528. ΓòÉΓòÉΓòÉ <hidden> CAPSINFO Parameter - pszFunctionClassID ΓòÉΓòÉΓòÉ
  10529.  
  10530. pszFunctionClassID (PSZ) 
  10531.    Name describing the function set. 
  10532.  
  10533.  
  10534. ΓòÉΓòÉΓòÉ <hidden> CAPSINFO Parameter - pCaps ΓòÉΓòÉΓòÉ
  10535.  
  10536. pCaps (PVOID) 
  10537.    Function-set-specific caps. 
  10538.  
  10539.    The pCaps field varies according to the class of function that the GRADD is 
  10540.    supporting. For the "base function" class ID, pCaps points to a BASECAPS 
  10541.    data structure. 
  10542.  
  10543.  
  10544. ΓòÉΓòÉΓòÉ 11.7. CHAININFO ΓòÉΓòÉΓòÉ
  10545.  
  10546. Information returned to callers of the VMI_CMD_QUERYCHAININFO function. 
  10547.  
  10548. typedef struct _CHAININFO {
  10549. CID          cid;             /*  GRADD chain ID. */
  10550. PSZ          pszChainName;    /*  GRADD chain name. */
  10551. PFNHWENTRY   pChainHWEntry;   /*  Entry point for this chain. */
  10552. PGRADDINFO   pGraddList;      /*  List of GRADDs in this chain. */
  10553. CHAININFO    pNextChainInfo;  /*  Pointer to next GRADD in this chain. */
  10554.  } CHAININFO;
  10555.  
  10556. typedef CHAININFO *PCHAININFO;
  10557.  
  10558.  
  10559. ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - cid ΓòÉΓòÉΓòÉ
  10560.  
  10561. cid (CID) 
  10562.    GRADD chain ID. 
  10563.  
  10564.  
  10565. ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pszChainName ΓòÉΓòÉΓòÉ
  10566.  
  10567. pszChainName (PSZ) 
  10568.    GRADD chain name. 
  10569.  
  10570.  
  10571. ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pChainHWEntry ΓòÉΓòÉΓòÉ
  10572.  
  10573. pChainHWEntry (PFNHWENTRY) 
  10574.    Entry point for this chain. 
  10575.  
  10576.  
  10577. ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pGraddList ΓòÉΓòÉΓòÉ
  10578.  
  10579. pGraddList (PGRADDINFO) 
  10580.    List of GRADDs in this chain. 
  10581.  
  10582.  
  10583. ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pNextChainInfo ΓòÉΓòÉΓòÉ
  10584.  
  10585. pNextChainInfo (CHAININFO) 
  10586.    Pointer to next GRADD in this chain. 
  10587.  
  10588.  
  10589. ΓòÉΓòÉΓòÉ 11.8. CLUTDATA ΓòÉΓòÉΓòÉ
  10590.  
  10591. The CLUTDATA data structure receives information for the number of RGB array 
  10592. entries. 
  10593.  
  10594. typedef struct _CLUTDATA {
  10595. ULONG     ulRGBCount;                 /*  Number of aRGB entries that follow. */
  10596. ULONG     ulRGBStart;                 /*  Start index for RGB triplets. */
  10597. SVGARGB   aRGB[1];  /*  Start of SVGARGB; one entry is allocated. */
  10598.  } CLUTDATA;
  10599.  
  10600. typedef CLUTDATA *FAR *PCLUTDATA;
  10601.  
  10602.  
  10603. ΓòÉΓòÉΓòÉ <hidden> CLUTDATA Parameter - ulRGBCount ΓòÉΓòÉΓòÉ
  10604.  
  10605. ulRGBCount (ULONG) 
  10606.    Number of aRGB entries that follow. 
  10607.  
  10608.  
  10609. ΓòÉΓòÉΓòÉ <hidden> CLUTDATA Parameter - ulRGBStart ΓòÉΓòÉΓòÉ
  10610.  
  10611. ulRGBStart (ULONG) 
  10612.    Start index for RGB triplets. 
  10613.  
  10614.  
  10615. ΓòÉΓòÉΓòÉ <hidden> CLUTDATA Parameter - aRGB[1] ΓòÉΓòÉΓòÉ
  10616.  
  10617. aRGB[1] (SVGARGB) 
  10618.    Start of SVGARGB; one entry is allocated. 
  10619.  
  10620.  
  10621. ΓòÉΓòÉΓòÉ 11.9. CODECINFO ΓòÉΓòÉΓòÉ
  10622.  
  10623. Determines whether data is to be compressed or decompressed. 
  10624.  
  10625. typedef struct _CODECINFO {
  10626. ULONG    ulLength;      /*  Size of the CODECINFO data structure, in bytes. */
  10627. FOURCC   fccCodecType;  /*  Describes compression type; 'RAW' if uncompressed.  */
  10628. ULONG    ulCodecCaps;   /*  Flag indicating CODEC capabilities. */
  10629.  } CODECINFO;
  10630.  
  10631. typedef CODECINFO *PCODECINFO;
  10632.  
  10633.  
  10634. ΓòÉΓòÉΓòÉ <hidden> CODECINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10635.  
  10636. ulLength (ULONG) 
  10637.    Size of the CODECINFO data structure, in bytes. 
  10638.  
  10639.  
  10640. ΓòÉΓòÉΓòÉ <hidden> CODECINFO Parameter - fccCodecType ΓòÉΓòÉΓòÉ
  10641.  
  10642. fccCodecType (FOURCC) 
  10643.    Describes compression type; 'RAW' if uncompressed. 
  10644.  
  10645.    The FOURCC flags have the following values: 
  10646.  
  10647.      CODEC_ULTIMOTION         "ULTI" 
  10648.  
  10649.      CODEC_INDEO21            "RT21" 
  10650.  
  10651.      CODEC_INDEO31            "IV31" 
  10652.  
  10653.      CODEC_MPEG1              "MPG1" 
  10654.  
  10655.      CODEC_MPEG2              "MPG2" 
  10656.  
  10657.      CODEC_MJPEG              "MJPG" 
  10658.  
  10659.  
  10660. ΓòÉΓòÉΓòÉ <hidden> CODECINFO Parameter - ulCodecCaps ΓòÉΓòÉΓòÉ
  10661.  
  10662. ulCodecCaps (ULONG) 
  10663.    Flag indicating CODEC capabilities. 
  10664.  
  10665.    The following values are valid: 
  10666.  
  10667.      CODEC_ACCEL_STRETCHBLT          0x0002; hardware stretch 
  10668.  
  10669.      CODEC_ACCEL_BLTCOPROC           0x0002; hardware Blt 
  10670.  
  10671.      CODEC_ACCEL_DECOMP              0x0004; has hardware decompression 
  10672.  
  10673.      CODEC_ACCEL_COMP                0x0008; has hardware compression 
  10674.  
  10675.  
  10676. ΓòÉΓòÉΓòÉ 11.10. COLORINFO ΓòÉΓòÉΓòÉ
  10677.  
  10678. Color formats for source and destination data, organized in order of preference 
  10679. from the driver's perspective. This data structure is required in any driver 
  10680. supporting EnDIVE. 
  10681.  
  10682. typedef struct _COLORINFO {
  10683. ULONG    ulLength;          /*  Size of the COLORINFO data structure, in bytes. */
  10684. FOURCC   fccColorEncoding;  /*  Field containing a name for the color space. */
  10685.  } COLORINFO;
  10686.  
  10687. typedef COLORINFO *PCOLORINFO;
  10688.  
  10689.  
  10690. ΓòÉΓòÉΓòÉ <hidden> COLORINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10691.  
  10692. ulLength (ULONG) 
  10693.    Size of the COLORINFO data structure, in bytes. 
  10694.  
  10695.  
  10696. ΓòÉΓòÉΓòÉ <hidden> COLORINFO Parameter - fccColorEncoding ΓòÉΓòÉΓòÉ
  10697.  
  10698. fccColorEncoding (FOURCC) 
  10699.    Field containing a name for the color space. 
  10700.  
  10701.    The FOURCC represents a name (for example, RGB8, Y24, and so on). The bits 
  10702.    per pixel and data layout of the color space is implied by the name. 
  10703.  
  10704.    This field can have the following values: 
  10705.  
  10706.      FOURCC(ch0,ch1,ch2,ch3) 
  10707.  
  10708.  
  10709.                                    ((ULONG)(BYTE)(ch0) | ((ULONG)(BYTE)(ch1) <<8) | \
  10710.                                    ((ULONG)(BYTE)(CH2)<<16) | ((ULONG)(BYTE)(CH3)<<24))
  10711.  
  10712.      FOURCC_LUT8 FOURCC('L','U','T','8') 8-bit palettized color space 
  10713.  
  10714.      FOURCC_R565 FOURCC('R','5','6','5') RGB 565 
  10715.  
  10716.      FOURCC_R555 FOURCC('R','5','5','5') RGB 555 
  10717.  
  10718.      FOURCC_R666 FOURCC('R','6','6','6') RGB 666 
  10719.  
  10720.      FOURCC_R664 FOURCC('R','6','6','4') RGB 664 
  10721.  
  10722.      FOURCC_RGB3 FOURCC('R','G','B','3') RGB 24 in 3 bytes 
  10723.  
  10724.      FOURCC_BGR3 FOURCC('B','G','R','3') BGR 24 in 3 bytes 
  10725.  
  10726.      FOURCC_RGB4 FOURCC('R','G','B','4') RGB 24 in 4 bytes 
  10727.  
  10728.      FOURCC_BGR4 FOURCC('B','G','R','4') BGR 24 in 4 bytes 
  10729.  
  10730.      FOURCC_Y888 FOURCC('Y','8','8','8') YUV 24 
  10731.  
  10732.      FOURCC_Y411 FOURCC('Y','4','1','1') YUV 411 interleaved 4 x 1 subsampled 
  10733.  
  10734.      FOURCC_Y422 FOURCC('Y','4','2','2') YUV 422 (CCIR601) 
  10735.  
  10736.      FOURCC_YUV9 FOURCC('Y','U','V','9') YUV9 
  10737.  
  10738.      FOURCC_Y2X2 FOURCC('Y','2','X','2') YUV 2 by 2 subsampled multiplane 
  10739.  
  10740.      FOURCC_Y4X4 FOURCC('Y','4','X','4') YUV 4 by 4 subsampled multiplane 
  10741.  
  10742.  
  10743. ΓòÉΓòÉΓòÉ 11.11. CUSTPALINFO ΓòÉΓòÉΓòÉ
  10744.  
  10745. Custom palette information. 
  10746.  
  10747. typedef struct _CUSTPALINFO {
  10748. ULONG   ulLength;      /*  Size of the CUSTPALINFO data structure, in bytes. */
  10749. ULONG   fFlags;        /*  Palette flag. */
  10750. ULONG   ulStartIndex;  /*  Starting palette index. */
  10751. ULONG   ulNumEntries;  /*  Number of palette slots to query or set. */
  10752. PRGB2   pRGBs;         /*  Pointer to the array of RGB values. */
  10753.  } CUSTPALINFO;
  10754.  
  10755. typedef CUSTPALINFO *PCUSTPALINFO;
  10756.  
  10757.  
  10758. ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10759.  
  10760. ulLength (ULONG) 
  10761.    Size of the CUSTPALINFO data structure, in bytes. 
  10762.  
  10763.  
  10764. ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - fFlags ΓòÉΓòÉΓòÉ
  10765.  
  10766. fFlags (ULONG) 
  10767.    Palette flag. 
  10768.  
  10769.    Not used at this time. 
  10770.  
  10771.  
  10772. ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - ulStartIndex ΓòÉΓòÉΓòÉ
  10773.  
  10774. ulStartIndex (ULONG) 
  10775.    Starting palette index. 
  10776.  
  10777.  
  10778. ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - ulNumEntries ΓòÉΓòÉΓòÉ
  10779.  
  10780. ulNumEntries (ULONG) 
  10781.    Number of palette slots to query or set. 
  10782.  
  10783.  
  10784. ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - pRGBs ΓòÉΓòÉΓòÉ
  10785.  
  10786. pRGBs (PRGB2) 
  10787.    Pointer to the array of RGB values. 
  10788.  
  10789.  
  10790. ΓòÉΓòÉΓòÉ 11.12. FBINFO ΓòÉΓòÉΓòÉ
  10791.  
  10792. Information on frame buffer characteristics. 
  10793.  
  10794. typedef struct _FBINFO {
  10795. ULONG   ulLength;          /*  Length of FBINFO data structure, in bytes. */
  10796. ULONG   ulFlags;           /*  Specifies the capabilities supported. */
  10797. ULONG   ulBPP;             /*  Screen bits per pel. */
  10798. ULONG   ulXres;            /*  Number of screen X pels. */
  10799. ULONG   ulYres;            /*  Number of screen Y pels. */
  10800. ULONG   ulScanLineBytes;   /*  Number of bytes per scanline. */
  10801. ULONG   fccColorEncoding;  /*  Screen color encoding. */
  10802. ULONG   ulENDIVEDrivers;   /*  Number of EnDIVE drivers installed under GRADD architecture.  */
  10803.  } FBINFO;
  10804.  
  10805. typedef FBINFO *PFBINFO;
  10806.  
  10807.  
  10808. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10809.  
  10810. ulLength (ULONG) 
  10811.    Length of FBINFO data structure, in bytes. 
  10812.  
  10813.  
  10814. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulFlags ΓòÉΓòÉΓòÉ
  10815.  
  10816. ulFlags (ULONG) 
  10817.    Specifies the capabilities supported. 
  10818.  
  10819.    This flag has the following value: 
  10820.  
  10821.      FB_SUPPORTSVRAMALLOC     0x0010; supports allocation of on-card memory 
  10822.  
  10823.  
  10824. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulBPP ΓòÉΓòÉΓòÉ
  10825.  
  10826. ulBPP (ULONG) 
  10827.    Screen bits per pel. 
  10828.  
  10829.    This value may be 32 for some 24-bit color adapters. 
  10830.  
  10831.  
  10832. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulXres ΓòÉΓòÉΓòÉ
  10833.  
  10834. ulXres (ULONG) 
  10835.    Number of screen X pels. 
  10836.  
  10837.  
  10838. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulYres ΓòÉΓòÉΓòÉ
  10839.  
  10840. ulYres (ULONG) 
  10841.    Number of screen Y pels. 
  10842.  
  10843.  
  10844. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulScanLineBytes ΓòÉΓòÉΓòÉ
  10845.  
  10846. ulScanLineBytes (ULONG) 
  10847.    Number of bytes per scanline. 
  10848.  
  10849.  
  10850. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - fccColorEncoding ΓòÉΓòÉΓòÉ
  10851.  
  10852. fccColorEncoding (ULONG) 
  10853.    Screen color encoding. 
  10854.  
  10855.  
  10856. ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulENDIVEDrivers ΓòÉΓòÉΓòÉ
  10857.  
  10858. ulENDIVEDrivers (ULONG) 
  10859.    Number of EnDIVE drivers installed under GRADD architecture. 
  10860.  
  10861.  
  10862. ΓòÉΓòÉΓòÉ 11.13. FONTDATA ΓòÉΓòÉΓòÉ
  10863.  
  10864. The FONTDATA data structure contains font and character information. 
  10865.  
  10866. typedef struct _FONTDATA {
  10867. ULONG   ulCharCount;                     /*  Number of characters in the font. */
  10868. ULONG   ulFontHeight;                    /*  Number of scan lines per character. */
  10869. ULONG   ulFontWidth;                     /*  Number of columns per character. */
  10870. BYTE    bFontData[1];  /*  ulCharCount*ulFontHeight entries. */
  10871.  } FONTDATA;
  10872.  
  10873. typedef FONTDATA *FAR *PFONTDATA;
  10874.  
  10875.  
  10876. ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - ulCharCount ΓòÉΓòÉΓòÉ
  10877.  
  10878. ulCharCount (ULONG) 
  10879.    Number of characters in the font. 
  10880.  
  10881.  
  10882. ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - ulFontHeight ΓòÉΓòÉΓòÉ
  10883.  
  10884. ulFontHeight (ULONG) 
  10885.    Number of scan lines per character. 
  10886.  
  10887.  
  10888. ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - ulFontWidth ΓòÉΓòÉΓòÉ
  10889.  
  10890. ulFontWidth (ULONG) 
  10891.    Number of columns per character. 
  10892.  
  10893.  
  10894. ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - bFontData[1] ΓòÉΓòÉΓòÉ
  10895.  
  10896. bFontData[1] (BYTE) 
  10897.    ulCharCount*ulFontHeight entries. 
  10898.  
  10899.  
  10900. ΓòÉΓòÉΓòÉ 11.14. GDDINITIN ΓòÉΓòÉΓòÉ
  10901.  
  10902. Information provided to the GRADD in the GHI_CMD_INIT function. 
  10903.  
  10904. typedef struct _GDDINITIN {
  10905. ULONG        ulLength;           /*  Length of the GDDINITIN data structure, in bytes. */
  10906. PFNHWENTRY   pfnChainedHWEntry;  /*  Entry of previous GRADD in chain. */
  10907.  } GDDINITIN;
  10908.  
  10909. typedef GDDINITIN *PGDDINITIN;
  10910.  
  10911.  
  10912. ΓòÉΓòÉΓòÉ <hidden> GDDINITIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  10913.  
  10914. ulLength (ULONG) 
  10915.    Length of the GDDINITIN data structure, in bytes. 
  10916.  
  10917.  
  10918. ΓòÉΓòÉΓòÉ <hidden> GDDINITIN Parameter - pfnChainedHWEntry ΓòÉΓòÉΓòÉ
  10919.  
  10920. pfnChainedHWEntry (PFNHWENTRY) 
  10921.    Entry of previous GRADD in chain. 
  10922.  
  10923.  
  10924. ΓòÉΓòÉΓòÉ 11.15. GDDINITOUT ΓòÉΓòÉΓòÉ
  10925.  
  10926. Information returned by the GRADD to the caller of the GHI_CMD_INIT function. 
  10927.  
  10928. typedef struct _GDDINITOUT {
  10929. ULONG   ulLength;          /*  Length of the GDDINITOUT data structure, in bytes. */
  10930. ULONG   cFunctionClasses;  /*  Number of function classes supported. */
  10931.  } GDDINITOUT;
  10932.  
  10933. typedef GDDINITOUT *PGDDINITOUT;
  10934.  
  10935.  
  10936. ΓòÉΓòÉΓòÉ <hidden> GDDINITOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
  10937.  
  10938. ulLength (ULONG) 
  10939.    Length of the GDDINITOUT data structure, in bytes. 
  10940.  
  10941.  
  10942. ΓòÉΓòÉΓòÉ <hidden> GDDINITOUT Parameter - cFunctionClasses ΓòÉΓòÉΓòÉ
  10943.  
  10944. cFunctionClasses (ULONG) 
  10945.    Number of function classes supported. 
  10946.  
  10947.    In most cases, this value will be equal to one (1). A GRADD can, however, 
  10948.    return a zero (0). This is typically done by filter GRADDs that do not want 
  10949.    to be entered in the CHAININFO/GRADDINFO information returned to the 
  10950.    translation layer via the VMI_CMD_QUERYCHAININFO function. A GRADD can 
  10951.    include built-in extensions by returning a value greater than one (1). 
  10952.  
  10953.  
  10954. ΓòÉΓòÉΓòÉ 11.16. GDDMODEINFO ΓòÉΓòÉΓòÉ
  10955.  
  10956. Mode-specific information provided by the GRADD. 
  10957.  
  10958. typedef struct _GDDMODEINFO {
  10959. ULONG   ulLength;           /*  Size of the GDDMODEINFO data structure, in bytes. */
  10960. ULONG   ulModeId;           /*  ID used to make SETMODE request. */
  10961. ULONG   ulBpp;              /*  Number of colors (bpp). */
  10962. ULONG   ulHorizResolution;  /*  Number of horizontal pels. */
  10963. ULONG   ulVertResolution;   /*  Number of vertical scan lines. */
  10964. ULONG   ulRefreshRate;      /*  Refresh rate in Hz. */
  10965. PBYTE   pbVRAMPhys;         /*  Physical address of VRAM. */
  10966. ULONG   ulApertureSize;     /*  Size of VRAM, in bytes. */
  10967. ULONG   ulScanLineSize;     /*  Size of one scan line, in bytes. */
  10968.  } GDDMODEINFO;
  10969.  
  10970. typedef GDDMODEINFO *PGDDMODEINFO;
  10971.  
  10972.  
  10973. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  10974.  
  10975. ulLength (ULONG) 
  10976.    Size of the GDDMODEINFO data structure, in bytes. 
  10977.  
  10978.  
  10979. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulModeId ΓòÉΓòÉΓòÉ
  10980.  
  10981. ulModeId (ULONG) 
  10982.    ID used to make SETMODE request. 
  10983.  
  10984.  
  10985. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulBpp ΓòÉΓòÉΓòÉ
  10986.  
  10987. ulBpp (ULONG) 
  10988.    Number of colors (bpp). 
  10989.  
  10990.  
  10991. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulHorizResolution ΓòÉΓòÉΓòÉ
  10992.  
  10993. ulHorizResolution (ULONG) 
  10994.    Number of horizontal pels. 
  10995.  
  10996.  
  10997. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulVertResolution ΓòÉΓòÉΓòÉ
  10998.  
  10999. ulVertResolution (ULONG) 
  11000.    Number of vertical scan lines. 
  11001.  
  11002.  
  11003. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulRefreshRate ΓòÉΓòÉΓòÉ
  11004.  
  11005. ulRefreshRate (ULONG) 
  11006.    Refresh rate in Hz. 
  11007.  
  11008.    This value is zero (0) if Hz not available. 
  11009.  
  11010.  
  11011. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - pbVRAMPhys ΓòÉΓòÉΓòÉ
  11012.  
  11013. pbVRAMPhys (PBYTE) 
  11014.    Physical address of VRAM. 
  11015.  
  11016.  
  11017. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulApertureSize ΓòÉΓòÉΓòÉ
  11018.  
  11019. ulApertureSize (ULONG) 
  11020.    Size of VRAM, in bytes. 
  11021.  
  11022.  
  11023. ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulScanLineSize ΓòÉΓòÉΓòÉ
  11024.  
  11025. ulScanLineSize (ULONG) 
  11026.    Size of one scan line, in bytes. 
  11027.  
  11028.  
  11029. ΓòÉΓòÉΓòÉ 11.17. GRADDINFO ΓòÉΓòÉΓòÉ
  11030.  
  11031. Information describing an individual GRADD. 
  11032.  
  11033. typedef struct _GRADDINFO {
  11034. GID           gid;             /*  ID of the GRADD. */
  11035. PSZ           pszGraddName;    /*  Name of this GRADD. */
  11036. PFNHWENTRY    pGraddEntry;     /*  Pointer to HWENTRY for this GRADD. */
  11037. PFNHWENTRY    pChainEntry;     /*  Pointer to HWENTRY for this GRADD chain. */
  11038. ULONG         cModes;          /*  Count of available graphics modes. */
  11039. GDDMODEINFO   pModeInfo;       /*  Pointer to GDDMODEINFO data structure. */
  11040. CAPSINFO      pCapsInfo;       /*  Pointer to CAPSINFO data structure. */
  11041. GRADDINFO     pNextGraddInfo;  /*  Pointer to next GRADDINFO data structure. */
  11042.  } GRADDINFO;
  11043.  
  11044. typedef GRADDINFO *PGRADDINFO;
  11045.  
  11046.  
  11047. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - gid ΓòÉΓòÉΓòÉ
  11048.  
  11049. gid (GID) 
  11050.    ID of the GRADD. 
  11051.  
  11052.  
  11053. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pszGraddName ΓòÉΓòÉΓòÉ
  11054.  
  11055. pszGraddName (PSZ) 
  11056.    Name of this GRADD. 
  11057.  
  11058.  
  11059. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pGraddEntry ΓòÉΓòÉΓòÉ
  11060.  
  11061. pGraddEntry (PFNHWENTRY) 
  11062.    Pointer to HWENTRY for this GRADD. 
  11063.  
  11064.  
  11065. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pChainEntry ΓòÉΓòÉΓòÉ
  11066.  
  11067. pChainEntry (PFNHWENTRY) 
  11068.    Pointer to HWENTRY for this GRADD chain. 
  11069.  
  11070.  
  11071. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - cModes ΓòÉΓòÉΓòÉ
  11072.  
  11073. cModes (ULONG) 
  11074.    Count of available graphics modes. 
  11075.  
  11076.    This is the count of the available graphics modes supported by this GRADD. 
  11077.  
  11078.  
  11079. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pModeInfo ΓòÉΓòÉΓòÉ
  11080.  
  11081. pModeInfo (GDDMODEINFO) 
  11082.    Pointer to GDDMODEINFO data structure. 
  11083.  
  11084.  
  11085. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pCapsInfo ΓòÉΓòÉΓòÉ
  11086.  
  11087. pCapsInfo (CAPSINFO) 
  11088.    Pointer to CAPSINFO data structure. 
  11089.  
  11090.  
  11091. ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pNextGraddInfo ΓòÉΓòÉΓòÉ
  11092.  
  11093. pNextGraddInfo (GRADDINFO) 
  11094.    Pointer to next GRADDINFO data structure. 
  11095.  
  11096.    This points to the next data structure in this GRADD chain. 
  11097.  
  11098.  
  11099. ΓòÉΓòÉΓòÉ 11.18. HWEVENTIN ΓòÉΓòÉΓòÉ
  11100.  
  11101. Input data to the GHI_CMD_EVENT function. 
  11102.  
  11103. typedef struct _HWEVENTIN {
  11104. ULONG   ulLength;    /*  Size of the HWEVENTIN data structure, in bytes. */
  11105. ULONG   ulEvent;     /*  Flag indicating type of event. */
  11106. ULONG   pEventData;  /*  Pointer to event-specific data. */
  11107.  } HWEVENTIN;
  11108.  
  11109. typedef HWEVENTIN *PHWEVENTIN;
  11110.  
  11111.  
  11112. ΓòÉΓòÉΓòÉ <hidden> HWEVENTIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  11113.  
  11114. ulLength (ULONG) 
  11115.    Size of the HWEVENTIN data structure, in bytes. 
  11116.  
  11117.  
  11118. ΓòÉΓòÉΓòÉ <hidden> HWEVENTIN Parameter - ulEvent ΓòÉΓòÉΓòÉ
  11119.  
  11120. ulEvent (ULONG) 
  11121.    Flag indicating type of event. 
  11122.  
  11123.    Valid values are: 
  11124.  
  11125.      EVENT_FOREGROUND 
  11126.      EVENT_BACKGROUND 
  11127.  
  11128.  
  11129. ΓòÉΓòÉΓòÉ <hidden> HWEVENTIN Parameter - pEventData ΓòÉΓòÉΓòÉ
  11130.  
  11131. pEventData (ULONG) 
  11132.    Pointer to event-specific data. 
  11133.  
  11134.  
  11135. ΓòÉΓòÉΓòÉ 11.19. HWEXTENSIONIN ΓòÉΓòÉΓòÉ
  11136.  
  11137. Input data to the GHI_CMD_EXTENSION function. 
  11138.  
  11139. typedef struct _HWEXTENSIONIN {
  11140. ULONG    ulLength;         /*  Size of the HWEXTENSIONIN data structure, in bytes. */
  11141. ULONG    cScrChangeRects;  /*  Count of screen rectangles affected by HWEXTENSIONIN. */
  11142. PRECTL   arectlScreen;     /*  Array of screen rectangles affected by HWEXTENSIONIN. */
  11143. ULONG    ulXFlags;         /*  Flag indicating hardware serialization. */
  11144. PVOID    pXP1;             /*  Extension-specific input packet. */
  11145.  } HWEXTENSIONIN;
  11146.  
  11147. typedef HWEXTENSIONIN *PHWEXTENSIONIN;
  11148.  
  11149.  
  11150. ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  11151.  
  11152. ulLength (ULONG) 
  11153.    Size of the HWEXTENSIONIN data structure, in bytes. 
  11154.  
  11155.  
  11156. ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - cScrChangeRects ΓòÉΓòÉΓòÉ
  11157.  
  11158. cScrChangeRects (ULONG) 
  11159.    Count of screen rectangles affected by HWEXTENSIONIN. 
  11160.  
  11161.  
  11162. ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - arectlScreen ΓòÉΓòÉΓòÉ
  11163.  
  11164. arectlScreen (PRECTL) 
  11165.    Array of screen rectangles affected by HWEXTENSIONIN. 
  11166.  
  11167.  
  11168. ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - ulXFlags ΓòÉΓòÉΓòÉ
  11169.  
  11170. ulXFlags (ULONG) 
  11171.    Flag indicating hardware serialization. 
  11172.  
  11173.    Value for this flag is as follows: 
  11174.  
  11175.      X_REQUESTHW    1 
  11176.  
  11177.  
  11178. ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - pXP1 ΓòÉΓòÉΓòÉ
  11179.  
  11180. pXP1 (PVOID) 
  11181.    Extension-specific input packet. 
  11182.  
  11183.  
  11184. ΓòÉΓòÉΓòÉ 11.20. HWEXTENSIONOUT ΓòÉΓòÉΓòÉ
  11185.  
  11186. Returns flags from an extension GRADD. 
  11187.  
  11188. typedef struct _HWEXTENSIONOUT {
  11189. ULONG   ulLength;  /*  Size of the HWEXTENSIONOUT data structure, in bytes. */
  11190. ULONG   ulFlags;   /*  Flag indicfating type of event. */
  11191.  } HWEXTENSIONOUT;
  11192.  
  11193. typedef HWEXTENSIONOUT *PHWEXTENSIONOUT;
  11194.  
  11195.  
  11196. ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
  11197.  
  11198. ulLength (ULONG) 
  11199.    Size of the HWEXTENSIONOUT data structure, in bytes. 
  11200.  
  11201.  
  11202. ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONOUT Parameter - ulFlags ΓòÉΓòÉΓòÉ
  11203.  
  11204. ulFlags (ULONG) 
  11205.    Flag indicfating type of event. 
  11206.  
  11207.      EXT_SERIALIZEDAC 0x001; DAC requires serializatoin if this flag is set. 
  11208.  
  11209.  
  11210. ΓòÉΓòÉΓòÉ 11.21. HWMOVEPTRIN ΓòÉΓòÉΓòÉ
  11211.  
  11212. Input packet provided to the GRADD in the GHI_CMD_MOVEPTR function. 
  11213.  
  11214. typedef struct _HWMOVEPTRIN {
  11215. ULONG    ulLength;  /*  Size of the HWMOVEPTRIN data structure, in bytes. */
  11216. POINTL   ptlPos;    /*  Pointer to video screen coordinate of pointer hot spot. */
  11217.  } HWMOVEPTRIN;
  11218.  
  11219. typedef HWMOVEPTRIN *PHWMOVEPTRIN;
  11220.  
  11221.  
  11222. ΓòÉΓòÉΓòÉ <hidden> HWMOVEPTRIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  11223.  
  11224. ulLength (ULONG) 
  11225.    Size of the HWMOVEPTRIN data structure, in bytes. 
  11226.  
  11227.  
  11228. ΓòÉΓòÉΓòÉ <hidden> HWMOVEPTRIN Parameter - ptlPos ΓòÉΓòÉΓòÉ
  11229.  
  11230. ptlPos (POINTL) 
  11231.    Pointer to video screen coordinate of pointer hot spot. 
  11232.  
  11233.    Video screen coordinates are expected in the ptlPos field. 
  11234.  
  11235.  
  11236. ΓòÉΓòÉΓòÉ 11.22. HWPALETTEINFO ΓòÉΓòÉΓòÉ
  11237.  
  11238. Input packet provided to the GRADD in the GHI_CMD_PALETTE function. 
  11239.  
  11240. typedef struct _HWPALETTEINFO {
  11241. ULONG   ulLength;      /*  Size of the HWPALETTEINFO data structure, in bytes. */
  11242. ULONG   fFlags;        /*  Palette flag. */
  11243. ULONG   ulStartIndex;  /*  Starting palette index. */
  11244. ULONG   ulNumEntries;  /*  Number of palette slots to query or set. */
  11245. PRGB2   pRGBs;         /*  Pointer to the array of RGB values. */
  11246.  } HWPALETTEINFO;
  11247.  
  11248. typedef HWPALETTEINFO *PHWPALETTEINFO;
  11249.  
  11250.  
  11251. ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  11252.  
  11253. ulLength (ULONG) 
  11254.    Size of the HWPALETTEINFO data structure, in bytes. 
  11255.  
  11256.  
  11257. ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - fFlags ΓòÉΓòÉΓòÉ
  11258.  
  11259. fFlags (ULONG) 
  11260.    Palette flag. 
  11261.  
  11262.    These flags have the following values: 
  11263.  
  11264.      PALETTE_GET       0x0001 
  11265.      PALETTE_SET       0x0002 
  11266.  
  11267.  
  11268. ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - ulStartIndex ΓòÉΓòÉΓòÉ
  11269.  
  11270. ulStartIndex (ULONG) 
  11271.    Starting palette index. 
  11272.  
  11273.  
  11274. ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - ulNumEntries ΓòÉΓòÉΓòÉ
  11275.  
  11276. ulNumEntries (ULONG) 
  11277.    Number of palette slots to query or set. 
  11278.  
  11279.  
  11280. ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - pRGBs ΓòÉΓòÉΓòÉ
  11281.  
  11282. pRGBs (PRGB2) 
  11283.    Pointer to the array of RGB values. 
  11284.  
  11285.  
  11286. ΓòÉΓòÉΓòÉ 11.23. HWREQIN ΓòÉΓòÉΓòÉ
  11287.  
  11288. Input packet to the GHI_CMD_REQUESTHW function. 
  11289.  
  11290. typedef struct _HWREQIN {
  11291. ULONG    ulLength;         /*  Size of the HWREQIN data structure, in bytes. */
  11292. BOOL     fRequest;         /*  State of HWREQIN. */
  11293. ULONG    cScrChangeRects;  /*  Count of screen rectangles affected by HWREQIN. */
  11294. PRECTL   arectlScreen;     /*  Array of screen rectangles affected by HWREQIN. */
  11295.  } HWREQIN;
  11296.  
  11297. typedef HWREQIN *PHWREQIN;
  11298.  
  11299.  
  11300. ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  11301.  
  11302. ulLength (ULONG) 
  11303.    Size of the HWREQIN data structure, in bytes. 
  11304.  
  11305.  
  11306. ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - fRequest ΓòÉΓòÉΓòÉ
  11307.  
  11308. fRequest (BOOL) 
  11309.    State of HWREQIN. 
  11310.  
  11311.    Valid values are: 
  11312.  
  11313.      TRUE      Request 
  11314.      FALSE     Release 
  11315.  
  11316.  
  11317. ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - cScrChangeRects ΓòÉΓòÉΓòÉ
  11318.  
  11319. cScrChangeRects (ULONG) 
  11320.    Count of screen rectangles affected by HWREQIN. 
  11321.  
  11322.  
  11323. ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - arectlScreen ΓòÉΓòÉΓòÉ
  11324.  
  11325. arectlScreen (PRECTL) 
  11326.    Array of screen rectangles affected by HWREQIN. 
  11327.  
  11328.  
  11329. ΓòÉΓòÉΓòÉ 11.24. HWSETPTRIN ΓòÉΓòÉΓòÉ
  11330.  
  11331. Input packet to the GHI_CMD_SETPTR function. 
  11332.  
  11333. typedef struct _HWSETPTRIN {
  11334. ULONG    ulLength;    /*  Size of the HWSETPTRIN data structure, in bytes. */
  11335. PBYTE    pbANDMask;   /*  Pointer to AND bit-mask pointer. */
  11336. PBYTE    pbXORMask;   /*  Pointer to XOR bit-mask pointer. */
  11337. PBYTE    pbBits;      /*  Pointer to color pointer image. */
  11338. ULONG    ulBpp;       /*  Color pointer bits per pel. */
  11339. ULONG    ulWidth;     /*  Pointer width in pels. */
  11340. ULONG    ulHeight;    /*  Pointer height in pels. */
  11341. POINTL   ptlHotspot;  /*  Pointer to hot spot coordinate. */
  11342.  } HWSETPTRIN;
  11343.  
  11344. typedef HWSETPTRIN *PHWSETPTRIN;
  11345.  
  11346.  
  11347. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  11348.  
  11349. ulLength (ULONG) 
  11350.    Size of the HWSETPTRIN data structure, in bytes. 
  11351.  
  11352.  
  11353. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - pbANDMask ΓòÉΓòÉΓòÉ
  11354.  
  11355. pbANDMask (PBYTE) 
  11356.    Pointer to AND bit-mask pointer. 
  11357.  
  11358.  
  11359. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - pbXORMask ΓòÉΓòÉΓòÉ
  11360.  
  11361. pbXORMask (PBYTE) 
  11362.    Pointer to XOR bit-mask pointer. 
  11363.  
  11364.  
  11365. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - pbBits ΓòÉΓòÉΓòÉ
  11366.  
  11367. pbBits (PBYTE) 
  11368.    Pointer to color pointer image. 
  11369.  
  11370.  
  11371. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulBpp ΓòÉΓòÉΓòÉ
  11372.  
  11373. ulBpp (ULONG) 
  11374.    Color pointer bits per pel. 
  11375.  
  11376.  
  11377. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulWidth ΓòÉΓòÉΓòÉ
  11378.  
  11379. ulWidth (ULONG) 
  11380.    Pointer width in pels. 
  11381.  
  11382.  
  11383. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulHeight ΓòÉΓòÉΓòÉ
  11384.  
  11385. ulHeight (ULONG) 
  11386.    Pointer height in pels. 
  11387.  
  11388.  
  11389. ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ptlHotspot ΓòÉΓòÉΓòÉ
  11390.  
  11391. ptlHotspot (POINTL) 
  11392.    Pointer to hot spot coordinate. 
  11393.  
  11394.  
  11395. ΓòÉΓòÉΓòÉ 11.25. HWSETPTROUT ΓòÉΓòÉΓòÉ
  11396.  
  11397. Output packet returned by the GRADD to the caller of the GHI_CMD_SETPTR 
  11398. function. 
  11399.  
  11400. typedef struct _HWSETPTROUT {
  11401. ULONG   ulLength;  /*  Size of the HWSETPTROUT data structure, in bytes. */
  11402. ULONG   ulStatus;  /*  Current cursor description bits. */
  11403.  } HWSETPTROUT;
  11404.  
  11405. typedef HWSETPTROUT *PHWSETPTROUT;
  11406.  
  11407.  
  11408. ΓòÉΓòÉΓòÉ <hidden> HWSETPTROUT Parameter - ulLength ΓòÉΓòÉΓòÉ
  11409.  
  11410. ulLength (ULONG) 
  11411.    Size of the HWSETPTROUT data structure, in bytes. 
  11412.  
  11413.  
  11414. ΓòÉΓòÉΓòÉ <hidden> HWSETPTROUT Parameter - ulStatus ΓòÉΓòÉΓòÉ
  11415.  
  11416. ulStatus (ULONG) 
  11417.    Current cursor description bits. 
  11418.  
  11419.    Values are as follows: 
  11420.  
  11421.      POINTER_VISIBLE          0x0001; cursor is visible. 
  11422.      POINTER_COLOR            0x0002; cursor is color (vs. monochrome). 
  11423.      POINTER_SOFTWARE         0x0004; this GRADD is not using a hardware 
  11424.                               sprite. 
  11425.  
  11426.  
  11427. ΓòÉΓòÉΓòÉ 11.26. HWSHOWPTRIN ΓòÉΓòÉΓòÉ
  11428.  
  11429. Input packet to the GHI_CMD_SHOWPTR function. 
  11430.  
  11431. typedef struct _HWSHOWPTRIN {
  11432. ULONG   ulLength;  /*  Size of the HWSHOWPTRIN data structure, in bytes. */
  11433. BOOL    fShow;     /*  Indicates the visibility state of the pointer. */
  11434.  } HWSHOWPTRIN;
  11435.  
  11436. typedef HWSHOWPTRIN *PHWSHOWPTRIN;
  11437.  
  11438.  
  11439. ΓòÉΓòÉΓòÉ <hidden> HWSHOWPTRIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  11440.  
  11441. ulLength (ULONG) 
  11442.    Size of the HWSHOWPTRIN data structure, in bytes. 
  11443.  
  11444.  
  11445. ΓòÉΓòÉΓòÉ <hidden> HWSHOWPTRIN Parameter - fShow ΓòÉΓòÉΓòÉ
  11446.  
  11447. fShow (BOOL) 
  11448.    Indicates the visibility state of the pointer. 
  11449.  
  11450.    Values are as follows: 
  11451.  
  11452.      TRUE      Pointer is visible. 
  11453.      FALSE     Pointer is not visible. 
  11454.  
  11455.  
  11456. ΓòÉΓòÉΓòÉ 11.27. IMAGEBUF ΓòÉΓòÉΓòÉ
  11457.  
  11458. Characteristics describing an image. 
  11459.  
  11460. typedef struct _IMAGEBUF {
  11461. ULONG          ulLength;        /*  Length of IMAGEBUF data structure, in bytes. */
  11462. ULONG          ulFlags;         /*  Image buf flag. */
  11463. ULONG          ulType;          /*  Flag indicating type of memory:  VRAM or system.  */
  11464. PBYTE          pBits;           /*  Virtual address of the image. */
  11465. ULONG          ulImgWidth;      /*  Image width, in pels. */
  11466. ULONG          ulImgHeight;     /*  Image height, in pels. */
  11467. ULONG          ulBytesPerScan;  /*  Bytes per scan line. */
  11468. PCOLORINFO     pColorInfo;      /*  Color space of data in buffer. */
  11469. PCODECINFO     pCodecInfo;      /*  Compression type of data in buffer. */
  11470. PCUSTPALINFO   pCustPalInfo;    /*  Pointer to custom palette information. */
  11471.  } IMAGEBUF;
  11472.  
  11473. typedef IMAGEBUF *PIMAGEBUF;
  11474.  
  11475.  
  11476. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulLength ΓòÉΓòÉΓòÉ
  11477.  
  11478. ulLength (ULONG) 
  11479.    Length of IMAGEBUF data structure, in bytes. 
  11480.  
  11481.  
  11482. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulFlags ΓòÉΓòÉΓòÉ
  11483.  
  11484. ulFlags (ULONG) 
  11485.    Image buf flag. 
  11486.  
  11487.    This flag has the following values: 
  11488.  
  11489.      IBF_Y_ORG_BOTTOM 
  11490.                0x0001; origin is set at bottom 
  11491.  
  11492.                Note:  This flag can be used as an optimization for 8-bpp images 
  11493.                       for the following two conditions: 
  11494.  
  11495.        1. The hardware has support for cached custom palettes, and the client 
  11496.           application is playing frames using the same palette. The driver will 
  11497.           return IMG_CAPS_PAL_CACHING if it has this support. 
  11498.  
  11499.        2. The screen is in 256-color mode and the source image bits have 
  11500.           already been translated to the current hardware palette. 
  11501.  
  11502.      IBF_IGNORE_CUST_PAL 
  11503.                0x0002; ignore the custom palette 
  11504.  
  11505.  
  11506. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulType ΓòÉΓòÉΓòÉ
  11507.  
  11508. ulType (ULONG) 
  11509.    Flag indicating type of memory:  VRAM or system. 
  11510.  
  11511.    This flag has the following values: 
  11512.  
  11513.      IBT_SRC_VRAM 
  11514.                0x0000; indicates source is VRAM memory 
  11515.      IBT_SRC_MEM 
  11516.                0x0001; indicates source is system memory 
  11517.  
  11518.  
  11519. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pBits ΓòÉΓòÉΓòÉ
  11520.  
  11521. pBits (PBYTE) 
  11522.    Virtual address of the image. 
  11523.  
  11524.    Not required if source is in VRAM. 
  11525.  
  11526.  
  11527. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulImgWidth ΓòÉΓòÉΓòÉ
  11528.  
  11529. ulImgWidth (ULONG) 
  11530.    Image width, in pels. 
  11531.  
  11532.  
  11533. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulImgHeight ΓòÉΓòÉΓòÉ
  11534.  
  11535. ulImgHeight (ULONG) 
  11536.    Image height, in pels. 
  11537.  
  11538.  
  11539. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulBytesPerScan ΓòÉΓòÉΓòÉ
  11540.  
  11541. ulBytesPerScan (ULONG) 
  11542.    Bytes per scan line. 
  11543.  
  11544.  
  11545. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pColorInfo ΓòÉΓòÉΓòÉ
  11546.  
  11547. pColorInfo (PCOLORINFO) 
  11548.    Color space of data in buffer. 
  11549.  
  11550.  
  11551. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pCodecInfo ΓòÉΓòÉΓòÉ
  11552.  
  11553. pCodecInfo (PCODECINFO) 
  11554.    Compression type of data in buffer. 
  11555.  
  11556.  
  11557. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pCustPalInfo ΓòÉΓòÉΓòÉ
  11558.  
  11559. pCustPalInfo (PCUSTPALINFO) 
  11560.    Pointer to custom palette information. 
  11561.  
  11562.  
  11563. ΓòÉΓòÉΓòÉ 11.28. IMAGECAPS ΓòÉΓòÉΓòÉ
  11564.  
  11565. Capabilities of the video accelerator driver. 
  11566.  
  11567. typedef struct _IMAGECAPS {
  11568. ULONG        ulLength;         /*  Length of IMAGECAPS data structure, in bytes. */
  11569. ULONG        ulCaps;           /*  Flag that specifies image capabilities supported. */
  11570. ULONG        ulMaxHorz;        /*  Maximum horizontal pels supported by scaler. */
  11571. ULONG        ulMaxVert;        /*  Maximum vertical lines supported by scaler. */
  11572. BOOL         fAccelMem;        /*  Flag indicating whether the hardware accelerator has additional VRAM for use. */
  11573. ULONG        ulPhysAddrVRAM;   /*  Physical address of the hardware accelerator VRAM. */
  11574. ULONG        ulSize;           /*  Size of hardware accelerator VRAM, in bytes. */
  11575. ULONG        ulScanLineBytes;  /*  Size of scan line, in bytes. */
  11576. ULONG        ulNumCodecs;      /*  Number of FOURCCs that follow in this structure. */
  11577. PCODECINFO   pCodecList;       /*  Pointer to array of CODEC FOURCCs. */
  11578. ULONG        ulNumSrc;         /*  Number of source COLORINFO data structures pointed to by pSrcColorInfo. */
  11579. PCOLORINFO   pSrcColorInfo;    /*  Pointer to array of source COLORINFO data structures. */
  11580. ULONG        ulNumDst;         /*  Number of destination COLORINFO data structures pointed to by pDstColorInfo. */
  11581. PCOLORINFO   pDstColorInfo;    /*  Pointer to array of destination COLORINFO data structures. */
  11582.  } IMAGECAPS;
  11583.  
  11584. typedef IMAGECAPS *PIMAGECAPS;
  11585.  
  11586.  
  11587. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulLength ΓòÉΓòÉΓòÉ
  11588.  
  11589. ulLength (ULONG) 
  11590.    Length of IMAGECAPS data structure, in bytes. 
  11591.  
  11592.  
  11593. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulCaps ΓòÉΓòÉΓòÉ
  11594.  
  11595. ulCaps (ULONG) 
  11596.    Flag that specifies image capabilities supported. 
  11597.  
  11598.    This flag has the following values: 
  11599.  
  11600.      IMAGECAPS_STRETCHBLT 
  11601.                0x0001; has hardware stretch Blt assist 
  11602.      IMAGECAPS_CAPTURE 
  11603.                0x0002; has capture to VRAM hardware present 
  11604.      IMAGECAPS_1X_BLT 
  11605.                0x0004; has nonstretch Blt assist 
  11606.      IMAGECAPS_WINDOWCLIP 
  11607.                0x0008; supports clipping in hardware and/or software 
  11608.      IMAGECAPS_BUFALLOC 
  11609.                0x0010; supports allocation of on-card memory 
  11610.      IMAGECAPS_RECTALLOC 
  11611.                0x0020; supports allocation of rectangles in on-card memory 
  11612.      IMAGECAPS_COMP 
  11613.                0x0040; compression supported by driver 
  11614.      IMAGECAPS_DECOMP 
  11615.                0x0080; decompression supported by driver 
  11616.      IMAGECAPS_PAL_CACHING 
  11617.                0x0100; supports 8-bit palette caching 
  11618.      IMAGECAPS_INTERPOL 
  11619.                0x0200; supports color interpolation in hardware 
  11620.      IMAGECAPS_BYLOCSYSMEM 
  11621.                0x0400; able to read/write to system memory 
  11622.      IMIAGECAPS_SEM_BYPASS 
  11623.                0x0800; device serialization not required 
  11624.      IMAGECAPS_NO_SHARED_FB 
  11625.                0x1000; overlay device 
  11626.  
  11627.  
  11628. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulMaxHorz ΓòÉΓòÉΓòÉ
  11629.  
  11630. ulMaxHorz (ULONG) 
  11631.    Maximum horizontal pels supported by scaler. 
  11632.  
  11633.  
  11634. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulMaxVert ΓòÉΓòÉΓòÉ
  11635.  
  11636. ulMaxVert (ULONG) 
  11637.    Maximum vertical lines supported by scaler. 
  11638.  
  11639.  
  11640. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - fAccelMem ΓòÉΓòÉΓòÉ
  11641.  
  11642. fAccelMem (BOOL) 
  11643.    Flag indicating whether the hardware accelerator has additional VRAM for 
  11644.    use. 
  11645.  
  11646.    The following values are valid: 
  11647.  
  11648.      TRUE      VRAM available. 
  11649.      FALSE     VRAM not available. 
  11650.  
  11651.  
  11652. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulPhysAddrVRAM ΓòÉΓòÉΓòÉ
  11653.  
  11654. ulPhysAddrVRAM (ULONG) 
  11655.    Physical address of the hardware accelerator VRAM. 
  11656.  
  11657.    This parameter is valid only if fAccelMem = TRUE. 
  11658.  
  11659.  
  11660. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulSize ΓòÉΓòÉΓòÉ
  11661.  
  11662. ulSize (ULONG) 
  11663.    Size of hardware accelerator VRAM, in bytes. 
  11664.  
  11665.    This parameter is valid only if fAccelMem = TRUE. 
  11666.  
  11667.  
  11668. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulScanLineBytes ΓòÉΓòÉΓòÉ
  11669.  
  11670. ulScanLineBytes (ULONG) 
  11671.    Size of scan line, in bytes. 
  11672.  
  11673.    Number of bytes includes padding. This parameter is valid only if fAccelMem 
  11674.    = TRUE. 
  11675.  
  11676.  
  11677. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulNumCodecs ΓòÉΓòÉΓòÉ
  11678.  
  11679. ulNumCodecs (ULONG) 
  11680.    Number of FOURCCs that follow in this structure. 
  11681.  
  11682.  
  11683. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - pCodecList ΓòÉΓòÉΓòÉ
  11684.  
  11685. pCodecList (PCODECINFO) 
  11686.    Pointer to array of CODEC FOURCCs. 
  11687.  
  11688.    This field points to the array of FOURCCs supported by the hardware 
  11689.    accelerator. 
  11690.  
  11691.  
  11692. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulNumSrc ΓòÉΓòÉΓòÉ
  11693.  
  11694. ulNumSrc (ULONG) 
  11695.    Number of source COLORINFO data structures pointed to by pSrcColorInfo. 
  11696.  
  11697.  
  11698. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - pSrcColorInfo ΓòÉΓòÉΓòÉ
  11699.  
  11700. pSrcColorInfo (PCOLORINFO) 
  11701.    Pointer to array of source COLORINFO data structures. 
  11702.  
  11703.  
  11704. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulNumDst ΓòÉΓòÉΓòÉ
  11705.  
  11706. ulNumDst (ULONG) 
  11707.    Number of destination COLORINFO data structures pointed to by pDstColorInfo. 
  11708.  
  11709.  
  11710. ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - pDstColorInfo ΓòÉΓòÉΓòÉ
  11711.  
  11712. pDstColorInfo (PCOLORINFO) 
  11713.    Pointer to array of destination COLORINFO data structures. 
  11714.  
  11715.  
  11716. ΓòÉΓòÉΓòÉ 11.29. IMAGEPACK ΓòÉΓòÉΓòÉ
  11717.  
  11718. Information pertaining to PutImage and GetImage. 
  11719.  
  11720. typedef struct _IMAGEPACK {
  11721. ULONG       ulLength;    /*  Length of IMAGEPACK data structure, in bytes. */
  11722. ULONG       ulFlags;     /*  Image pack flag. */
  11723. ULONG       ulHandle;    /*  Unique ID returned by VRAMREGISTEROUT function. */
  11724. ULONG       ulID;        /*  Unique buffer ID. */
  11725. ULONG       ulCmdMask;   /*  Specific changes since the last frame. */
  11726. PIMAGEBUF   pPutBuf;     /*  Used as source image in PutImage command. */
  11727. PIMAGEBUF   pGetBuf;     /*  Used as destination image in GetImage command. */
  11728. POINTL      ptlDstOrg;   /*  Destination origin (origin at upper left). */
  11729. ULONG       ulDstXext;   /*  Destination X extent. */
  11730. ULONG       ulDstYext;   /*  Destination Y extent. */
  11731. POINTL      ptlSrcOrg;   /*  Offset into the source image. */
  11732. ULONG       ulSrcXext;   /*  Source X extent. */
  11733. ULONG       ulSrcYext;   /*  Source Y extent. */
  11734. ULONG       cVisRects;   /*  Number of output visible rectangles. */
  11735. PRECTL      prctlVis;    /*  Pointer to array of visible regions. */
  11736. POINTL      ptlWBOrg;    /*  Origin of off-screen VRAM work buffer. */
  11737. ULONG       cWBBytes;    /*  Number of bytes in the work buffer. */
  11738. PBYTE       pVirtVRAM;   /*  A 32-bit virtual pointer to the start of VRAM. */
  11739. ULONG       ulGrafXPar;  /*  Transparent color for overlay type devices. */
  11740.  } IMAGEPACK;
  11741.  
  11742. typedef IMAGEPACK *PIMAGEPACK;
  11743.  
  11744.  
  11745. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulLength ΓòÉΓòÉΓòÉ
  11746.  
  11747. ulLength (ULONG) 
  11748.    Length of IMAGEPACK data structure, in bytes. 
  11749.  
  11750.  
  11751. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulFlags ΓòÉΓòÉΓòÉ
  11752.  
  11753. ulFlags (ULONG) 
  11754.    Image pack flag. 
  11755.  
  11756.    This flag has the following value: 
  11757.  
  11758.      IPF_DONT_INTERPOLATE 
  11759.                0x0001; don't use hardware color interpolation 
  11760.  
  11761.  
  11762. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulHandle ΓòÉΓòÉΓòÉ
  11763.  
  11764. ulHandle (ULONG) 
  11765.    Unique ID returned by VRAMREGISTEROUT function. 
  11766.  
  11767.  
  11768. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulID ΓòÉΓòÉΓòÉ
  11769.  
  11770. ulID (ULONG) 
  11771.    Unique buffer ID. 
  11772.  
  11773.  
  11774. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulCmdMask ΓòÉΓòÉΓòÉ
  11775.  
  11776. ulCmdMask (ULONG) 
  11777.    Specific changes since the last frame. 
  11778.  
  11779.    The following values are valid: 
  11780.  
  11781.      IPC_INTERMEDIATE_PUT 
  11782.                0x0001; not used at this time 
  11783.      IPC_RECTLS 
  11784.                0x0002; visible regions have changed 
  11785.      IPC_SRC_COLOR 
  11786.                0x0004; source color information has changed 
  11787.      IPC_DST_COLOR 
  11788.                0x0008; destination color information has changed 
  11789.      IPC_PALETTE 
  11790.                0x0010; palette color information has changed 
  11791.      IPC_SRC_SIZE 
  11792.                0x0020; source size information has changed 
  11793.      IPC_DST_SIZE 
  11794.                0x0040; destination size information has changed 
  11795.      IPC_DST_POS 
  11796.                0x0080; destination position information has changed 
  11797.      IPC_DROP_FRAME 
  11798.                0x0100; ignore this frame 
  11799.  
  11800.  
  11801. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - pPutBuf ΓòÉΓòÉΓòÉ
  11802.  
  11803. pPutBuf (PIMAGEBUF) 
  11804.    Used as source image in PutImage command. 
  11805.  
  11806.  
  11807. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - pGetBuf ΓòÉΓòÉΓòÉ
  11808.  
  11809. pGetBuf (PIMAGEBUF) 
  11810.    Used as destination image in GetImage command. 
  11811.  
  11812.  
  11813. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ptlDstOrg ΓòÉΓòÉΓòÉ
  11814.  
  11815. ptlDstOrg (POINTL) 
  11816.    Destination origin (origin at upper left). 
  11817.  
  11818.  
  11819. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulDstXext ΓòÉΓòÉΓòÉ
  11820.  
  11821. ulDstXext (ULONG) 
  11822.    Destination X extent. 
  11823.  
  11824.  
  11825. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulDstYext ΓòÉΓòÉΓòÉ
  11826.  
  11827. ulDstYext (ULONG) 
  11828.    Destination Y extent. 
  11829.  
  11830.  
  11831. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ptlSrcOrg ΓòÉΓòÉΓòÉ
  11832.  
  11833. ptlSrcOrg (POINTL) 
  11834.    Offset into the source image. 
  11835.  
  11836.  
  11837. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulSrcXext ΓòÉΓòÉΓòÉ
  11838.  
  11839. ulSrcXext (ULONG) 
  11840.    Source X extent. 
  11841.  
  11842.  
  11843. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulSrcYext ΓòÉΓòÉΓòÉ
  11844.  
  11845. ulSrcYext (ULONG) 
  11846.    Source Y extent. 
  11847.  
  11848.  
  11849. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - cVisRects ΓòÉΓòÉΓòÉ
  11850.  
  11851. cVisRects (ULONG) 
  11852.    Number of output visible rectangles. 
  11853.  
  11854.  
  11855. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - prctlVis ΓòÉΓòÉΓòÉ
  11856.  
  11857. prctlVis (PRECTL) 
  11858.    Pointer to array of visible regions. 
  11859.  
  11860.  
  11861. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ptlWBOrg ΓòÉΓòÉΓòÉ
  11862.  
  11863. ptlWBOrg (POINTL) 
  11864.    Origin of off-screen VRAM work buffer. 
  11865.  
  11866.  
  11867. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - cWBBytes ΓòÉΓòÉΓòÉ
  11868.  
  11869. cWBBytes (ULONG) 
  11870.    Number of bytes in the work buffer. 
  11871.  
  11872.  
  11873. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - pVirtVRAM ΓòÉΓòÉΓòÉ
  11874.  
  11875. pVirtVRAM (PBYTE) 
  11876.    A 32-bit virtual pointer to the start of VRAM. 
  11877.  
  11878.  
  11879. ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulGrafXPar ΓòÉΓòÉΓòÉ
  11880.  
  11881. ulGrafXPar (ULONG) 
  11882.    Transparent color for overlay type devices. 
  11883.  
  11884.  
  11885. ΓòÉΓòÉΓòÉ 11.30. INITPROCOUT ΓòÉΓòÉΓòÉ
  11886.  
  11887. Information returned by the GRADD to the caller of the GHI_CMD_INITPROC 
  11888. function. 
  11889.  
  11890. typedef struct _INITPROCOUT {
  11891. ULONG   ulLength;    /*  Length of the INITPROCOUT data structure, in bytes. */
  11892. ULONG   ulVRAMVirt;  /*  32-bit virtual address of VRAM. */
  11893.  } INITPROCOUT;
  11894.  
  11895. typedef INITPROCOUT *PINITPROCOUT;
  11896.  
  11897.  
  11898. ΓòÉΓòÉΓòÉ <hidden> INITPROCOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
  11899.  
  11900. ulLength (ULONG) 
  11901.    Length of the INITPROCOUT data structure, in bytes. 
  11902.  
  11903.  
  11904. ΓòÉΓòÉΓòÉ <hidden> INITPROCOUT Parameter - ulVRAMVirt ΓòÉΓòÉΓòÉ
  11905.  
  11906. ulVRAMVirt (ULONG) 
  11907.    32-bit virtual address of VRAM. 
  11908.  
  11909.  
  11910. ΓòÉΓòÉΓòÉ 11.31. LINEINFO ΓòÉΓòÉΓòÉ
  11911.  
  11912. Line information data structure shared by cLines in the alpkLinePack array. 
  11913.  
  11914. typedef struct _LINEINFO {
  11915. ULONG       ulLength;      /*  Length of LINEINFO data structure. */
  11916. ULONG       ulType;        /*  Defines line type. */
  11917. ULONG       ulStyleMask;   /*  A 32-bit style mask. */
  11918. ULONG       cLines;        /*  Count of lines to be drawn. */
  11919. ULONG       ulFGColor;     /*  Line Foreground color. */
  11920. ULONG       ulBGColor;     /*  Line Background color. */
  11921. USHORT      usForeROP;     /*  Line Foreground mix. */
  11922. USHORT      usBackROP;     /*  Line Background mix. */
  11923. PBMAPINFO   pDstBmapInfo;  /*  Pointer to destination surface bit map. */
  11924. PLINEPACK   alpkLinePack;  /*  Pointer to LINEPACK data structure. */
  11925. PRECTL      prclBounds;    /*  Pointer to bounding rect of a clipped line. */
  11926.  } LINEINFO;
  11927.  
  11928. typedef LINEINFO *PLINEINFO;
  11929.  
  11930.  
  11931. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
  11932.  
  11933. ulLength (ULONG) 
  11934.    Length of LINEINFO data structure. 
  11935.  
  11936.  
  11937. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulType ΓòÉΓòÉΓòÉ
  11938.  
  11939. ulType (ULONG) 
  11940.    Defines line type. 
  11941.  
  11942.      LINE_SOLID          Line will be solid in Foreground color. 
  11943.      LINE_INVISIBLE      Line is not drawn. 
  11944.      LINE_ALTERNATE      Line will be alternating Foreground and Background 
  11945.                          color; ignores style. 
  11946.  
  11947.  
  11948. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulStyleMask ΓòÉΓòÉΓòÉ
  11949.  
  11950. ulStyleMask (ULONG) 
  11951.    A 32-bit style mask. 
  11952.  
  11953.  
  11954. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - cLines ΓòÉΓòÉΓòÉ
  11955.  
  11956. cLines (ULONG) 
  11957.    Count of lines to be drawn. 
  11958.  
  11959.  
  11960. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulFGColor ΓòÉΓòÉΓòÉ
  11961.  
  11962. ulFGColor (ULONG) 
  11963.    Line Foreground color. 
  11964.  
  11965.  
  11966. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulBGColor ΓòÉΓòÉΓòÉ
  11967.  
  11968. ulBGColor (ULONG) 
  11969.    Line Background color. 
  11970.  
  11971.  
  11972. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - usForeROP ΓòÉΓòÉΓòÉ
  11973.  
  11974. usForeROP (USHORT) 
  11975.    Line Foreground mix. 
  11976.  
  11977.  
  11978. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - usBackROP ΓòÉΓòÉΓòÉ
  11979.  
  11980. usBackROP (USHORT) 
  11981.    Line Background mix. 
  11982.  
  11983.    The following flags apply to ulForeROP and ulBackROP: 
  11984.  
  11985.      LR_ZERO 
  11986.      LR_INVERTMERGEPAT 
  11987.      LR_MASKINVERTPAT 
  11988.      LR_INVERTCOPYPAT 
  11989.      LR_MASKPATINVERT 
  11990.      LR_INVERT 
  11991.      LR_XORPAT 
  11992.      LR_INVERTMASKPAT 
  11993.      LR_MASKPAT 
  11994.      LR_INVERTXORPAT 
  11995.      LR_LEAVEALONE 
  11996.      LR_MERGEINVERTPAT 
  11997.      LR_PATCOPY 
  11998.      LR_MERGEPATINVERT 
  11999.      LR_MERGEPAT 
  12000.      LR_ONE 
  12001.  
  12002.  
  12003. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - pDstBmapInfo ΓòÉΓòÉΓòÉ
  12004.  
  12005. pDstBmapInfo (PBMAPINFO) 
  12006.    Pointer to destination surface bit map. 
  12007.  
  12008.  
  12009. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - alpkLinePack ΓòÉΓòÉΓòÉ
  12010.  
  12011. alpkLinePack (PLINEPACK) 
  12012.    Pointer to LINEPACK data structure. 
  12013.  
  12014.  
  12015. ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - prclBounds ΓòÉΓòÉΓòÉ
  12016.  
  12017. prclBounds (PRECTL) 
  12018.    Pointer to bounding rect of a clipped line. 
  12019.  
  12020.  
  12021. ΓòÉΓòÉΓòÉ 11.32. LINEPACK ΓòÉΓòÉΓòÉ
  12022.  
  12023. Line information data structure on a per-line basis. 
  12024.  
  12025. typedef struct _LINEPACK {
  12026. ULONG      ulStyleStep;      /*  Value to be added to ulStyleValue. */
  12027. ULONG      ulStyleValue;     /*  Style value at the current pel. */
  12028. ULONG      ulFlags;          /*  Flags used for the LINEPACK data structure. */
  12029. LINEPACK   plpkNext;         /*  Pointer to next LINEPACK data structure. */
  12030. ULONG      ulAbsDeltaX;      /*  Clipped Bresenham Delta X, absolute. */
  12031. ULONG      ulAbsDeltaY;      /*  Clipped Bresenham Delta Y, absolute. */
  12032. POINTL     ptlClipStart;     /*  Pointer to location for device to perform Bresenham algorithm. */
  12033. POINTL     ptlClipEnd;       /*  Ending location for Bresenham algorithm (see ptlClipStart). */
  12034. POINTL     ptlStart;         /*  Pointer to starting location for line. */
  12035. POINTL     ptlEnd;           /*  Ending location for line. */
  12036. LONG       lClipStartError;  /*  Standard Bresenham error at the clipped start point. */
  12037.  } LINEPACK;
  12038.  
  12039. typedef LINEPACK *PLINEPACK;
  12040.  
  12041.  
  12042. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulStyleStep ΓòÉΓòÉΓòÉ
  12043.  
  12044. ulStyleStep (ULONG) 
  12045.    Value to be added to ulStyleValue. 
  12046.  
  12047.    The value to be added to ulStyleValue on each pel stepped along the style 
  12048.    major direction. 
  12049.  
  12050.  
  12051. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulStyleValue ΓòÉΓòÉΓòÉ
  12052.  
  12053. ulStyleValue (ULONG) 
  12054.    Style value at the current pel. 
  12055.  
  12056.    The style value is composed of an error value and a mask position, as 
  12057.    follows: 
  12058.  
  12059.       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12060.       Γöéhigh word      Γöé3 bits         Γöé5 bits         Γöé8 bits         Γöé
  12061.       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12062.       Γöénot used       Γöénot used       Γöémask pos       Γöéerror value    Γöé
  12063.       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12064.  
  12065.  
  12066. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulFlags ΓòÉΓòÉΓòÉ
  12067.  
  12068. ulFlags (ULONG) 
  12069.    Flags used for the LINEPACK data structure. 
  12070.  
  12071.      LINE_DO_FIRST_PEL        Draws the first pel. 
  12072.  
  12073.      LINE_DIR_Y_POSITIVE      Indicates line direction is bottom-to-top. 
  12074.  
  12075.      LINE_HORIZONTAL          Indicates line is horizontal. No Bresenham 
  12076.                               algorithm. 
  12077.  
  12078.      LINE_X_MAJOR             Line is XMAJOR. 
  12079.  
  12080.      LINE_DIR_X_POSITIVE      Indicates line direction is right-to-left. 
  12081.  
  12082.      LINE_VERTICAL            Indicates line is vertical. No Bresenham 
  12083.                               algorithm. 
  12084.  
  12085.      LINE_STYLE_X_MAJOR       Line style is XMAJOR. 
  12086.  
  12087.      LINE_DO_LAST_PEL         Draws the last pel. 
  12088.  
  12089.  
  12090. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - plpkNext ΓòÉΓòÉΓòÉ
  12091.  
  12092. plpkNext (LINEPACK) 
  12093.    Pointer to next LINEPACK data structure. 
  12094.  
  12095.  
  12096. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulAbsDeltaX ΓòÉΓòÉΓòÉ
  12097.  
  12098. ulAbsDeltaX (ULONG) 
  12099.    Clipped Bresenham Delta X, absolute. 
  12100.  
  12101.  
  12102. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulAbsDeltaY ΓòÉΓòÉΓòÉ
  12103.  
  12104. ulAbsDeltaY (ULONG) 
  12105.    Clipped Bresenham Delta Y, absolute. 
  12106.  
  12107.  
  12108. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlClipStart ΓòÉΓòÉΓòÉ
  12109.  
  12110. ptlClipStart (POINTL) 
  12111.    Pointer to location for device to perform Bresenham algorithm. 
  12112.  
  12113.    Pointer to location where device performs the Bresenham algorithm. Sets only 
  12114.    the pels from ptlClipStart to ptlClipEnd, inclusive. 
  12115.  
  12116.  
  12117. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlClipEnd ΓòÉΓòÉΓòÉ
  12118.  
  12119. ptlClipEnd (POINTL) 
  12120.    Ending location for Bresenham algorithm (see ptlClipStart). 
  12121.  
  12122.  
  12123. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlStart ΓòÉΓòÉΓòÉ
  12124.  
  12125. ptlStart (POINTL) 
  12126.    Pointer to starting location for line. 
  12127.  
  12128.    The device can perform the Bresenham algorithm from ptlStart or 
  12129.    ptlClipStart. 
  12130.  
  12131.  
  12132. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlEnd ΓòÉΓòÉΓòÉ
  12133.  
  12134. ptlEnd (POINTL) 
  12135.    Ending location for line. 
  12136.  
  12137.  
  12138. ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - lClipStartError ΓòÉΓòÉΓòÉ
  12139.  
  12140. lClipStartError (LONG) 
  12141.    Standard Bresenham error at the clipped start point. 
  12142.  
  12143.    Error is calculated from the initial error and the error increments for 
  12144.    major step and diagonal step. The initial error and the error increments are 
  12145.    as follows: 
  12146.  
  12147.      MAX 
  12148.           Maximum (ulAbsDeltaX, ulAbsDeltaY) 
  12149.      MIN 
  12150.           Minimum (ulAbsDeltaX, ulAbsDeltaY) 
  12151.      Major Increment 
  12152.           Increment to the error for stepping along the major axis: 
  12153.           2 * MIN. 
  12154.      Diagonal Increment 
  12155.           Increment to the error for stepping along the major and minor axes: 
  12156.           2 * MIN - 2 * MAX. 
  12157.      Initial Error 
  12158.           Error at the start point: 
  12159.           2 * MIN - MAX, if LINE_DIR_X_POSITIVE is On. 
  12160.  
  12161.           2 * MIN - MAX - 1, if LINE_DIR_X_POSITIVE is Off. 
  12162.      Horizontal and vertical lines 
  12163.           The line is drawn from the clipped start to clipped end. 
  12164.           The lClipStartError will not be given. 
  12165.      First pel consideration 
  12166.           Set the first pel at ptlStart (not ptlClipStart) only if 
  12167.           LINE_DO_FIRST_PEL is set and the first pel is not clipped. 
  12168.      Last pel consideration 
  12169.           Set the last pel at ptlEnd (not ptlClipEnd) only if LINE_DO_LAST_PEL 
  12170.           is set and the last pel is not clipped. 
  12171.      Styling 
  12172.           Lines are styled using the ulStyleMask, ulStyleStep, and 
  12173.           ulStyleValue. 
  12174.  
  12175.           ulStyleMask 
  12176.                A 32-bit style mask. 
  12177.  
  12178.           Error Value 
  12179.                Error value at the current pel. 
  12180.  
  12181.           Mask Position 
  12182.                Bit position of the ulStyleMask. 
  12183.  
  12184.                If this bit is on, set the current pel to the ulFGColor through 
  12185.                usForeROP; otherwise, set the current pel to the ulBGColor 
  12186.                through usBackRop. 
  12187.  
  12188.  
  12189. ΓòÉΓòÉΓòÉ 11.33. MONITORINFO ΓòÉΓòÉΓòÉ
  12190.  
  12191. The MONITORINFO data structure receives information for the current video 
  12192. monitor. 
  12193.  
  12194. typedef struct _MONITORINFO {
  12195. CHAR              szMonitor[MAX_MONITOR_LEN];          /*  Contains monitor information. */
  12196. MONITORMODEINFO   MonitorModeInfo[MAX_MONITOR_MODES];  /*  Contains information about the monitor mode. */
  12197.  } MONITORINFO;
  12198.  
  12199. typedef MONITORINFO *FAR *PMONITORINFO;
  12200.  
  12201.  
  12202. ΓòÉΓòÉΓòÉ <hidden> MONITORINFO Parameter - szMonitor[MAX_MONITOR_LEN] ΓòÉΓòÉΓòÉ
  12203.  
  12204. szMonitor[MAX_MONITOR_LEN] (CHAR) 
  12205.    Contains monitor information. 
  12206.  
  12207.  
  12208. ΓòÉΓòÉΓòÉ <hidden> MONITORINFO Parameter - MonitorModeInfo[MAX_MONITOR_MODES] ΓòÉΓòÉΓòÉ
  12209.  
  12210. MonitorModeInfo[MAX_MONITOR_MODES] (MONITORMODEINFO) 
  12211.    Contains information about the monitor mode. 
  12212.  
  12213.  
  12214. ΓòÉΓòÉΓòÉ 11.34. MONITORMODEINFO ΓòÉΓòÉΓòÉ
  12215.  
  12216. Contains information on the types of monitor modes. 
  12217.  
  12218. typedef struct _MONITORMODEINFO {
  12219. USHORT   usXResolution;  /*  Horizontal pixels. */
  12220. USHORT   usYResolution;  /*  Vertical scan lines. */
  12221. BYTE     bVertRefresh;   /*  Vertical refresh rate. */
  12222. BYTE     bHorizRefresh;  /*  Horizontal refresh rate. */
  12223. BYTE     bVPolarityPos;  /*  Vertical polarity. */
  12224. BYTE     bHPolarityPos;  /*  Horizontal polarity. */
  12225. USHORT   usScrnTop;      /*  Vertical blanking away from the top, in line counts. */
  12226. USHORT   usScrnBottom;   /*  Vertical blanking away from the bottom, in line counts. */
  12227. USHORT   usScrnLeft;     /*  Horizontal blanking away from the left, in pixel counts. */
  12228. USHORT   usScrnRight;    /*  Horizontal blanking away from the right, in pixel counts. */
  12229.  } MONITORMODEINFO;
  12230.  
  12231. typedef MONITORMODEINFO *FAR *PMONITORMODEINFO;
  12232.  
  12233.  
  12234. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usXResolution ΓòÉΓòÉΓòÉ
  12235.  
  12236. usXResolution (USHORT) 
  12237.    Horizontal pixels. 
  12238.  
  12239.  
  12240. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usYResolution ΓòÉΓòÉΓòÉ
  12241.  
  12242. usYResolution (USHORT) 
  12243.    Vertical scan lines. 
  12244.  
  12245.  
  12246. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bVertRefresh ΓòÉΓòÉΓòÉ
  12247.  
  12248. bVertRefresh (BYTE) 
  12249.    Vertical refresh rate. 
  12250.  
  12251.  
  12252. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bHorizRefresh ΓòÉΓòÉΓòÉ
  12253.  
  12254. bHorizRefresh (BYTE) 
  12255.    Horizontal refresh rate. 
  12256.  
  12257.  
  12258. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bVPolarityPos ΓòÉΓòÉΓòÉ
  12259.  
  12260. bVPolarityPos (BYTE) 
  12261.    Vertical polarity. 
  12262.  
  12263.  
  12264. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bHPolarityPos ΓòÉΓòÉΓòÉ
  12265.  
  12266. bHPolarityPos (BYTE) 
  12267.    Horizontal polarity. 
  12268.  
  12269.  
  12270. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnTop ΓòÉΓòÉΓòÉ
  12271.  
  12272. usScrnTop (USHORT) 
  12273.    Vertical blanking away from the top, in line counts. 
  12274.  
  12275.  
  12276. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnBottom ΓòÉΓòÉΓòÉ
  12277.  
  12278. usScrnBottom (USHORT) 
  12279.    Vertical blanking away from the bottom, in line counts. 
  12280.  
  12281.  
  12282. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnLeft ΓòÉΓòÉΓòÉ
  12283.  
  12284. usScrnLeft (USHORT) 
  12285.    Horizontal blanking away from the left, in pixel counts. 
  12286.  
  12287.  
  12288. ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnRight ΓòÉΓòÉΓòÉ
  12289.  
  12290. usScrnRight (USHORT) 
  12291.    Horizontal blanking away from the right, in pixel counts. 
  12292.  
  12293.  
  12294. ΓòÉΓòÉΓòÉ 11.35. SVGARGB ΓòÉΓòÉΓòÉ
  12295.  
  12296. The SVGARGB data structure contains the values of RGB. 
  12297.  
  12298. typedef struct _SVGARGB {
  12299. BYTE   bR;       /*  Value of Red. */
  12300. BYTE   bG;       /*  Value of Green. */
  12301. BYTE   bB;       /*  Value of Blue. */
  12302. BYTE   bUnused;  /*  Reserved. */
  12303.  } SVGARGB;
  12304.  
  12305. typedef SVGARGB *FAR *PSVGARGB;
  12306.  
  12307.  
  12308. ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bR ΓòÉΓòÉΓòÉ
  12309.  
  12310. bR (BYTE) 
  12311.    Value of Red. 
  12312.  
  12313.  
  12314. ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bG ΓòÉΓòÉΓòÉ
  12315.  
  12316. bG (BYTE) 
  12317.    Value of Green. 
  12318.  
  12319.  
  12320. ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bB ΓòÉΓòÉΓòÉ
  12321.  
  12322. bB (BYTE) 
  12323.    Value of Blue. 
  12324.  
  12325.  
  12326. ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bUnused ΓòÉΓòÉΓòÉ
  12327.  
  12328. bUnused (BYTE) 
  12329.    Reserved. 
  12330.  
  12331.  
  12332. ΓòÉΓòÉΓòÉ 11.36. VIDEO_ADAPTER ΓòÉΓòÉΓòÉ
  12333.  
  12334. The VIDEO_ADAPTER data structure receives information for the desktop mode. 
  12335.  
  12336. typedef struct _VIDEO_ADAPTER {
  12337. HVIDEO          hvideo;    /*  The handle for this adapter. */
  12338. ADAPTERINFO     Adapter;   /*  Hardware information for this adapter. */
  12339. VIDEOMODEINFO   ModeInfo;  /*  Information about the current video mode. */
  12340.  } VIDEO_ADAPTER;
  12341.  
  12342. typedef VIDEO_ADAPTER *FAR *PVIDEO_ADAPTER;
  12343.  
  12344.  
  12345. ΓòÉΓòÉΓòÉ <hidden> VIDEO_ADAPTER Parameter - hvideo ΓòÉΓòÉΓòÉ
  12346.  
  12347. hvideo (HVIDEO) 
  12348.    The handle for this adapter. 
  12349.  
  12350.  
  12351. ΓòÉΓòÉΓòÉ <hidden> VIDEO_ADAPTER Parameter - Adapter ΓòÉΓòÉΓòÉ
  12352.  
  12353. Adapter (ADAPTERINFO) 
  12354.    Hardware information for this adapter. 
  12355.  
  12356.  
  12357. ΓòÉΓòÉΓòÉ <hidden> VIDEO_ADAPTER Parameter - ModeInfo ΓòÉΓòÉΓòÉ
  12358.  
  12359. ModeInfo (VIDEOMODEINFO) 
  12360.    Information about the current video mode. 
  12361.  
  12362.  
  12363. ΓòÉΓòÉΓòÉ 11.37. VIDEOMODEINFO ΓòÉΓòÉΓòÉ
  12364.  
  12365. The VIDEOMODEINFO data structure receives information for the current video 
  12366. monitor. 
  12367.  
  12368. typedef struct _VIDEOMODEINFO {
  12369. MODEID   miModeId;                            /*  Used to make a SetMode request. */
  12370. USHORT   usType;                              /*  Flag indicating mode type. */
  12371. USHORT   usInt10ModeSet;                      /*  Interrupt 10 mode. */
  12372. USHORT   usXResolution;                       /*  Horizontal pixels. */
  12373. USHORT   usYResolution;                       /*  Vertical scanlines. */
  12374. ULONG    ulBufferAddress;                     /*  Physical address of VRAM. */
  12375. ULONG    ulApertureSize;                      /*  VRAM aperture. */
  12376. BYTE     bBitsPerPixel;                       /*  Number of colors. */
  12377. BYTE     bBitPlanes;                          /*  Number of planes. */
  12378. BYTE     bXCharSize;                          /*  Font width. */
  12379. BYTE     bYCharSize;                          /*  Font height. */
  12380. USHORT   usBytesPerScanLine;                  /*  Number of bytes per scan line. */
  12381. USHORT   usTextRows;                          /*  Number of text rows. */
  12382. ULONG    ulPageLength;                        /*  Number of bytes to save a plane. */
  12383. ULONG    ulSavesize;                          /*  Total bytes of VRAM to save. */
  12384. BYTE     bVrtRefresh;                         /*  Vertical refresh rate. */
  12385. BYTE     bHrtRefresh;                         /*  Horizontal refresh rate. */
  12386. BYTE     bVrtPolPos;                          /*  Vertical polarity. */
  12387. BYTE     bHrtPolPos;                          /*  Horizontal polarity. */
  12388. USHORT   usScrnTop;                           /*  Vertical blanking away from the top, in line counts. */
  12389. USHORT   usScrnBottom;                        /*  Vertical blanking away from the bottom, in line counts. */
  12390. USHORT   usScrnLeft;                          /*  Horizontal blanking away from the left, in pixel counts. */
  12391. USHORT   usScrnRight;                         /*  Horizontal blanking away from the right, in pixel counts. */
  12392. CHAR     szColorFormat[8];  /*  Color format string. */
  12393. CHAR     szColorWeight[8];  /*  Color weight string. */
  12394.  } VIDEOMODEINFO;
  12395.  
  12396. typedef VIDEOMODEINFO *FAR *PVIDEOMODEINFO;
  12397.  
  12398.  
  12399. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - miModeId ΓòÉΓòÉΓòÉ
  12400.  
  12401. miModeId (MODEID) 
  12402.    Used to make a SetMode request. 
  12403.  
  12404.  
  12405. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usType ΓòÉΓòÉΓòÉ
  12406.  
  12407. usType (USHORT) 
  12408.    Flag indicating mode type. 
  12409.  
  12410.    The following values are valid for this flag: 
  12411.  
  12412.      MODE_FLAG_NOT_MONO            0x0001; Mono-compatible 
  12413.  
  12414.      MODE_FLAG_GRAPHICS            0x0002; Text mode, Graphics 
  12415.  
  12416.      MODE_FLAG_NO_CLR_BRST         0x0004; Disable Color burst 
  12417.  
  12418.      MODE_FLAG_NATIVE              0x0008; Native (advanced function) mode 
  12419.  
  12420.      IGNORE_CLR_BRST               0x0010; Disable color burst doesn't make 
  12421.                                    sense for this mode 
  12422.  
  12423.      NOT_PLASMA                    0x0020; @V2.2TSU00 will not work on plasma 
  12424.                                    display 
  12425.  
  12426.      MODE_FLAG_VGA_ENTRY           0x0040; VGA mode, needs clean up 
  12427.  
  12428.  
  12429. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usInt10ModeSet ΓòÉΓòÉΓòÉ
  12430.  
  12431. usInt10ModeSet (USHORT) 
  12432.    Interrupt 10 mode. 
  12433.  
  12434.  
  12435. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usXResolution ΓòÉΓòÉΓòÉ
  12436.  
  12437. usXResolution (USHORT) 
  12438.    Horizontal pixels. 
  12439.  
  12440.  
  12441. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usYResolution ΓòÉΓòÉΓòÉ
  12442.  
  12443. usYResolution (USHORT) 
  12444.    Vertical scanlines. 
  12445.  
  12446.  
  12447. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulBufferAddress ΓòÉΓòÉΓòÉ
  12448.  
  12449. ulBufferAddress (ULONG) 
  12450.    Physical address of VRAM. 
  12451.  
  12452.  
  12453. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulApertureSize ΓòÉΓòÉΓòÉ
  12454.  
  12455. ulApertureSize (ULONG) 
  12456.    VRAM aperture. 
  12457.  
  12458.  
  12459. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bBitsPerPixel ΓòÉΓòÉΓòÉ
  12460.  
  12461. bBitsPerPixel (BYTE) 
  12462.    Number of colors. 
  12463.  
  12464.  
  12465. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bBitPlanes ΓòÉΓòÉΓòÉ
  12466.  
  12467. bBitPlanes (BYTE) 
  12468.    Number of planes. 
  12469.  
  12470.  
  12471. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bXCharSize ΓòÉΓòÉΓòÉ
  12472.  
  12473. bXCharSize (BYTE) 
  12474.    Font width. 
  12475.  
  12476.  
  12477. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bYCharSize ΓòÉΓòÉΓòÉ
  12478.  
  12479. bYCharSize (BYTE) 
  12480.    Font height. 
  12481.  
  12482.  
  12483. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usBytesPerScanLine ΓòÉΓòÉΓòÉ
  12484.  
  12485. usBytesPerScanLine (USHORT) 
  12486.    Number of bytes per scan line. 
  12487.  
  12488.  
  12489. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usTextRows ΓòÉΓòÉΓòÉ
  12490.  
  12491. usTextRows (USHORT) 
  12492.    Number of text rows. 
  12493.  
  12494.  
  12495. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulPageLength ΓòÉΓòÉΓòÉ
  12496.  
  12497. ulPageLength (ULONG) 
  12498.    Number of bytes to save a plane. 
  12499.  
  12500.  
  12501. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulSavesize ΓòÉΓòÉΓòÉ
  12502.  
  12503. ulSavesize (ULONG) 
  12504.    Total bytes of VRAM to save. 
  12505.  
  12506.  
  12507. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bVrtRefresh ΓòÉΓòÉΓòÉ
  12508.  
  12509. bVrtRefresh (BYTE) 
  12510.    Vertical refresh rate. 
  12511.  
  12512.  
  12513. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bHrtRefresh ΓòÉΓòÉΓòÉ
  12514.  
  12515. bHrtRefresh (BYTE) 
  12516.    Horizontal refresh rate. 
  12517.  
  12518.  
  12519. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bVrtPolPos ΓòÉΓòÉΓòÉ
  12520.  
  12521. bVrtPolPos (BYTE) 
  12522.    Vertical polarity. 
  12523.  
  12524.  
  12525. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bHrtPolPos ΓòÉΓòÉΓòÉ
  12526.  
  12527. bHrtPolPos (BYTE) 
  12528.    Horizontal polarity. 
  12529.  
  12530.  
  12531. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnTop ΓòÉΓòÉΓòÉ
  12532.  
  12533. usScrnTop (USHORT) 
  12534.    Vertical blanking away from the top, in line counts. 
  12535.  
  12536.  
  12537. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnBottom ΓòÉΓòÉΓòÉ
  12538.  
  12539. usScrnBottom (USHORT) 
  12540.    Vertical blanking away from the bottom, in line counts. 
  12541.  
  12542.  
  12543. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnLeft ΓòÉΓòÉΓòÉ
  12544.  
  12545. usScrnLeft (USHORT) 
  12546.    Horizontal blanking away from the left, in pixel counts. 
  12547.  
  12548.  
  12549. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnRight ΓòÉΓòÉΓòÉ
  12550.  
  12551. usScrnRight (USHORT) 
  12552.    Horizontal blanking away from the right, in pixel counts. 
  12553.  
  12554.  
  12555. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - szColorFormat[8] ΓòÉΓòÉΓòÉ
  12556.  
  12557. szColorFormat[8] (CHAR) 
  12558.    Color format string. 
  12559.  
  12560.  
  12561. ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - szColorWeight[8] ΓòÉΓòÉΓòÉ
  12562.  
  12563. szColorWeight[8] (CHAR) 
  12564.    Color weight string. 
  12565.  
  12566.  
  12567. ΓòÉΓòÉΓòÉ 11.38. VIDEOSTATE ΓòÉΓòÉΓòÉ
  12568.  
  12569. The VIDEOSTATE data structure receives information for the mode to be saved. 
  12570.  
  12571. typedef struct _VIDEOSTATE {
  12572. ULONG       fStateFlags;     /*  Flag indicating what to save. */
  12573. MODEID      miState;         /*  Contains the mode ID for the mode to be saved. */
  12574. PVOID       pModeData;       /*  Pointer to set mode command sequence. */
  12575. ULONG       ulVRAMSaveSize;  /*  Number of bytes per page to save. */
  12576. PVRAMDATA   pVRAM;           /*  Pointer to video memory. */
  12577. PCLUTDATA   pCLUT;           /*  Pointer to palette data. */
  12578. PFONTDATA   pFONT;           /*  Pointer to font data. */
  12579.  } VIDEOSTATE;
  12580.  
  12581. typedef VIDEOSTATE *FAR *PVIDEOSTATE;
  12582.  
  12583.  
  12584. ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - fStateFlags ΓòÉΓòÉΓòÉ
  12585.  
  12586. fStateFlags (ULONG) 
  12587.    Flag indicating what to save. 
  12588.  
  12589.      STATEFLAG_REGISTERS      0x0001 
  12590.  
  12591.      STATEFLAG_CLUT           0x0002 
  12592.  
  12593.      STATEFLAG_VRAM           0x0004 
  12594.  
  12595.      STATEFLAG_FONT           0x0008 
  12596.  
  12597.  
  12598. ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - miState ΓòÉΓòÉΓòÉ
  12599.  
  12600. miState (MODEID) 
  12601.    Contains the mode ID for the mode to be saved. 
  12602.  
  12603.  
  12604. ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pModeData ΓòÉΓòÉΓòÉ
  12605.  
  12606. pModeData (PVOID) 
  12607.    Pointer to set mode command sequence. 
  12608.  
  12609.  
  12610. ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - ulVRAMSaveSize ΓòÉΓòÉΓòÉ
  12611.  
  12612. ulVRAMSaveSize (ULONG) 
  12613.    Number of bytes per page to save. 
  12614.  
  12615.  
  12616. ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pVRAM ΓòÉΓòÉΓòÉ
  12617.  
  12618. pVRAM (PVRAMDATA) 
  12619.    Pointer to video memory. 
  12620.  
  12621.  
  12622. ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pCLUT ΓòÉΓòÉΓòÉ
  12623.  
  12624. pCLUT (PCLUTDATA) 
  12625.    Pointer to palette data. 
  12626.  
  12627.  
  12628. ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pFONT ΓòÉΓòÉΓòÉ
  12629.  
  12630. pFONT (PFONTDATA) 
  12631.    Pointer to font data. 
  12632.  
  12633.  
  12634. ΓòÉΓòÉΓòÉ 11.39. VMIQCI ΓòÉΓòÉΓòÉ
  12635.  
  12636. Output packet returned by the GRADD to the caller of the VMI_CMD_QUERYCHAININFO 
  12637. function. 
  12638.  
  12639. typedef struct _VMIQCI {
  12640. ULONG        ulLength;  /*  Size of the VMIQCI data structure, in bytes. */
  12641. PCHAININFO   pciHead;   /*  Pointer to the head of the GRADD chain. */
  12642.  } VMIQCI;
  12643.  
  12644. typedef VMIQCI *PVMIQCI;
  12645.  
  12646.  
  12647. ΓòÉΓòÉΓòÉ <hidden> VMIQCI Parameter - ulLength ΓòÉΓòÉΓòÉ
  12648.  
  12649. ulLength (ULONG) 
  12650.    Size of the VMIQCI data structure, in bytes. 
  12651.  
  12652.  
  12653. ΓòÉΓòÉΓòÉ <hidden> VMIQCI Parameter - pciHead ΓòÉΓòÉΓòÉ
  12654.  
  12655. pciHead (PCHAININFO) 
  12656.    Pointer to the head of the GRADD chain. 
  12657.  
  12658.  
  12659. ΓòÉΓòÉΓòÉ 11.40. VRAMALLOCIN ΓòÉΓòÉΓòÉ
  12660.  
  12661. Input packet to the GHI_CMD_VRAM function. 
  12662.  
  12663. typedef struct _VRAMALLOCIN {
  12664. ULONG   ulLength;    /*  Size of the VRAMALLOCIN data structure, in bytes. */
  12665. ULONG   ulFlags;     /*  Flag indicating type of VRAM allocation. */
  12666. ULONG   ulID;        /*  ID required as input only on deallocation. */
  12667. ULONG   ulFunction;  /*  Flag indicating type of VRAM allocation. */
  12668.  } VRAMALLOCIN;
  12669.  
  12670. typedef VRAMALLOCIN *PVRAMALLOCIN;
  12671.  
  12672.  
  12673. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  12674.  
  12675. ulLength (ULONG) 
  12676.    Size of the VRAMALLOCIN data structure, in bytes. 
  12677.  
  12678.  
  12679. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulFlags ΓòÉΓòÉΓòÉ
  12680.  
  12681. ulFlags (ULONG) 
  12682.    Flag indicating type of VRAM allocation. 
  12683.  
  12684.    Values are as follows: 
  12685.  
  12686.      VRAM_ALLOC_SHARED        0x0001 
  12687.      VRAM_ALLOC_RECTANGLE     0x0002 
  12688.      VRAM_ALLOC_STATIC        0x1000 
  12689.  
  12690.  
  12691. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulID ΓòÉΓòÉΓòÉ
  12692.  
  12693. ulID (ULONG) 
  12694.    ID required as input only on deallocation. 
  12695.  
  12696.  
  12697. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulFunction ΓòÉΓòÉΓòÉ
  12698.  
  12699. ulFunction (ULONG) 
  12700.    Flag indicating type of VRAM allocation. 
  12701.  
  12702.    Values are as follows: 
  12703.  
  12704.      VRAM_ALLOCATE       1 
  12705.      VRAM_DEALLOCATE     2 
  12706.      VRAM_QUERY          3 
  12707.  
  12708.  
  12709. ΓòÉΓòÉΓòÉ 11.41. VRAMALLOCOUT ΓòÉΓòÉΓòÉ
  12710.  
  12711. Output packet returned by the GRADD to the caller of the GHI_CMD_VRAM function. 
  12712.  
  12713. typedef struct _VRAMALLOCOUT {
  12714. ULONG    ulLength;         /*  Size of the VRAMALLOCOUT data structure, in bytes. */
  12715. ULONG    ulFlags;          /*  Flag indicating type of VRAM allocation. */
  12716. ULONG    ulID;             /*  ID returned on allocation. */
  12717. POINTL   ptlStart;         /*  X and Y location of VRAM. */
  12718. ULONG    ulSize;           /*  Requested size of VRAM, in bytes. */
  12719. ULONG    ulScanLineBytes;  /*  Length of scan line, in bytes. */
  12720.  } VRAMALLOCOUT;
  12721.  
  12722. typedef VRAMALLOCOUT *PVRAMALLOCOUT;
  12723.  
  12724.  
  12725. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
  12726.  
  12727. ulLength (ULONG) 
  12728.    Size of the VRAMALLOCOUT data structure, in bytes. 
  12729.  
  12730.  
  12731. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulFlags ΓòÉΓòÉΓòÉ
  12732.  
  12733. ulFlags (ULONG) 
  12734.    Flag indicating type of VRAM allocation. 
  12735.  
  12736.    Value is as follows: 
  12737.  
  12738.      VRAM_ALLOC_WORKBUFFER         0x0004 
  12739.  
  12740.  
  12741. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulID ΓòÉΓòÉΓòÉ
  12742.  
  12743. ulID (ULONG) 
  12744.    ID returned on allocation. 
  12745.  
  12746.  
  12747. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ptlStart ΓòÉΓòÉΓòÉ
  12748.  
  12749. ptlStart (POINTL) 
  12750.    X and Y location of VRAM. 
  12751.  
  12752.  
  12753. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulSize ΓòÉΓòÉΓòÉ
  12754.  
  12755. ulSize (ULONG) 
  12756.    Requested size of VRAM, in bytes. 
  12757.  
  12758.  
  12759. ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulScanLineBytes ΓòÉΓòÉΓòÉ
  12760.  
  12761. ulScanLineBytes (ULONG) 
  12762.    Length of scan line, in bytes. 
  12763.  
  12764.  
  12765. ΓòÉΓòÉΓòÉ 11.42. VRAMDATA ΓòÉΓòÉΓòÉ
  12766.  
  12767. The VRAMDATA data structure is a pointer to video memory. 
  12768.  
  12769. typedef BYTE VRAMDATA;
  12770.  
  12771.  
  12772. ΓòÉΓòÉΓòÉ 11.43. VRAMIN ΓòÉΓòÉΓòÉ
  12773.  
  12774. Input packet to the GHI_CMD_VRAM function. 
  12775.  
  12776. typedef struct _VRAMIN {
  12777. ULONG   ulLength;    /*  Size of the VRAMIN data structure, in bytes. */
  12778. ULONG   ulFunction;  /*  Flag indicating type of VRAM allocation. */
  12779. PVOID   pIn;         /*  Pointer to an allocate or register packet. */
  12780.  } VRAMIN;
  12781.  
  12782. typedef VRAMIN *PVRAMIN;
  12783.  
  12784.  
  12785. ΓòÉΓòÉΓòÉ <hidden> VRAMIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  12786.  
  12787. ulLength (ULONG) 
  12788.    Size of the VRAMIN data structure, in bytes. 
  12789.  
  12790.  
  12791. ΓòÉΓòÉΓòÉ <hidden> VRAMIN Parameter - ulFunction ΓòÉΓòÉΓòÉ
  12792.  
  12793. ulFunction (ULONG) 
  12794.    Flag indicating type of VRAM allocation. 
  12795.  
  12796.    Values are as follows: 
  12797.  
  12798.      VRAM_ALLOCATE       1 
  12799.      VRAM_DEALLOCATE     2 
  12800.      VRAM_QUERY          3 
  12801.      VRAM_REGISTER       4 
  12802.      VRAM_DEREGISTER     5 
  12803.  
  12804.  
  12805. ΓòÉΓòÉΓòÉ <hidden> VRAMIN Parameter - pIn ΓòÉΓòÉΓòÉ
  12806.  
  12807. pIn (PVOID) 
  12808.    Pointer to an allocate or register packet. 
  12809.  
  12810.  
  12811. ΓòÉΓòÉΓòÉ 11.44. VRAMREGISTERIN ΓòÉΓòÉΓòÉ
  12812.  
  12813. Input packet to the GHI_CMD_VRAM function via the VRAMIN data structure. 
  12814.  
  12815. typedef struct _VRAMREGISTERIN {
  12816. ULONG   ulLength;  /*  Size of the VRAMREGISTERIN data structure, in bytes.  */
  12817. ULONG   ulHandle;  /*  Handle required as input on deregister. */
  12818. ULONG   ulFlags;   /*  Flag indicating type of VRAM registration. */
  12819.  } VRAMREGISTERIN;
  12820.  
  12821. typedef VRAMREGISTERIN *PVRAMREGISTERIN;
  12822.  
  12823.  
  12824. ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTERIN Parameter - ulLength ΓòÉΓòÉΓòÉ
  12825.  
  12826. ulLength (ULONG) 
  12827.    Size of the VRAMREGISTERIN data structure, in bytes. 
  12828.  
  12829.  
  12830. ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTERIN Parameter - ulHandle ΓòÉΓòÉΓòÉ
  12831.  
  12832. ulHandle (ULONG) 
  12833.    Handle required as input on deregister. 
  12834.  
  12835.  
  12836. ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTERIN Parameter - ulFlags ΓòÉΓòÉΓòÉ
  12837.  
  12838. ulFlags (ULONG) 
  12839.    Flag indicating type of VRAM registration. 
  12840.  
  12841.    Values are as follows: 
  12842.  
  12843.      VRAM_REGISTER_HANDLE          0x0001 
  12844.  
  12845.      VRAM_REGISTER_VRAMONLY        0x1000 
  12846.  
  12847.  
  12848. ΓòÉΓòÉΓòÉ 11.45. VRAMREGISTEROUT ΓòÉΓòÉΓòÉ
  12849.  
  12850. Output packet returned by the GRADD to the caller of the GHI_CMD_VRAM function 
  12851. via the VRAMIN data structure. 
  12852.  
  12853. typedef struct _VRAMREGISTEROUT {
  12854. ULONG   ulLength;  /*  Size of the VRAMREGISTEROUT data structure, in bytes.  */
  12855. ULONG   ulFlags;   /*  Not used at this time. */
  12856. ULONG   ulHandle;  /*  Handle returned on register. */
  12857.  } VRAMREGISTEROUT;
  12858.  
  12859. typedef VRAMREGISTEROUT *PVRAMRGISTEROUT;
  12860.  
  12861.  
  12862. ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTEROUT Parameter - ulLength ΓòÉΓòÉΓòÉ
  12863.  
  12864. ulLength (ULONG) 
  12865.    Size of the VRAMREGISTEROUT data structure, in bytes. 
  12866.  
  12867.  
  12868. ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTEROUT Parameter - ulFlags ΓòÉΓòÉΓòÉ
  12869.  
  12870. ulFlags (ULONG) 
  12871.    Not used at this time. 
  12872.  
  12873.  
  12874. ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTEROUT Parameter - ulHandle ΓòÉΓòÉΓòÉ
  12875.  
  12876. ulHandle (ULONG) 
  12877.    Handle returned on register. 
  12878.  
  12879.  
  12880. ΓòÉΓòÉΓòÉ 12. Glossary ΓòÉΓòÉΓòÉ
  12881.  
  12882. This glossary contains terms and definitions that are, for the most part, used 
  12883. for OS/2 products. This is not a complete dictionary of computer terms. 
  12884.  
  12885.  
  12886. ΓòÉΓòÉΓòÉ 12.1. Introduction ΓòÉΓòÉΓòÉ
  12887.  
  12888. This glossary defines many of the terms used in this book. It includes terms 
  12889. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  12890. to the Presentation Manager, but it is not a complete glossary for OS/2. 
  12891.  
  12892. Other primary sources for these definitions are: 
  12893.  
  12894.   o  The American National Standard Dictionary for Information Systems, ANSI 
  12895.      X3.172-1990, copyrighted 1990 by the American National Standards 
  12896.      Institute, 11 West 42nd Street, New York, New York 10036. These 
  12897.      definitions are identified by the symbol (A) after the definition. 
  12898.  
  12899.   o  The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  12900.      Technical Committee 1, of the International Organization for 
  12901.      Standardization and the International Electrotechnical Commission (ISO/IEC 
  12902.      JTC1/SC1). Definitions of published parts of this vocabulary are 
  12903.      identified by the symbol (I) after the definition; definitions taken from 
  12904.      draft international standards, committee drafts, and working papers being 
  12905.      developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  12906.      definition, indicating that final agreement has not yet been reached among 
  12907.      the participating National Bodies of SC1. 
  12908.  
  12909.  
  12910. ΓòÉΓòÉΓòÉ 12.2. Glossary Listing ΓòÉΓòÉΓòÉ
  12911.  
  12912. Select a starting letter of glossary terms: 
  12913.  
  12914. A    N 
  12915. B    O 
  12916. C    P 
  12917. D    Q 
  12918. E    R 
  12919. F    S 
  12920. G    T 
  12921. H    U 
  12922. I    V 
  12923. J    W 
  12924. K    X 
  12925. L    Y 
  12926. M    Z 
  12927.  
  12928.  
  12929. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  12930.  
  12931.  
  12932. ABIOS - Advanced BIOS. See BIOS. 
  12933.  
  12934. accumulator - (1) A register in which one operand of an operation can be stored 
  12935.    and subsequently replaced by the result of that operation. (T)  (2) In the 
  12936.    IBM 3800 Printing Subsystem Models 3 and 8, a feature that supplies a 
  12937.    separate storage that can hold data in raster form. It can be used either 
  12938.    for composing a sheet of data that combines a large amount of variable and 
  12939.    constant data, or for storing an electronic overlay in raster form that will 
  12940.    be merged with variable data as the sheet is printed. 
  12941.  
  12942. access permission - All access rights a user has regarding an object. (I) 
  12943.  
  12944. adapter - A piece of hardware that modifies the system unit to allow it to 
  12945.    operate in a particular way, often by connecting the system unit to an 
  12946.    external device such as a video monitor. 
  12947.  
  12948. adapter device driver - A device driver that provides hardware-dependent 
  12949.    services for an OEM adapter. 
  12950.  
  12951. address space -  (1) The range of addresses available to a program. (A)  (2) 
  12952.    The area of virtual storage available for a particular job. 
  12953.  
  12954. all points addressable (APA) - In computer graphics, pertaining to the ability 
  12955.    to address and display or not display each picture element (pel) on a 
  12956.    display surface. 
  12957.  
  12958. anchor block - An area of the internal resources of OS/2 Presentation Manager 
  12959.    which is allocated to a process or thread that calls WinInitialize. 
  12960.  
  12961. anchor point - The position or choice from which selection or deselection is 
  12962.    extended. 
  12963.  
  12964. APA - All points addressable. 
  12965.  
  12966. API - Application programming interface. 
  12967.  
  12968. application programming interface (API) - A functional interface supplied by 
  12969.    the operating system, or by a separately-orderable licensed program, that 
  12970.    allows an application program written in a high-level language to use 
  12971.    specific data or functions of the operating system or the licensed program. 
  12972.  
  12973. archive flag - In the OS/2 operating system, a flag of files and directories 
  12974.    that the operating system uses to determine which files are new or modified. 
  12975.    Files with this flag are included when a backup copy is made or when all the 
  12976.    files are restored on a hard disk. See flag. 
  12977.  
  12978. area - In computer graphics, a filled shape such as a solid rectangle. 
  12979.  
  12980. ASCIIZ - A string of ASCII characters that is terminated with a byte containing 
  12981.    the value 0. 
  12982.  
  12983. aspect ratio - (1) The ratio of the height of a rectangle to its width. A 
  12984.    rectangle of width 10 inches and height 5 inches has an aspect ratio of 10/5 
  12985.    or 2.  (2) On a display screen, the ratio of the maximum length of a display 
  12986.    line to the maximum length of a display column. 
  12987.  
  12988. asynchronous (ASYNC) - (1) Pertaining to two or more processes that do not 
  12989.    depend upon the occurrence of specific events such as common timing 
  12990.    signals. (T)  (2) Without regular time relationship; unexpected or 
  12991.    unpredictable with respect to the execution of program instructions. 
  12992.  
  12993. atom - A constant that represents a string. Once a string has been defined as 
  12994.    an atom, the atom can be used in place of the string to save space. Strings 
  12995.    are associated with their respective atoms in an atom table. See integer 
  12996.    atom. 
  12997.  
  12998. atom table - A table used to associate atoms with the strings that they 
  12999.    represent. This table contains the mechanism by which the presence of a 
  13000.    string can be verified. 
  13001.  
  13002. AVIO - Advanced Video Input/Output 
  13003.  
  13004.  
  13005. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  13006.  
  13007.  
  13008. background color - The color assigned to a background image. 
  13009.  
  13010. background mix - An attribute that determines how the background of a graphic 
  13011.    primitive is combined with the existing color of the graphics presentation 
  13012.    space. 
  13013.  
  13014. base device driver - An OS/2 device driver that performs I/O during the OS/2 
  13015.    kernel boot sequence to provide IPL support. Base device drivers are loaded 
  13016.    by way of the CONFIG.SYS BASEDEV keyword, rather than the DEVICE keyword. 
  13017.    See BASEDEV keyword, adapter device driver, and device manager. 
  13018.  
  13019. BASEDEV keyword - New CONFIG.SYS keyword; loads a base device driver into the 
  13020.    operating system. 
  13021.  
  13022. Basic Input/Output System (BIOS) - Code that controls basic hardware 
  13023.    operations, such as interactions with diskette drives, hard disk drives, and 
  13024.    the keyboard. 
  13025.  
  13026. Bezier curve - A mathematical technique of specifying a smooth, continuous line 
  13027.    or surface, requiring a starting point and an ending point, with several 
  13028.    intermediate points that influence or control the path of the linking curve. 
  13029.  
  13030. BIOS - Basic Input/Output System. 
  13031.  
  13032. bit-block transfer (bitblt) - Transfer of a rectangular array of bit-map data. 
  13033.  
  13034. bitblt - Bit-block transfer. 
  13035.  
  13036. bit map - A representation of an image by an array of bits. 
  13037.  
  13038. block - (1) In programming languages, a compound statement that coincides with 
  13039.    the scope of at least one of the declarations contained within it. A block 
  13040.    may also specify storage allocation or segment programs for other 
  13041.    purposes. (I)  (2) A string of data elements recorded or transmitted as a 
  13042.    unit. The elements may be characters, words or physical records. (T)  (3) A 
  13043.    collection of contiguous records recorded as a unit. Blocks are separated by 
  13044.    interblock gaps and each block may contain one or more records. (A)
  13045.  
  13046. Bit block transfer (bitblt) - The process of transferring one or more blocks of 
  13047.    data. 
  13048.  
  13049. border - A visual indicator of a window's boundaries. 
  13050.  
  13051. BPB - BIOS Parameter Block. 
  13052.  
  13053. breakpoint - (1) A point in a computer program where execution may be halted. A 
  13054.    breakpoint is usually at the beginning of an instruction where halts, caused 
  13055.    by external intervention, are convenient for resuming execution. (T)  (2) An 
  13056.    instruction in a program for halting execution.  Breakpoints are usually 
  13057.    established at positions in a program where halts, caused by external 
  13058.    intervention, are convenient for restarting. (T)  (3) A place in a program, 
  13059.    specified by a command or a condition, where the system halts execution and 
  13060.    gives control to the workstation user or to a specified program. 
  13061.  
  13062. Bus Master adapter - An adapter capable of performing Reads and Writes to 
  13063.    physical storage by communicating directly with the storage subsystem 
  13064.    (memory) rather than depending on a host DMA channel or host CPU. Synonymous 
  13065.    with first-party DMA adapter. 
  13066.  
  13067.  
  13068. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  13069.  
  13070.  
  13071. cached micro presentation space - A presentation space from a Presentation 
  13072.    Manager owned store of micro presentation spaces. It can be used for drawing 
  13073.    to a window only, and must be returned to the store when the task is 
  13074.    complete. 
  13075.  
  13076. CDB - Command Descriptor Block. 
  13077.  
  13078. cell - See character cell. 
  13079.  
  13080. character box -  (1) An imaginary parallelogram on a display surface that 
  13081.    contains all parts of one graphic character. Synonymous with bounding 
  13082.    box. (T)  (2) The maximum area in which a symbol and all associated 
  13083.    elements, such as a cursor, an underline, or space surrounding the symbol to 
  13084.    separate it from other symbols, can be printed or displayed. Synonymous with 
  13085.    character cell. (3) The imaginary parallelogram whose boundaries govern the 
  13086.    size, orientation, and spacing of individual characters to be displayed on a 
  13087.    graphics display device. 
  13088.  
  13089. character cell -  (1) An addressable location on a display surface or printing 
  13090.    medium.  (2) The physical width and height in pels of a font. See also 
  13091.    bounding box.  (3) The imaginary box whose boundaries govern the size, 
  13092.    orientation, and spacing of individual characters to be displayed on a 
  13093.    workstation. 
  13094.  
  13095. character mode - A mode that, in conjunction with the font type, determines the 
  13096.    extent to which graphics characters are affected by the character box, 
  13097.    shear, and angle attributes. 
  13098.  
  13099. clipping - In computer graphics, removing those parts of display elements that 
  13100.    lie outside of given boundary. 
  13101.  
  13102. clip limits - The area of the paper that can be reached by a printer or 
  13103.    plotter. 
  13104.  
  13105. clipping path - A clipping boundary in world-coordinate space. 
  13106.  
  13107. code page - An assignment of graphic characters and control function meanings 
  13108.    to all code points; for example, assignment of characters and meanings to 
  13109.    256 code points for an 8-bit code, assignment of characters and meanings to 
  13110.    128 code points for a 7-bit code. 
  13111.  
  13112. code point - A 1-byte code representing one of 256 potential characters. 
  13113.  
  13114. code segment - An executable section of programming code within a load module. 
  13115.  
  13116. color conversion - Changing one color format to another. Required, for example, 
  13117.    when the source color format is different from the destination color format. 
  13118.    When going from the monochrome color format to the color format, 1 (one) 
  13119.    bits are converted to the image foreground color, and 0 (zero) bits are 
  13120.    converted to the image background color. 
  13121.  
  13122.    When going from color to monochrome, all pels that match the passed 
  13123.    background color are converted to the image background color of the 
  13124.    destination. 
  13125.  
  13126.    All other pels are converted to the image foreground color of the 
  13127.    destination. The color conversion takes place prior to any mix mode. 
  13128.  
  13129. color dithering - See dithering. 
  13130.  
  13131. command code - In this specification, refers to a group of related commands 
  13132.    that an adapter device driver can receive. 
  13133.  
  13134.    All command codes have a prefix of "IOCC_". For example, common I/O requests 
  13135.    (such as Read, Write, etc.) are grouped under the command code 
  13136.    IOCC_EXECUTE_IO. 
  13137.  
  13138. command data block - A data structure defined by the Small Computer System 
  13139.    Interface standard to send commands to devices that conform to SCSI 
  13140.    standards. 
  13141.  
  13142. command descriptor block (CDB) - The structure used to communicate commands 
  13143.    from a source to a destination. 
  13144.  
  13145. command modifier - In this specification, a specific operation that an adapter 
  13146.    device driver is to perform. 
  13147.  
  13148.    All command modifiers have a prefix of "IOCM_". For example, an adapter 
  13149.    device driver might receive an IOCC_EXECUTE_IO command with a command 
  13150.    modifier of IOCM_READ. 
  13151.  
  13152. compatibility kernel - The portion of the OS/2 kernel that exists to support 
  13153.    DOS INT 20, 21, 25, 26, and 27 functions. It acts as an interface to common 
  13154.    kernel functionality such as the file system. 
  13155.  
  13156. CON - Character-device name reserved for the console keyboard and screen. 
  13157.  
  13158. conditional compilation - Processing by the preprocessor of certain specified 
  13159.    code in the file, depending on the evaluation of a specified condition. 
  13160.  
  13161. context hook - Similar to a "force flag" in earlier versions of OS/2. These are 
  13162.    events, signaled by a virtual device driver, that are processed at task 
  13163.    time. Forcing an IRET, and simulating an NMI, can fall into this category. 
  13164.  
  13165. control program - A computer program designed to schedule and to supervise the 
  13166.    execution of programs of a computer system. 
  13167.  
  13168. controller sector buffer - One or more buffers, managed by a hardware adapter, 
  13169.    to improve I/O transfer rates by helping to match a device and software 
  13170.    timing requirements. 
  13171.  
  13172.  
  13173. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  13174.  
  13175.  
  13176. DASD - Direct-access storage device. 
  13177.  
  13178. data bus - A bus used to communicate data internally and externally to and from 
  13179.    a processing unit, storage, and peripheral devices. (A)  See bus. 
  13180.  
  13181. data structure - The syntactic structure of symbolic expressions and their 
  13182.    storage allocation characteristics. (T)
  13183.  
  13184. DBCS - Double-byte character set. 
  13185.  
  13186. DC - Device context. 
  13187.  
  13188. DDB - Device-dependent bit map. 
  13189.  
  13190. deinstantiation - See instantiation. 
  13191.  
  13192. DevHlp - Device helper. 
  13193.  
  13194. device context (DC) - A logical description of a data destination such as 
  13195.    memory, metafile, display, printer, or plotter. See also direct device 
  13196.    context, information device context, memory device context, metafile device 
  13197.    context, and screen device context. 
  13198.  
  13199. device driver -  A file that contains the code needed to attach and use a 
  13200.    device such as a display, printer, or plotter. 
  13201.  
  13202. device driver initialization (init) time - See initialization (init) time, 
  13203.    device driver. 
  13204.  
  13205. device driver profile - A file with a "DDP" extension, containing a script that 
  13206.    is interpreted by the OS/2 DDINSTAL utility. Among other things, it defines 
  13207.    which files to copy from installation diskettes to target directories and 
  13208.    specifies how the CONFIG.SYS file will be updated. 
  13209.  
  13210. device helper (DevHlp) -  (1) A kernel service (memory, hardware interrupt, 
  13211.    software interrupt, queuing, semaphore, and so forth) provided to physical 
  13212.    device drivers. (2) A callable C-language or assembler-language routine that 
  13213.    provides an operating system service for an OS/2 device driver. 
  13214.  
  13215. device object - A device that provides a means of communication between a 
  13216.    computer and the outside world. A printer is an example of a device object. 
  13217.  
  13218. device table - A data structure containing a summary of the adapters an adapter 
  13219.    device driver supports and a list of the I/O devices attached to each 
  13220.    adapter. This data structure is built by the adapter device driver in 
  13221.    response to an IOCC_CONFIGURATION IOCM_GET_DEVICE_TABLE request. 
  13222.  
  13223. direct access storage device (DASD) - A device in which access time is 
  13224.    effectively independent of the location of the data. 
  13225.  
  13226. direct memory access (DMA) -  (1) A technique for moving data directly between 
  13227.    main storage and peripheral equipment without requiring processing of the 
  13228.    data by the processing unit. (2) The transfer of data between memory and 
  13229.    input/output units without processor intervention. 
  13230.  
  13231. display frame - (1) In computer graphics, an area in storage in which a display 
  13232.    image can be recorded.  (2) In computer micrographics, an area on a 
  13233.    microform in which a display image can be recorded. 
  13234.  
  13235. dispatch table -  (1) A block of memory, allocated by the graphics engine, for 
  13236.    the containment of entry points for use by a display driver. (2) An array of 
  13237.    pointers to function-handling routines. 
  13238.  
  13239. dithering - A technique for interleaving dark and light pels so that the 
  13240.    resulting image looks smoothly shaded from a distance. 
  13241.  
  13242. DLL - Dynamic link library. 
  13243.  
  13244. DMA - Direct memory access. 
  13245.  
  13246. double-byte character set (DBCS) - A set of characters in which each character 
  13247.    is represented by two bytes. Languages such as Japanese, Chinese, and 
  13248.    Korean, which contain more characters than can be represented by 256 code 
  13249.    points, require double-byte character sets. Because each character requires 
  13250.    2 bytes, the typing, display, and printing of DBCS characters requires 
  13251.    hardware and programs that support DBCS. Contrast with single-byte character 
  13252.    set. 
  13253.  
  13254. driver - (1) A program (and possibly data files) that contain information 
  13255.    needed to run a particular unit, such as a plotter, printer, port, or mouse. 
  13256.    See also device driver and printer driver. (2) A system or device that 
  13257.    enables a functional unit to operate. 
  13258.  
  13259. dynamic link library (DLL) - A file containing executable code and data bound 
  13260.    to a program at load time or run time, rather than during linking. The code 
  13261.    and data in a dynamic link library can be shared by several applications 
  13262.    simultaneously. 
  13263.  
  13264.  
  13265. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  13266.  
  13267.  
  13268. entry point - (1) In a database, the record that is first accessed upon entry 
  13269.    into a database, caused by a user's command. (T)  (2) The address or label 
  13270.    of the first instruction executed on entering a computer program, routine, 
  13271.    or subroutine. A computer program, routine, or subroutine may have a number 
  13272.    of different entry points, each perhaps corresponding to a different 
  13273.    function or purpose. (I)  (A)  Synonymous with entrance, entry. (3) In a 
  13274.    routine, any place to which control can be passed. (A)  (4) In the C, 
  13275.    FORTRAN, and Pascal languages, the address or label of the first instruction 
  13276.    processed or entered in a program, routine, or subroutine. A program, 
  13277.    routine, or subroutine can have a number of different entry points, each 
  13278.    corresponding to a different function or purpose. 
  13279.  
  13280. EOI - End Of Interrupt 
  13281.  
  13282.  
  13283. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  13284.  
  13285.  
  13286. Far call - Code that calls from one segment into another segment. 
  13287.  
  13288. fillet - An arc that is tangential to the end points of two adjacent lines. See 
  13289.    also polyfillet. 
  13290.  
  13291. filter adapter device driver - A special class of adapter device drivers that 
  13292.    do not manage the hardware directly, but monitor the stream of commands 
  13293.    between a device manager and an adapter device driver. See Device Manager 
  13294.    and adapter device driver. 
  13295.  
  13296. first-party DMA adapter - See bus master adapter. 
  13297.  
  13298. flag - A characteristic of a file or directory that enables it to be used in 
  13299.    certain ways. See also archive flag, hidden flag, and read-only flag. 
  13300.  
  13301. flat address - See linear address. 
  13302.  
  13303. frame styles - Standard window layouts provided by the Presentation Manager. 
  13304.  
  13305. freeze and thaw services - Functions that prevent a DOS session from executing 
  13306.    (VDHFreezeVDM) until the matching thaw function (VDHThawVDM) is called. The 
  13307.    freeze occurs when the specified DOS session leaves kernel mode. 
  13308.  
  13309.  
  13310. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  13311.  
  13312.  
  13313. GDT - Global descriptor table. 
  13314.  
  13315. Global Descriptor Table (GDT) - A table that defines code and data segments 
  13316.    available to all tasks in an application. 
  13317.  
  13318. glyph - A graphic symbol whose appearance conveys information; for example, the 
  13319.    vertical and horizontal arrows on cursor keys that indicate the directions 
  13320.    in which they control cursor movement, the sunburst symbol on the screen 
  13321.    illumination control of a display device. 
  13322.  
  13323. GPI - Graphics programming interface 
  13324.  
  13325. graphic primitive - In computer graphics, a basic element, such as an arc or a 
  13326.    line, that is not made up of smaller parts and that is used to create 
  13327.    diagrams and pictures. 
  13328.  
  13329. graphics attributes - The attributes that apply to graphics primitives. 
  13330.    Examples are color selection, line type, and shading pattern definition. 
  13331.    Contrast with segment attributes. 
  13332.  
  13333. Graphics programming interface (GPI) - The formally-defined programming 
  13334.    language that lies between an IBM graphics program and the user of the 
  13335.    program. 
  13336.  
  13337. graphics segment - A sequence of related graphic primitives and graphics 
  13338.    attributes. See also graphic primitive. 
  13339.  
  13340. GRE - Graphics engine. 
  13341.  
  13342.  
  13343. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  13344.  
  13345.  
  13346. handle - (1) An identifier that represents an object, such as a device or a 
  13347.    window, to the Presentation Interface.  (2) In the Advanced DOS and OS/2 
  13348.    operating systems, a binary value created by the system that identifies a 
  13349.    drive, directory, and file so that the file can be found and opened. 
  13350.  
  13351. handshaking - A method by which two pieces of hardware, such as a personal 
  13352.    computer and a plotter, can communicate. Depending upon the devices 
  13353.    communicating, handshaking occurs either as a hardware function or through 
  13354.    software, such as a device driver. 
  13355.  
  13356. hard error - An error condition on a network that requires that the network be 
  13357.    reconfigured or that the source of the error be removed before the network 
  13358.    can resume reliable operation. 
  13359.  
  13360. hardware palette - The array of RGBs that the physical device is displaying. 
  13361.  
  13362. heap - An area of free storage available for dynamic allocation by an 
  13363.    application. Its size varies depending on the storage requirements of the 
  13364.    application. 
  13365.  
  13366. hex - See hexadecimal 
  13367.  
  13368. hexadecimal - Pertaining to a system of numbers to the base 16; hexadecimal 
  13369.    digits range from 0 through 9 and A through F, where A represents 10 and F 
  13370.    represents 15. 
  13371.  
  13372. hook - A point in a system-defined function where an application can supply 
  13373.    additional code that the system processes as though it were part of the 
  13374.    function. 
  13375.  
  13376. hook chain - A sequence of hook procedures that are "chained" together so that 
  13377.    each event is passed in turn to each procedure in the chain. 
  13378.  
  13379.  
  13380. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  13381.  
  13382.  
  13383. IDC - Inter-device-driver communication. 
  13384.  
  13385. in-memory buffer - A block of memory in the address space of the host machine, 
  13386.    used for data transfer. 
  13387.  
  13388. init time - See initialization time, device driver. 
  13389.  
  13390. initialization time, device driver - After the OS/2 loads a device driver, it 
  13391.    sends it an OS/2 request packet to initialize. During this initialization, 
  13392.    certain DevHlp functions are not permitted. Also called init time. 
  13393.  
  13394. Input/Output Control (IOCtl) - A system service that provides a way for an 
  13395.    application to send device-specific control commands to a device driver. 
  13396.  
  13397. Input/Output Privilege Level (IOPL) - Allows part of a Ring 3 application or 
  13398.    device driver to execute at Ring 0. 
  13399.  
  13400. input router - OS/2 internal process that removes messages from the system 
  13401.    queue. 
  13402.  
  13403. inter-device-driver communication (IDC) - A mechanism that enables a physical 
  13404.    device driver to communicate with another physical device driver. 
  13405.  
  13406. interprocess communication - In the OS/2 operating system, the exchange of 
  13407.    information between processes or threads through semaphores, queues, and 
  13408.    shared memory. 
  13409.  
  13410. interrupt - An instruction that directs the microprocessor to suspend what it 
  13411.    is doing and run a specified routine. When the routine is complete, the 
  13412.    microprocessor resumes its original work. See also routine. 
  13413.  
  13414. interrupt request (IR) - Broadly, an "interrupt request level", referring to 
  13415.    pending or in-service interrupt requests, or to a specific level (for 
  13416.    example, IR 4). 
  13417.  
  13418. interrupt request flag - A bit in the 8259 PIC controller that indicates an 
  13419.    interrupt is pending on particular level. The VPIC also maintains a virtual 
  13420.    interrupt request flag for each interrupt level for each DOS session. 
  13421.  
  13422. interrupt service flag - A bit in the 8259 PIC controller that indicates an 
  13423.    interrupt request is being serviced. It is cleared when the PIC is sent EOI. 
  13424.    The VPIC maintains a virtual interrupt service flag indicating that a 
  13425.    simulated interrupt is in-progress in a DOS session. 
  13426.  
  13427. interrupt time - When a device driver is run because of an interrupt rather 
  13428.    than because of an application request. OS/2 device drivers receive 
  13429.    interrupts either from the hardware they manage or from the system real-time 
  13430.    clock. 
  13431.  
  13432.    During interrupt time, certain DevHlp functions are not permitted. Also, 
  13433.    addresses received directly from OS/2 applications might not be valid unless 
  13434.    they are converted system addresses. 
  13435.  
  13436. IOCtl - Input/Output Control. 
  13437.  
  13438. IOPL - Input/Output Privilege Level. 
  13439.  
  13440. IORB - Input/Output Request Block. 
  13441.  
  13442. Input/Output Request Block (IORB) - A data structure defined by this 
  13443.    specification that is passed as a parameter on all calls to an adapter 
  13444.    device driver. It contains a fixed section, followed by a command-dependent 
  13445.    section. 
  13446.  
  13447. IORBH - Input/Output Request Block Header 
  13448.  
  13449. IRET - Interrupt return. 
  13450.  
  13451. IRQ - Interrupt Request. 
  13452.  
  13453.  
  13454. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  13455.  
  13456.  
  13457. journal - A special-purpose file or data set that can be used to provide an 
  13458.    audit trail of operator and system actions, or as a means of recovering 
  13459.    superseded data. 
  13460.  
  13461.  
  13462. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  13463.  
  13464.  
  13465. kanji - A graphic character set consisting of symbols used in Japanese 
  13466.    ideographic alphabets. Each character is represented by 2 bytes. 
  13467.  
  13468. kernel - (1) The part of an operating system that performs basic functions such 
  13469.    as allocating hardware resources. (2) A program that can run under different 
  13470.    operating system environments. 
  13471.  
  13472. kerning - The design of graphic characters so that their character boxes 
  13473.    overlap. The toned picture elements (pels) of the character appear outside 
  13474.    the character cell. 
  13475.  
  13476.    Note:  Kerning allows character boxes to overlap and characters to run 
  13477.    together, so that characters can be designed for cursive languages, 
  13478.    ligatures, or any other kind of character that requires more than one 
  13479.    character box. It also allows for design of proportional-spaced fonts. By 
  13480.    overlapping character boxes, characters can be placed closer together, or 
  13481.    they can be placed farther apart by using overlapped blank character boxes. 
  13482.  
  13483.  
  13484. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  13485.  
  13486.  
  13487. LCT - logical color table. 
  13488.  
  13489. LDT - Local descriptor table. 
  13490.  
  13491. LIFO stack - A data structure from which data is retrieved in "Last-In, 
  13492.    First-Out" order. 
  13493.  
  13494. linked list - A list in which the data elements may be dispersed, but in which 
  13495.    each data element contains information for locating the next. Synonym for 
  13496.    chained list. 
  13497.  
  13498. linear address - A unique value that identifies the memory object. 
  13499.  
  13500. Local Descriptor Table (LDT) - A table that defines code and data segments 
  13501.    specific to a single task. 
  13502.  
  13503. logical palette - An array of RGB and mapping index pairs, created by the 
  13504.    device driver when defining a palette (as a result of a GpqCreatePalette 
  13505.    call). 
  13506.  
  13507. LVB - Logical Video Buffer. 
  13508.  
  13509.  
  13510. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  13511.  
  13512.  
  13513. memory device context - A logical description of a data destination that is a 
  13514.    memory bit map. See also device context. 
  13515.  
  13516. metafile - A file containing a series of attributes that set color, shape, and 
  13517.    size, usually of a picture or a drawing. Using a program that can interpret 
  13518.    these attributes, a user can view the assembled image. 
  13519.  
  13520. metafile device context - A logical description of a data destination that is a 
  13521.    metafile which is used for graphics interchange. See also device context. 
  13522.  
  13523. mickey - A unit of measurement for physical mouse motion whose value depends on 
  13524.    the mouse device driver that is currently loaded. 
  13525.  
  13526. mixed character string - A string containing a mixture of one-byte and kanji or 
  13527.    Hangeul (two-byte) characters. 
  13528.  
  13529. mutex semaphore - (Mutual exclusion semaphore). A semaphore that enables 
  13530.    threads to serialize their access to resources. Only the thread that 
  13531.    currently owns the mutex semaphore can gain access to the resource, thus 
  13532.    preventing one thread from interrupting operations being performed by 
  13533.    another. 
  13534.  
  13535.  
  13536. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  13537.  
  13538.  
  13539. named pipe - A named buffer that provides client-to-server, server-to-client or 
  13540.    duplex communication between unrelated processes. Contrast with unnamed 
  13541.    pipe. 
  13542.  
  13543. notification callout - The feature that provides for a routine to be called on 
  13544.    completion of an input/output request. See also notification routine. 
  13545.  
  13546. notification routine - The routine indicated in an input/output request block 
  13547.    to be called on completion of that request. See also notification callout. 
  13548.  
  13549. null-terminated string - A string of (n+1) characters where the (n+1)th 
  13550.    character is the "null" character (X'00') and is used to represent an 
  13551.    n-character string with implicit length. Also called a "zero-terminated" 
  13552.    string or an "ASCIIZ". string. 
  13553.  
  13554.  
  13555. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  13556.  
  13557.  
  13558.    There are no glossary terms for this initial letter. 
  13559.  
  13560.  
  13561. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  13562.  
  13563.  
  13564. palette - A list of colors assigned to various areas on a panel. A user can 
  13565.    change the color of these areas. 
  13566.  
  13567. PDD - Physical Device Driver. 
  13568.  
  13569. PDE - PageDirectoryEntry. 
  13570.  
  13571. pel - Picture element. 
  13572.  
  13573. permissible action - In a conceptual schema language, an action conforming to 
  13574.    specified rules or constraints that changes a presumably consistent 
  13575.    collection of sentences into a consistent one or makes known a consistent 
  13576.    one present in the information base or conceptual schema. 
  13577.  
  13578. phase alignment - Aligning source bits with destination bits. Often required in 
  13579.    a Bitblt function move operation where byte blocks are moved on bit 
  13580.    boundaries. 
  13581.  
  13582. physical address - A 32-bit byte address giving the actual address in physical 
  13583.    storage for a data item. 
  13584.  
  13585. physical device driver (PDD) - A system interface that handles hardware 
  13586.    interrupts and supports a set of input and output functions. 
  13587.  
  13588. pipe - See named pipe, unnamed pipe. 
  13589.  
  13590. picture element (pel, pixel) -  (1) In computer graphics, the smallest element 
  13591.    of a display surface that can be independently assigned color and 
  13592.    intensity. (T). (2) The area of the finest detail that can be reproduced 
  13593.    effectively on the recording medium.  (3) An element of a raster pattern 
  13594.    about which a toned area on a photoconductor can appear. 
  13595.  
  13596. PIO - Programmed I/O. 
  13597.  
  13598. pixel - Picture element. 
  13599.  
  13600. polyfillet - A curve based on a sequence of lines. The curve is tangential to 
  13601.    the end points of the first and last lines, and tangential also to the 
  13602.    midpoints of all other lines. 
  13603.  
  13604. polyline - In computer graphics, a sequence of adjoining lines. 
  13605.  
  13606. pop - To remove an item from the top of a pushdown list. Contrast with push. 
  13607.  
  13608. prefetch - To locate and load a quantity of data in anticipation of a request. 
  13609.  
  13610. presence-check function - A Ring 3 (non-privileged) .EXE program that 
  13611.    determines whether a given hardware interface is present on a workstation. 
  13612.  
  13613. PRESENCECHECK - A keyword, interpreted by the DDINSTAL utility, to determine 
  13614.    whether to process the device driver profile file, based on the return code 
  13615.    from PRESENCECHECK. 
  13616.  
  13617. printer driver - A file that describes the physical characteristics of a 
  13618.    printer, plotter, or other peripheral device, and is used to convert 
  13619.    graphics and text into device-specific data at the time of printing or 
  13620.    plotting. 
  13621.  
  13622. Print Manager - In the Presentation Manager, the part of the spooler that 
  13623.    manages the spooling process. It also allows the user to view print queues 
  13624.    and to manipulate print jobs. 
  13625.  
  13626. privilege level - A method of protection that allows only certain program 
  13627.    instructions to be used by certain programs. 
  13628.  
  13629. program group - Several programs that can be acted upon as a single entity. 
  13630.  
  13631. protect mode - A method of program operation that limits or prevents access to 
  13632.    certain instructions or areas of storage. Contrast with real mode. 
  13633.  
  13634. push - To add an item to the top of a pushdown list. Contrast with pop. 
  13635.  
  13636.  
  13637. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  13638.  
  13639.  
  13640. queued device context - A logical description of a data destination (for 
  13641.    example, a printer or plotter) where the output is to go through the 
  13642.    spooler. See also device context. 
  13643.  
  13644.  
  13645. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  13646.  
  13647.  
  13648. read-only memory basic input/output system (ROM-BIOS) - Microcode in read-only 
  13649.    memory that controls basic input/output operations such as interactions with 
  13650.    cassettes, diskette drives, hard disk drives, and the keyboard. See also 
  13651.    BIOS, NetBIOS. 
  13652.  
  13653.    Note:  ROM BIOS allows the user to write programs and add or remove devices 
  13654.    without concern for characteristics such as device addresses. 
  13655.  
  13656. real mode - In the OS/2 operating system, a method of program operation that 
  13657.    does not limit or prevent access to any instructions or areas of storage. 
  13658.    The operating system loads the entire program into storage and gives the 
  13659.    program access to all system resources. 
  13660.  
  13661. reentrant - The attribute of a program or routine that allows the same copy of 
  13662.    the program or routine to be used concurrently by two or more tasks. 
  13663.  
  13664. removable-media indicator - A flag (bit) indicating that a device permits media 
  13665.    removal. 
  13666.  
  13667. resource - The means of providing extra information used in the definition of a 
  13668.    window. A resource can contain definitions of fonts, templates, accelerators 
  13669.    and mnemonics; the definitions are held in a resource file. 
  13670.  
  13671. resurrection - The Presentation Manager event that occurs when switched back 
  13672.    from a full-screen DOS or WIN-OS/2 session. 
  13673.  
  13674. RETF - Return far. 
  13675.  
  13676. reverse video - A form of highlighting a character, field, or cursor by 
  13677.    reversing the color of the character, field, or cursor with its background; 
  13678.    for example, changing a red character on a black background to a black 
  13679.    character on a red background. 
  13680.  
  13681. ROM BIOS - Read-Only Memory Basic Input/Output System. 
  13682.  
  13683. ROP - Raster operation. 
  13684.  
  13685. RTC - Real-Time Clock. 
  13686.  
  13687.  
  13688. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  13689.  
  13690.  
  13691. SBCS - Single-byte character set 
  13692.  
  13693. SCB - See subsystem control block architecture. 
  13694.  
  13695. screen device context - A logical description of a data destination that is a 
  13696.    particular window on the screen. See also device context. 
  13697.  
  13698. SCSI - Small Computer System Interface. 
  13699.  
  13700. seamless windows - An architecture contained within OS/2 which permits one or 
  13701.    more applications to share windowed desktop graphical space and other 
  13702.    resources, while executing concurrently. Application session windows managed 
  13703.    by seamless windows can share border information, and pointing device 
  13704.    transitions from session to session are handled smoothly and transparently. 
  13705.  
  13706. second-party DMA adapter - See DMA slave. 
  13707.  
  13708. semaphore -  (1) A variable that is used to enforce mutual exclusion. (T)  (2) 
  13709.    An indicator used to control access to a file; for example, in a multiuser 
  13710.    application, a flag that prevents simultaneous access to a file. (3) An 
  13711.    entity used to control access to system resources. Processes can be locked 
  13712.    to a resource with semaphores if the processes follow certain programming 
  13713.    conventions. 
  13714.  
  13715. sense data - Data which describes an I/O error as defined by the ANSI SCSI 
  13716.    specifications. 
  13717.  
  13718. single-byte character set (SBCS) - A character set in which each character is 
  13719.    represented by a one-byte code. Contrast with double-byte character set. 
  13720.  
  13721. Small Computer System Interface (SCSI) - An input and output bus that provides 
  13722.    a standard interface between the OS/2 multimedia system and peripheral 
  13723.    devices. 
  13724.  
  13725. spline curve - In computer graphics, a shape created when a user specifies a 
  13726.    series of points and the computer software draws a curve that smoothly 
  13727.    approaches those points. 
  13728.  
  13729. spooler - A program that intercepts data going to a device driver and writes it 
  13730.    to a disk. The data is later printed or plotted when the required device is 
  13731.    available. A spooler prevents output from different sources from being 
  13732.    intermixed. 
  13733.  
  13734. synchronous - Pertaining to two or more processes that depend upon the 
  13735.    occurrence of specific events such as common timing signals. 
  13736.  
  13737.  
  13738. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  13739.  
  13740.  
  13741. text window - See VIO window. 
  13742.  
  13743. thread - The smallest unit of operation to be performed within a process. 
  13744.  
  13745. thunk - term used to describe the process of address conversion, stack, and 
  13746.    structure realignment that is necessary when passing control between 16-bit 
  13747.    and 32-bit modules. 
  13748.  
  13749. thunk layer - An interface that converts 32-bit parameters to 16-bit 
  13750.    parameters, and maps linear addresses to segmented addresses. 
  13751.  
  13752. time slice -  (1) The period of processing time allocated for running a 
  13753.    program. (2) An interval of time on the processing unit allocated for use in 
  13754.    performing a task. After the interval has expired, processing unit time is 
  13755.    allocated to another task, so a task cannot monopolize processing unit time 
  13756.    beyond a fixed limit. 
  13757.  
  13758. tuple - In a relational database, a part of a relation that uniquely describes 
  13759.    an entity and its attribute. 
  13760.  
  13761.  
  13762. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  13763.  
  13764.  
  13765. unnamed pipe - A circular buffer created in memory; used by related processes 
  13766.    to communicate with one another. Contrast with named pipe. 
  13767.  
  13768.  
  13769. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  13770.  
  13771.  
  13772. VBIOS - Virtual BIOS device driver 
  13773.  
  13774. VCMOS - Virtual CMOS device driver 
  13775.  
  13776. VDD - Virtual device driver 
  13777.  
  13778. VDH - Virtual video Device Handler 
  13779.  
  13780. VDM - Virtual DOS Machine; use DOS session. 
  13781.  
  13782. VDMA - Virtual Direct Memory Access device driver 
  13783.  
  13784. VDSK - Virtual hard DiSK device driver 
  13785.  
  13786. video graphics adapter (VGA) - A computer adapter that provides high-resolution 
  13787.    graphics and a total of 256 colors. 
  13788.  
  13789. VIO - Virtual Input/Output 
  13790.  
  13791. VIRR - Virtual Interrupt Request Register 
  13792.  
  13793. Virtual Device Driver (VDD) - In the OS/2 operating system, a type of device 
  13794.    driver used by DOS programs running in a DOS session to access devices, such 
  13795.    as the screen or mouse, which must be shared with other processes in the 
  13796.    system. The virtual device driver maps DOS device commands to the normal 
  13797.    (physical) device driver under OS/2 2.0 and later versions of the operating 
  13798.    system. 
  13799.  
  13800. virtual DevHlp (VDH) - Kernel (linear memory, paging, hardware interrupt, event 
  13801.    control, port control) services provided to virtual device drivers. 
  13802.  
  13803. virtual I/O (VIO) - A facility that pages data into and out of external page 
  13804.    storage. 
  13805.  
  13806. virtual memory - Synonym for virtual storage. 
  13807.  
  13808. Virtual Programmable Interrupt Controller - Virtualizes the 8259 Programmable 
  13809.    Interrupt Controller (PIC). A special virtual device driver, in that it 
  13810.    provides services to other virtual device drivers. 
  13811.  
  13812. virtual storage - Addressable space that is apparent to the user as the 
  13813.    processor storage space, from which the instructions and the data are mapped 
  13814.    into the processor storage locations. Synonymous with virtual memory. 
  13815.  
  13816. visible region - A window's presentation space clipped to the boundary of the 
  13817.    window and the boundaries of any overlying window. 
  13818.  
  13819. VPIC - Virtual Programmable Interrupt Controller device driver. 
  13820.  
  13821. VRAM - Video Random-Access Memory. 
  13822.  
  13823. VTIMER - Virtual TIMER device driver. 
  13824.  
  13825. V86 mode - Virtual 8086 mode of the 80386 CPU. 
  13826.  
  13827.  
  13828. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  13829.  
  13830.  
  13831. window coordinates - A set of coordinates by which a window position or size is 
  13832.    defined; measured in device units, or pels. 
  13833.  
  13834.  
  13835. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  13836.  
  13837.  
  13838.    There are no glossary terms for this initial letter. 
  13839.  
  13840.  
  13841. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  13842.  
  13843.  
  13844.    There are no glossary terms for this initial letter. 
  13845.  
  13846.  
  13847. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  13848.  
  13849.  
  13850. There are no glossary terms for this initial letter. 
  13851.  
  13852.  
  13853. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  13854.  
  13855. This chapter is based in part on the VESA SVPMI (Video Electronics Standards 
  13856. Association Super VGA Protect Mode Interface) proposal.