php 5.3n 提示 No input file specified

zhuang_bx 2016-12-06 12:50:21
用的phpstudy + Apache
用php5.2和5.3都正常
换5.3n 就提示这问题了,有用隐藏index.php

.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on

#不显示index.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

</IfModule>

搜索百度,index。php后面加?号,试过也不行。

如果 用的php5.3和5.2的话,执行到
openssl_sign($signStr,$sign_info,$merchant_private_key,OPENSSL_ALGO_MD5);
这个又会出错。所以想换5.3n的。
...全文
330 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuang_bx 2016-12-08
  • 打赏
  • 举报
回复
没人知道吗?
莫名一笑23 2016-12-06
  • 打赏
  • 举报
回复
index.php后面加个?号
PassMark BurnInTest V5.3 Copyright (C) 1999-2008 PassMark Software All Rights Reserved http://www.passmark.com Overview ======== Passmark's BurnInTest is a software tool that allows all the major sub-systems of a computer to be simultaneously tested for reliability and stability. Status ====== This is a shareware program. This means that you need to buy it if you would like to continue using it after the evaluation period. Installation ============ 1) Uninstall any previous version of BurnInTest 2) Double click (or Open) the downloaded ".exe" file 3) Follow the prompts UnInstallation ============== Use the Windows control panel, Add / Remove Programs Requirements ============ - Operating System: Windows 2000, XP, 2003 server, Vista (*) - RAM: 32 Meg - Disk space: 6 Meg of free hard disk space (plus an additional 10Meg to run the Disk test) - DirectX 9.0c or above software for 3D graphics and video tests (plus working DirectX drivers for your video card) - SSE compatible CPU for SSE tests - A printer to run the printer test, set-up as the default printer in Windows. - A CD ROM + 1 Music CD or Data CD to run the CD test. - A CD-RW to run the CD burn test. - A network connection and the TCP/IP networking software installed for the Network Tests Pro version only: - A serial port loop back plug for the serial port test. - A parallel port loop back plug for the parallel port test. - A USB port loop back plug for the USB port test. - A USB 2.0 port loop back plug for the USB 2.0 port test. - PassMark ModemTest V1.3 1010 (or higher) for Plugin Modem testing. - PassMark KeyboardTest V2.2 1011 (or higher) for Plugin Keyboard testing. - PassMark Firewire Plugin V1.0 1000 (or higher) and a 揔anguru FireFlash?drive for Plugin Firewire testing. (*) Windows 2000 does not support the CD-RW burn test. The advanced RAM test is only available under Windows 2000 and Windows XP professional (the other RAM tests are supported under the other OS's). Users must have administrator privileges. Windows 98 and Windows ME ========================= Windows 98 and ME are not supported in BurnInTest version 5.3 and above. Use a version of BurnInTest prior to 5.2 for compatibility with W98 and ME. Windows 95 and Windows NT ========================= Windows 95 and NT are not supported in BurnInTest version 4.0 and above. Use a version of BurnInTest prior to 3.1 for compatibility with W95 and NT. Version History =============== Here is a summary of all changes that have been made in each version of BurnInTest. Release 5.3 build 1035 revision 4 WIN32 release 10 November 2008 - Lenovo China specific build. Lenovo system detection changes. Release 5.3 build 1035 revision 3 WIN32 release 7 November 2008 - Lenovo China specific build. Lenovo system detection changes. Release 5.3 build 1035 revision 2 WIN32 release 6 November 2008 - Lenovo China specific build. Lenovo logo and Lenovo system detection changes. Release 5.3 build 1035 WIN32 release 5 November 2008 - Lenovo China specific build. Changes include: Lenovo logo added, Lenovo system support only, 32-bit BurnInTest restricted to 32-bit Windows and BurnInTest run as administrator. Release 5.3 build 1034 WIN32 release 3 October 2008 - Correction to setting the CD burn test drive in preferences. - Changed the mechanism to check for the required DirectX Direct3D as the previous method did not work on some system (some W2003 servers). - Enhanced the mechanism to report memory hardware errors in the Memory torture test. Release 5.3 build 1033 WIN32 release 1 October 2008 - Changes to correct a BurnInTest crash problem on some systems. When the disk and standard RAM tests are run for many hours, BurnInTest may have disappeared with no error message. Release 5.3 build 1030 WIN32 release 25 September 2008 - Changes to investigate a BurnInTest crash problem on XP SP3. Release 5.3 build 1028 WIN32 release 11 September 2008 - Two 2D Video memory test crash bug workarounds implemented. Crashes in (i) DirectX DirectShow and (ii) ATI atiumdag.dll library. - A hang on startup has been corrected. A 2 minute timeout has been added to the collection of system information. - Video playback, Hard disk and CD/DVD test 'no operations' error reporting changed. - When BurnInTest crashes, it will not generate a "minidump" file. Minidumps will need to be sent to Microsoft as per the normal process. However, a log entry will be added to the normal BurnInTest log. - Changes to trace logging to reduce activity when trace logging is not turned on. - Note: We have seen a report of the Video Playback failing (crash) due to a faulty video codec, ffdshow.ax. If you are using this we suggest you try a different Video file and codec. Release 5.3 build 1027 revision 0003 WIN32 release 19 August 2008 - Changed the 2D test to wait for the Video Playback test in order to allow memory allocation for the Video playback test. - Changed the Memory test to wait for the Video Playback test and 3D test to allow memory allocation for these tests. - Minor changes to the No operation error watchdog timer for the CD and Hard disk tests. - Minor correction to the Butterfly seek test. - Video playback trace logging increased. Release 5.3 build 1027 revision 0002 WIN32 release 19 August 2008 - Video playback trace logging increased. Release 5.3 build 1027 WIN32 release 31 July 2008 - Corrected a bug where BurnInTest would fail to start if Activity trace level 2 logging (debug level logging) was turned on and the Logging Summarize option was also selected. - Minor change to the serial port test where, if "Disable RTS/CTS and DSR/DTR test phase" was selected the DTR and RTS lines would be explicitly disabled to prevent any toggling of these lines. Previously these where enabled, but not explicitly toggled. Release 5.3 build 1026 WIN32 release 17 July 2008 - Updated Level 2 and Level 3 CPU cache information for newer Intel CPU's. - Updated the detection of Hyperthreading and the number of logical CPUs for a new Intel CPU. Release 5.3 build 1025 WIN32 release 11 July 2008 - Corrected a Disk test bug where on rare occasions a verification error is incorrectly displayed. This is during the random seeking phase of the "Random data with random seeking" test mode and only occurs with some specific test settings. Release 5.3 build 1024 WIN32 release 10 July 2008 - Workaround for the rare crash bug in Vista in atklumdisp.dll at address 0x730676ae. - Added trace debug information for BurnInTest startup and the 3D test. Release 5.3 build 1022 WIN32 release 12 June 2008 - Corrected a bug where the 2D video memory test in BurnInTest v5.3.1020 and v5.3.1021 would report a "Not enough video memory available for test" error if the test was run a couple of times (without closing BurnInTest). Release 5.3 build 1021 WIN32 release 5 June 2008 - 32-bit BurnInTest PRO 5.3.1020 would not start on Windows 2000. This has been corrected. Release 5.3 build 1020 WIN32 release 29 May 2008 - BurnInTest could have crashed on accessing bad video memory hardware in the 2D test. This problem is now just reported as an error (and BurnInTest) continues. - When BurnInTest crashes, it should now generate a "minidump" file to help debug which system component caused the failure (32-bit Pro version only). - Other minor changes. Release 5.3 build 1019 WIN32 release 16 May 2008 - Corrected rare crash bugs in the 2D and Video tests. - Added a hot Key, F4, to set the auto run flag and run the tests (i.e. set "-r" and then run the tests). - Other minor changes. Release 5.3 build 1018 WIN32 release 16 April 2008 - Added an operation watchdog timer for all tests. In rare cases, a single test can stop in the operating system - i.e. there is a problem in the operating system/ device driver that prevents control being returned to the BurnInTest for that test. This was added for specialized serial port hardware that could lockup after several hours of testing. Release 5.3 build 1017 WIN32 release 3 April 2008 - Corrected the Advanced Network test to run on non-English Operating Systems. Release 5.3 build 1016 WIN32 release 17 March 2008 - Added additional USB 2.0 Loopback plug test initialization to ensure plugs are in a 'clean' state when starting the USB tests. This was added due to reported USB data verification errors after scripted USB testing across multiple reboots. Release 5.3 build 1015 WIN32 release 27 February 2008 - Increased error reporting detail for the standard RAM test, when the -v command line option is used. Release 5.3 build 1014 WIN32 release 30 January 2008 - Corrected a problem where the loopback sound test could run out of memory if run for several days. Release 5.3 build 1013 WIN32 release 31 December 2007 - Improved the reporting of COM port errors such that in the rare case a COM port locks up in the Operating System, the error is still reported. - Corrected a bug, where in rare cases, the result summary could be duplicated in a log file. - Updated license management, in an attempt to remove a rare crash on startup. Release 5.3 build 1012.0002 WIN32 release 31 October 2007 - New build of Rebooter (64-bit Windows correction). - Clarifications in the help file. Release 5.3 build 1012 WIN32 release 17 October 2007 - Changed the Standard Network Test, "Test all available NICs" such that the number of Network Addresses specified in Preferences->Network will be the number of NICs tested. This will error faulty NICs that are not detected by the BurnInTest auto NIC detection mechanism. - Minor change to the 2D memory test when run with the 3D test (multiple large windows) and the RAM test. Aimed at correcting sympton: Access Violation 0x00404CF9. - Corrections to the mapping of paths with ".\". Release 5.3 build 1011 rev 2 WIN32 release 17 September 2007 - Modified the Multi-Process torture test to better describe a new error message introduced in V5.3.1010. Release 5.3 build 1011 - Public release WIN32 release 11 September 2007 - Corrected a bug where "Limited Evaluation Version" could be displayed even after BUrnInTest is licensed (problem introduced in 32-bit BITPRO V5.3.1010). - Changed the Sound test to allow any of the tests (Wave, Midi or MP3) to be excluded from testing by blanking the filename. - The Command line parameter "-j" (cycle disk test patterns after each test file) could fail during the Random data test due to the mechanism used in BurnInTest. The Random data test is now excluded from the test when (and only when) the "-j" command line parameter is specified. - In rare circumstances, the 2D test number of operations could potentially overflow and become negative. This has been corrected. - In rare circumstances, BurnInTest could hang if there was a system problem in rebooting the system (ie. it failed to shutdown) using PassMark Rebooter. This has been corrected. Release 5.3 build 1010 - Public release WIN32 release 28 August 2007 WIN64 release 28 August 2007 - As BurnInTest exercises system components, it is possible for faulty hardware or device drivers to cause software exceptions. These are normally seen as Windows reporting an "Access Violation". Changes have been made to handle these errors for the memory tests (for faulty RAM) and direct device driver access (for some device driver errors), as well as overarching more generic handling of these types of errors. - Corrected a software failure bug on startup (particularly Vista) where a DirectX function was causing software failures in "dsetup.dll". - Updated the "Activity Event" generated with the periodic results summary report to be numbered (from 1 upwards) such that when "Logging->Summarize", these events are not summarized. - Corrected a bug where the HTML log name could include a duplicate of the filename prefix. - Updated to the Common Errors section of help. Release 5.3 build 1009 - Public release WIN32 release 16 August 2007 - Corrected a 'zip' version cleanup problem. Release 5.3 build 1008 - Komputer Swiat Expert magazine version WIN32 STD release 14 August 2007 Release 5.3 build 1007 - Public release WIN32 release 7 August 2007 - Corrected a disk test startup problem for some large RAID systems when SMART testing is selected. - Added additional logging for the disk test when an error occurs. - Changed the 3D test when run with the 2D EMC test to be 'behind' the EMC scrolling H's test. Allowed the test to be easily exited when running the 3D test in Fullscreen mode. - Minor corrections to the Advanced Network test. - Changed the log file reference of "Network Name" to "Computer Name". WIN64 specific: - MMX and 3DNow! are obsolete for native 64-bit applications. BurnInTest has been changed to show "NA" (Not applicable) in the test window for these tests. Release 5.3 build 1006 - Limited release WIN32 release 17 July 2007 - Standard Network Test changes: - Increased the number of destination IP addresses from 4 to 6. - Added an option (default) "Test all available NICs", which will force traffic down every system NIC with a basic algorithm of NIC1 to IP Address 1, NIC2 to IP Address 2 etc. - Advanced Network test changes: - Simplified the test. - Removed the UDP and FTP options. The Standard Network test can be used as a UDP test. - Removed the Advanced Network test specific logging, and included all relevant logging in the standard BurnInTest logging mechanism. - Replaced the complicated dynamic balancing of any system NIC to any Endpoint NIC with a simpler static allocation on test startup. - Changed the error detection mechanism to detect errors much more quickly. - Re-worked the errors reported. - Changed the CPU throttling mechanism to reduce the CPU load. - Updated endpoint.exe. - Removed checkend.exe (now obsolete). - Changed the logging rollover to work with the output of interim results (e.g. per 1 minute). Previously rollover only occurred on error events written to the log. This also corrected an issue where interim results summary logging could be written to the physical disk with some delay (based on Windows disk caching). - Corrected the "Unknown" reporting of some operating systems. - Added the skipping of the Butterfly seek disk test when run on Vista and insufficient privileges. A notification of this is logged. - Intel Quad core L2 cache size reporting has been added. - Added new SMART threshold descriptions. - Added new disk test options, accessed via command line parameters: /ka: keep disk test files in all cases (c.f. /k keep disk test files on error). /j: cycle patterns between test files. Note: Random seeking will be skipped in this case. This option has been added to allow multiple test patterns to be used across very large disks. - Added an option to make some test settings unavailable to the user. An example configuration file available on request. Release 5.3 build 1005 0001 (STD only) - Public release WIN32 release 29 June 2007 - Corrected a bug introduced in v5.3.1005.0000 STD (only) where the disk test would use up more and more system resources, thus causing test failures. Release 5.3 build 1005 rev 0003 (PRO only) - Limited public release WIN32 release 21 June 2007 - Correction to the behavior of a static RAM test pattern (rather than the default Cyclic pattern). Release 5.3 build 1005 rev 0002 (PRO only) - Limited public release WIN32 release 15 June 2007 - The "Select all CD/DVD drives" preferences option has been made user configurable, rather than using pre-defined test settings. Release 5.3 build 1005 rev 0001 (PRO only) - Limited public release WIN32 release 13 June 2007 - Bug correction for the CD auto selection feature. Release 5.3 build 1005 - Public release WIN32 release 18 May 2007 WIN64 release 18 May 2007 - In a number of cases, such as when specifying the post test application, uppercase application names were not accepted. This has been corrected. - The default font height in the 2D scrolling H's test should have been Arial 9. This has been changed. - The BurnInTest Video playback test incompatibility with Nero 6 and Nero 7 has been resolved. - The BurnInTest disk test throughput for dual core systems has been improved. Release 5.3 build 1004 rev2 - Limited release WIN32 release 8 May 2007 - Changed the Standard Network Test to better report packet error ratios. In addition, a new warning has been added to indicate that errors have been detected but not enough packets have been attempted to be sent to determine accurately whether the configured error ratio has been exceeded. - Corrected a bug where the "append to existing" logging option did not work across scripted reboots, and a new log file was created instead of appending to the existing log file. - If the 3D test was running, then BurnInTest blocked a forced close of BurnInTest, this blocking has been removed. - Changed the PASS and FAIL windows so they can now also be closed by selecting the Windows Close "X" button. Release 5.3 build 1004 - Public release WIN32 release 10 April 2007 WIN64 release 10 April 2007 - Corrected a problem introduced in BurnInTest v5.2 where BurnInTest could run out of memory (the main symptom) when tests where run for long periods (> 12hours). WIN64 specific: - Corrected a bug where the number of cores reported on a Quad core system was incorrectly reported as CPU packages. Release 5.3 build 1003 - Limited release WIN32 release 3 April 2007 - A new 2D GUI (Graphical User Interface) test has been added to the standard 2D graphics test. - Resolved an issue where BurnInTest would fail to start on Vista systems with DEP enabled for all programs. - On some systems, the Disk test could pause momentarily even when a duty cycle of 100% was specified. This pause has been removed. - When running the CD test under BartPE (Pre-install environment) 4 additional specific files are skipped as they are unavailable for testing. - Minor bug corrections. Release 5.3 build 1002 rev 0001 - Limited release WIN32 release 16 March 2007 - Changes to the new 3D test: - Added a Full screen non-windowed test for the primary monitor, where the resolution can be selected from those supported by the Graphics card. - Added the user option of changes the vertical sync in the full screen non-windowed test to be either the Maximum rate of the graphics card, or to be the rate of the monitor (this may prevent some flicker). - Added a more complex water texture using DirectX Vertex Shader 2.0 and Pixel Shader 2.0 effects (if supported by the graphics card). This applies to 3D test windows that are 800x600 or larger. - Changed some error messages from window displays (that require user intervention) to standard error reporting. Added new 3D error messages and more detail in the error reporting. - Changed the definition of an operation to be a successfully displayed frame. - Changed the definition of a cycle to be 2000 frames. - Changed 2D video memory test to wait until the 3D test starts (as per V5.2 and earlier). - A new version of rebooter has been included. - If BurnInTest is started with the -p command line parameter (to use the bit.exe directory for files such as the configuration file), then BurnInTest will start rebooter with the -p option. This can be useful when running BurnInTest and Rebooter from a USB drive. Release 5.3 build 1002 - Limited release WIN32 release 19 March 2007 - Corrected a bug introduced in V5.2 where selecting accumulated logging could lead to rebooter failing to launch. Release 5.3 build 1001 - Limited release WIN32 release 16 March 2007 - The 3D test has been improved. The 3D ball test has been replaced with a more complex 3D terrain test. This will more thoroughly exercise modern graphics cards. Further, the 3D test has been changed to support multi- monitor testing (up to 4 monitors). Accordingly, a new preferences section has been added for the 3D test. The multi-monitor test options are only available in BurnInTest Professional. Release 5.3 build 1001 - Limited release WIN32 release 16 March 2007 - The 3D test has been improved. The 3D ball test has been replaced with a more complex 3D terrain test. This will more thoroughly exercise modern graphics cards. Further, the 3D test has been changed to support multi- monitor testing (up to 4 monitors). Accordingly, a new preferences section has been added for the 3D test. The multi-monitor test options are only available in BurnInTest Professional. - BurnInTest uses DirectX 9.0c. This version of BurnInTest uses a more recent version of the Microsoft DirectX Direct3D component, October 2006. BurnInTest has been modified to detect and install this component (file) if it does not exist. - A command line parameter -X has been added to skip the DirectX version checking on BurnInTest start-up. - With the recent introduction of multi-monitor support for the Video Playback test, it is now more likely that the system will run out of memory when running multiple video tests simultaneously, particularly when more memory intensive codecs are used. A specific Insufficient resources to complete test message has been added in this case, rather than the previous more generic unrecoverable error message. The video test have been changed to attempt recovery from this and the more generic unrecoverable error, by closing the current video and opening the next. The logging detail has been increased. - Note: The BurnIntest sample video pack has been altered with the DivX Compressed Video file being removed due to the DivX codec failing with this Video file when used with multiple simultaneous Video playbacks. Access Violation: 0x69756e65. See: http://www.passmark.com/download/bit_download.htm - The video description is now collected for a larger range of Vista systems. - Windows 98 and ME are no longer supported. Please see www.passmark.com for a link to an older version of BurnInTest that will support W98/ME. Release 5.3 build 1000 rev2 - Limited release WIN32 release 9 March 2007 - A command line parameter -P has been added to allow the BurnInTest directory to be used rather than the User's personal directory. This may be useful when running BurnInTest from a USB drive for example. - When running the CD test under BartPE (Pre-install environment) 4 additional specific files are skipped as they are unavailable for testing. - A change has been made to support Hmonitor temperature monitoring on Vista. - A number of undocumented command line parameters have been documented: -B: BurnInTest will generate additional Serial port test information when activity trace level 2 logging is set. -E [data]: Specifies the test data to use in the serial port test. -M: Automatically display the Machine ID Window when BurnInTest is started. -U: Force BurnInTest to set logging on at startup. Release 5.3 build 1000 - Limited release WIN32 release 8 March 2007 - Changed the 2D and Video playback tests to support multi-monitor testing. - When running the CD test under BartPE (Pre-install environment) 4 specific files are skipped as they are unavailable for testing. Release 5.2 build 1006 - Limited release WIN32 release 1 March 2007 - Corrected a bug where BurnInTest would fail to start on certain Vista systems. - Corrected a bug where some files where the full path was not specified would be incorrectly referenced in the Program Files directory, rather than the user personal directory. Release 5.2 build 1005 - Public release WIN32 release 21 February 2007 WIN64 release 21 February 2007 - Updated the Graphics card description for Windows Vista systems. - Updated the Advanced Network test to indicate that elevated administrator privileges are required when running on Vista. - Moved files from the Program files directory for the Advanced Network Test (BurnInTest, EndPoint and CheckEnd). Specifically, the User Application directory is now used for the temporary test FTP files and the User Personal directory is now used for the log and configuration files. - Updated the cleanup process for when running the "zip" version of BurnInTest Professional from a CD or flash drive. - Updated the help link from the Windows Start, All Programs, BurnInTest menu for the browser based help. - Corrected a bug where Disk preferences displayed in the Preferences window would be incorrect when the system had no Floppy drive. - Corrected a bug where the Advanced Network test might not have been displayed until after entering the Duty Cycle selection (ie. just chaning from the standard network test to the advanced test). - Corrected a USB bug in Beta 5.2.1003 where the test would not run if there where there insufficient USB loopback plugs attached to the system. - Included a new version of PassMark Rebooter that supports Windows Vista. Release 5.2 build 1004 - Public Pre-release WIN32 release 13 February 2007 - Updated the reported Operating system for the various Vista product editions. - Disk test settings can be configured for "Automatically Select all Hard Disks", rather than using defaults. - When running the CD test under BartPE (Pre-install environment) 4 specific files are skipped as they are unavailable for testing. - Corrected a bug where temperature information could be duplicated in the HTML report. - Corrected a bug certain 'save report' warning messages could be truncated. - Help file updated. Release 5.2 build 1003 - BETA RELEASE ONLY WIN32 release 23 January 2007 - Changed the USB preferences and test to more completely check for the PassMark USB Loopback plugs and ignore any device that is not a PassMark USB Loopback plug (due to reported incorrect detection with another hardware device). - Increased Trace level debugging for Intel temperature monitoring. - Corrected a bug with the disk test introduced in 5.2.1001 Release 5.2 build 1002 - BETA RELEASE ONLY WIN32 release 22 January 2007 - Increased the number of disks that can be tested from 20 to 26. - Updated BurnInTest to reflect that Temperature monitoring with Intel Desktop utilities is supported. Intel Desktop utilities essentially is a replacement for Intel Active Monitor for newer Intel motherboards. - Increased Trace level debugging for Intel temperature monitoring. Release 5.2 build 1001 - BETA RELEASE ONLY WIN32 release 19 January 2007 - Windows Vista support. - The Block size used in the disk test is now configurable per disk. The default block size has been increased from 16KB to 32KB. - An option has been added to automatically detect all of the CD and DVD drives for the CD test (as per the disk test). This may be useful when testing across many systems with different optical drive configurations. - Increased Trace level debugging for Intel temperature monitoring. - Bugs corrected: - Disk preferences - in rare cases invalid default values could be set for a disk, an invalid value error would occur and the values would need to be manually corrected. Release 5.2 build 1000 - limited release WIN32 release 8 January 2007 - Windows Vista support. - Reduced the need for elevated administrator privileges: - Changed the location of the disk test files from the root directory of the test volume to a BurnInTest data files subdirectory (e.g from "C:\" to "C:\BurnInTest test files\") - Moved many of the files from the Program Files directory to the User directory for Windows 2000, XP and Vista. When running BurnInTest on Windows 98, ME or from a key.dat file (e.g. from a USB drive with a licensed key.dat) BurnInTest will store these files in the BurnInTest program directory. Specifically, the following files have been moved from the Program Files directory to the User Personal directory, e.g. Vista - "C:\Users\\Documents\PassMark\BurnInTest\" XP - "My Documents\PassMark\BurnInTest\" Files: Configuration file, Configuration load/save default directory, Save log file and image default directory, parallel port override "ioports.dat" directory, default command line script directory, log file directory, video file directory, Plugin directory, machine id file directory, Run as script default directory, CD burn image, Advanced network FTP temp files. - Replaced the Help system with Browser based help. - Changed the Disk test block size from 16KB to 256KB. It is planned to make this user configurable in the next build. Release 5.1 build 1014 WIN32 release 2 November 2006 WIN64 release 2 November 2006 - Corrected a bug when running on Vista, where the Standard network test would report a checksum error when the transmitted data was correct. - Corrected a bug where BurnInTest would not stop the tests based on the number of test cycles for the Plugin test or the Advanced Network test. - Made the "Could not set USB2Test mode" USB error message more specific by adding an error for insufficient system resources. - Changed the preferences Window to fit on an 800x600 resolution screen. - Corrected a minor bug in Activity level 2 trace logging with the 'hide duplicate' preference setting. - Corrected a minor memory leak if the 2D test failed to initialize (such as due to a DirectX problem). - The Parallel port test may now be used on Windows Vista. Specifically, the PassMark device driver used for the parallel port test could not be loaded on 64-bit Windows Vista as it was not digitally signed. It is now digitally signed. Release 5.1 build 1013 revision 0002 WIN32 release 19 September 2006 WIN64 release 19 September 2006 - Corrected an Access Violation problem reported by a customer on a particular MB. Release 5.1 build 1013 WIN32 release 7 September 2006 WIN64 release 7 September 2006 - The "Notes" section has been added to the Customer results certificate. - Some additional configuration range validation has been added. Release 5.1 build 1012 WIN32 release 15 August 2006 - Corrected a false report of a "Unable to get disk volume extent information" for the disk butterfly seek test. - Advanced Network test changes for errors: "Corrupt header - packet discarded" and "Advanced Network test timed out" - Advanced Network test Endpoint changes for problems on non-English Operating Systems and systems with the Windows "Network Interface" performance statistics disabled. - SMART parameters on a Samsung Hard Disk caused BurnInTest to fail when running the disk test with SMART thresholds enabled. This has been corrected. - The 2D scrolling H's test could display corrupt characters on the second and subsequent test run. This has been corrected. - A problem with the Integer maths test where the results could display a negative number of operations has been resolved. - Minor improvements to the help file. - HTML help file added for Windows Vista and Longhorn Server. - Minor improvements to the Error Classification file (error descriptions). - Some CD Trace level 1 logging has been moved to trace level 2. - Trace level 1 logging has been added to the test closing software. - New build of Endpoint.exe (1.0 1010). Release 5.1 build 1011 WIN32 release 6 July 2006 - New Advanced Network test error reporting added in the previous build V5.1 1010 has been removed. - A broader range of USB 2.0 Loopback plugs can now be used with BurnInTest. Release 5.1 build 1010 WIN32 release 4 July 2006 - Corrected the HTML report description of the L2/L3 CPU cache when the L3 cache size could not be determined. Advanced network changes: - Endpoints ran at 100% CPU load as they contained no throttling. This impacted their ability to effectively handle multiple threads handling TCP/UDP messaging. Throttling has been added to the EndPoint side to reduce CPU load. This does not greatly impact Network load. - Throttling on the BurnInTest side contained a sleep that was not insignificant. This could have impacted the BurnInTest data test thread to to handle incoming TCP and particularly UDP messages. This sleep has been reduced and other throttling parameters changed to suit. (ie. smaller sleeps more often). - EndPoint systems with x NICs (where x > 1), reported themselves as an Endpoint with x NICs, x times. Effectively registering with BurnInTest as x * x EndPoint NICS. This impacted the effectiveness of the load distribution to EndPoint NICs. An Endpoint system now only registers the once with BurnInTest. - The BurnInTest side did not report data verification Checksum errors for full duplex testing. This error determination has been corrected and reporting added. - The Test statistics sent from the Endpoint to BurnInTest could fail if the statistics block is split across 2 lower level TCP send packets. This could lead to problems like incorrect reporting of Endpoint determined checksum errors, Endpoint load and load balancing. Further it would lead to an Endpoint testthread being put into an endless TCP send loop. This would eventually bring the Endpoint system to its knees as more and more of these test threads go into this state. This has been corrected. - The Data Received reported by BurnInTest was double counted. This has been corrected. Release 5.1 build 1009 WIN32 release 23 June 2006 - Plugin test error classifications were incorrect in the log file detailed description. - Corrections to the advanced network test (BurnInTest and EndPoint). Release 5.1 build 1008 - limited release WIN32 release 20 June 2006 - Advanced network changes corrections. Most notably, a bug where part of the payload data could be lost if the payload block (eg. 1000 bytes) was split across 2 (or more) lower level TCP packets. - Added version reporting for Endpoints. Release 5.1 build 1007 - limited release WIN32 release 16 June 2006 Advanced network changes: - Corrected a BurnInTest access Violation introduced in V5.1 1006. - The Endpoint now reports its version and build to BurnInTest and BurnInTest reports this in the log file if it is an earlier version than expected. This is to help avoid the situation where old Endpoints are run on the Network, that may not be compatible with the version of BurnInTest being run by the user. - Removed a timeout report in a specific instance where a timeout is not an error. - Changed the Endpoint rebalancing and polling to occur less often after the test has been running 3 minutes. This is to help allowing the handling of polling from a larger number of multiple copies of BurnInTest on the Network. - Added a connection retries on failure for the Endpoint. - Corrected a memory leak in the Endpoint. - Increased the number of sockets supported. - Corrected some Advanced Network error classifications. Release 5.1 build 1006 - limited release WIN32 release 14 June 2006 - Improvements to the Advanced Network test (both BurnInTest V5.1 1006 and EndPoint V1.0 1004) to remove corrupted false packet corruption errors. Improved the timeout recovery mechanism. Added some validation to the Windows Network performance data used for NIC utilization. - Changes to the collection of Disk drive information on startup to try to resolve a startup issue on Systems with a large number of physical drives and 'unusual' WMI namings. Release 5.1 build 1005 WIN32 release 2 June 2006 - Corrected a bug in the Advanced network test where the test would not recover from timeout errors. The test appears to be running, but the results are 0 and the number of connected End Points are 0. Also improved the retry on timeout mechanism. - Removed some duplication in error reporting in the Advanced Network test. - Changed the Advanced Network display of Utilization to ensure a maximum of 100% displayed. - Corrected an Advanced Network test bug where the number of Errors reported in the test window would not take into account the corrupt packet threshold, and an error would be added for each occurrence of the corrupt packet (rather than when the user set threshold was reached). Release 5.1 build 1004b WIN32 release 25 May 2006 (not publicly released) - Corrected the default Advanced network corrupt packet threshold value. - Updated the data entry fields in the CD preferences when a different CD drive is selected. - The Advanced Network specific log files should be concatenated for a script run. This was only occurring for the first NIC under test. The concatenation will now occur for each NIC under test, when run from a script. - Corrected a bug where a log file name specified with no directory path could be incorrect. - Corrected a bug where the customer "Test Certificate" report incorrectly translated the "%" character from a customer specific HTML template. eg would be translated to . - The "Advanced Network test error" (215) has been removed and replaced with other existing error messages 214, 219, 220, 221 or 222. - Added the Customer name and Technician name to the text and HTMl reports. Previously, this information was only included in the "Test Certificate" report. - We have added a commandline option to specify the Serial port test data as a constant value. To specify specific data for the Serial port test you should specify e.g. "bit.exe /E 23" from the command line where 23 is in decimal and will be used for all test data (instead of random data). The vales should be between 0 and 255. Release 5.1 build 1004 WIN32 release 19 April 2006 (not publicly released) - Added the COM port speed of 921600 Kbits/s for RS 422/RS485 testing. - Changed the CD test to ensure that the entire test CD data is not cached on systems with a large amount of RAM. - Added a -M command line option to display the Machine ID window automatically when BurninTest starts. - Changed the 2D EMC scrolling H's test to work on multiple monitors were the resolution on each is different. - Changed log files such the syntax "..\" could be used for files in the directory up a level. - Minor correction to the advanced network test. Release 5.1 build 1003 WIN32 release 18 April 2006 WIN64 release 18 April 2006 - Changed the Advanced network test to allow a corrupt packet threshold value up to 1 million. - Bundled a new version of rebooter. Release 5.1 build 1002 WIN32 release 11 April 2006 WIN64 release 11 April 2006 - Corrections to the translation of V4.0 to V5 configuration files. Note: Configuration files in V5.x builds prior to V5.1 1002 could become corrupted if a V4.0 configuration file is loaded. - Corrected a bug where the main Window size and location were not restored on restarting BurnInTest. - Changes to the SMART attribute logging to support a greater range of Disk drive device drivers. Added additional Activity Level 2 trace logging. - Added an option to use CTS (Clear To Send) flow control in the loop back stage of the COM port test. - Corrected a bug where the CPU L3 cache could be reported as -1. - Help file updates. Release 5.1 build 1001 WIN32 release 30/March/2006 - Digitally signed the BurnInTest application to allow it to run under Windows Server "Longhorn". Note, previously only the installation package was digitally signed. - Updated the reported Operating system descriptions, including: - Windows Vista - Windows Server "Longhorn" - Corrected a bug where the Advanced network information was not displayed on the main window when it was run from a script. - The Advanced Network Corrupt threshold packet has been changed to produce an error every time the error is received after the threshold is reached. - Corrected the reporting of "Network, Packet discarded due to corrupt header" as a Network test error. - Corrected a bug where a new log file was not created if (only) the log prefix changed during the running of a script file. - Split the "Network, Advanced Network test error" error into 6 errors: "Network, Advanced Network test error" "Advanced Network Socket error" "Advanced Network Send error" "Advanced Network Send error - no data sent" "Advanced Network Receive error" "Advanced Network Receive error - no data received" Added either activity trace 1 or trace 2 logging for each of the errors, with additional information where available. - Added additional Serial port activity trace 2 logging. Including the logging of all transmit buffer data when the /B command line is used. Release 5.1 build 1000 WIN32 release 27/March/2006 (not a public release) Added the following features: - Create the log file directory specified in the Logging Options if it does not exist. - Condense the Advanced Network Test log files to one log file per IP address per script run, when run from a script. - Added an option to summarize duplicate errors in the log file. - Color coded errors based on severity in the Detailed event log Window and the HTML log file. - Added an option to only create a log file when BurnIn actually runs a test as opposed to every time BurnIn is executed. - Added a warning if a test thread completes with 0 cycles and 0 operations. - In the results summary html file, inserted more spacing between the 揘otes? and 揇etailed Event Log? - Changed the Activity Trace file format to be the same as the log file, ie. text or HTML, rather than always text. - The 2D 揝crolling H抯?test will now display across multiple screens/displays ?i.e. all active displays. - A threshold has been added for the 揷orrupt header ?packet discarded?event in the advanced network options so that a 揊ail?is not produced when that is the only thing that produces errors. - Added looping capability in scripting. LOOP n { ? } where n is the number of times to repeat the commands in the brackets. - Corrected a bug where PASS could be displayed if the Advanced Network test was the only test running, but it failed. Release 5.0 build 1001 WIN32 release 9/March/2006 - Corrected a bug where Network directory paths were not accepted, eg. for the log file name and post test application file name. - The CPU maths test has been improved to better load up all CPU's. Previously BurnInTest started a maths test thread per physical CPU package. BurnInTest has been changed to start a maths test thread per CPU (= num. physical CPU packages x num. CPU cores x num. logical CPUs). - The CPU preferences have been changed to allow the CPU maths test to be locked to any CPU (ie. select a CPU from a list of CPU's where the number of CPU's = num. physical CPU packages x num. CPU cores x num. logical CPUs). - The Parallel and Serial port error message have been modified in the case where a test plug may not have been connected to indicate that the user should check this. - Corrected a bug where a licenced version could display the message "[limited evaluation version]" Release 5.0 build 1000 WIN32 release 24/February/2006 WIN64 release 24/February/2006 NEW TESTS & IMPROVEMENTS TO EXISTING TESTS BurnInTest Standard and Professional versions. - Added a customer style results certificate. This will save the log file in HTML format but from the perspective of a end customer. This report style can be tailored by the user (through changing an HTML template). - An MP3 playback test has been added to the Sound test. - A color printer test has been added. - A new post test option to allow the results to be printed automatically at the end of a test has been added. - Added new Post-test action options of: - Optionally allow the user to "run an external program & exit" after BIT has been manually stopped. Modify the $RESULT variable to "PASS (manual abort)" or "FAIL (manual abort)" for this case. - Allow the results window to be displayed for all post test options (except Reboot). - Added new Pre-test actions to allow an external application to be run and have BIT wait for the application to exit. On continuing, BIT will run the subscript file (of scripting commands) if it has been created. - Changed the manual Stop buttons, to abort the running of a script (rather than just the current test). BurnInTest Professional specific. - Added a "Plugin" test that allows users to develop their own BurnInTest test modules for specialized hardware. Three external plugins may be specified at once. - A Modem test has been added to BurnInTest as a Plugin. PassMark's ModemTest Version V1.3 (latest build) is required. - A KeyBoard Test has been added to BurnInTest as a Plugin. PassMark's KeyboardTest Version V2.2 (latest build) is required. - A Firewire Test has been added to BurnInTest as a Plugin. PassMark's free Firewire plugin is required and a "Kanguru FireFlash" drive is required. - A new advanced network test has been added. BurnInTest Professional only. - The Memory test now allows the user to specify the type of test pattern to be used. - Testing with the USB 2.0 Loopback plug has been improved. When used with USB 2.0 Loopback device driver V2.0.1002, error details will now be reported for: CRC error reported by USB Host controller BIT STUFF error reported by USB Host controller DATA TOGGLE MISMATCH error reported by USB Host controller STALL PID error reported by USB Host controller DEVICE NOT RESPONDING error reported by USB Host controller PID CHECK FAILURE error reported by USB Host controller UNEXPECTED PID error reported by USB Host controller DATA OVERRUN error reported by USB Host controller DATA UNDERRUN error reported by USB Host controller BUFFER OVERRUN error reported by USB Host controller BUFFER UNDERRUN error reported by USB Host controller NOT ACCESSED error reported by USB Host controller FIFO error reported by USB Host controller TRANSACTION (XACT) ERROR reported by USB Host controller BABBLE DETECTED error reported by USB Host controller DATA BUFFER ERROR reported by USB Host controller In the case of these errors, BurnInTest will re-attempt the operation. The user can set the Error reporting to be skipped for the initial recovery attempt. IMPROVEMENTS TO TESTING FACILITIES - Added a disk autoconfig, such that when tests are started, the disk drives and settings will be defaults to all disks (exc. CD/DVD). This may be useful when testing multiple systems with different hard disk drive letters. - Store the position of the Main window on exiting BurnInTest. On starting BurnInTest, position the main window as saved; on starting tests, position the test windows as saved. - Allow a "drag & drop" of the Configuration file directly on the BurnInTest program icon. - Allow testing 99.5% to 100% of disk, instead of 94%, for disks that do not contain the Windows directory and do not contain a swap file. - Added the ability to log interim results, which may be useful for unstable systems. - AMD and Intel Dual core reporting added. - New L2 CPU cache sizes added to reports. - CPU support for SSE3, DEP and PAE added to reports. - Shortcut of "F1" for contextual help added to all Windows. - Improve the flexibility in specifying the EXECUTEWAIT scripting command for sleeper. - Updated logging header information with the hard and optical drive model. - The 2D and 3D tests have been updated to use DirectX 9.0c. - User interface updated. - The HTML report format has been improved. - The BurnInTest configuration file extension has been renamed from .cfg to use .bitcfg, to ensure the configuration file is associated with BurnInTest. - An error message indicating that accumulated log files are not supported when run from CD or DVD has been added. - To allow smaller test files with very large disks, the minimum disk test file size has been reduced from 0.1% to 0.01% of the disk space. - Log events were previously shown as "INFORMATION" if they were low level errors, or simply additional information (not errors). "INFORMATION" now refers to a low level error, and "LOG NOTE" now refers to additional information (that is not in the error count). - Improved the specific detail of the Serial Port errors detected. BurnInTest now reports framing errors, buffer overrun errors, input buffer overflow errors, parity errors and Transmit buffer full errors as specific error messages (rather than a broader error description). - Added the /k command line so the user can specify not to delete HDD test files if an error occurs. - Increased Activity trace level 1 error logging for Serial port testing. - Increased Activity trace level 1 error logging for Hyper threading detection. - Bundled a new version of the Rebooter program. - Improved the Serial port error logging (displaying baud rate) and increased Activity trace level 1 error logging (displaying erroneous data). - Modified the Window sizes to help improve navigation on smaller displays (i.e. 640x480). - The CPU load for the Standard and Torture RAM tests has been made more linear with the duty cycle setting. Note: This means that compared to the previous build of BurnInTest, less RAM test operations will be run per second (when the duty cycle is less than 100). - Additional debug code and very minor changes in the Loopback sound test. - The Post test option of "Run external application and exit" has been modified such that if no external file is specified, this Post test option will just exit BurnInTest. - Allowed the full range of PassMark USB1 loopback plugs to be used with BurnInTest Professional. - Added additional Activity Trace level 2 logging. - The delay inserted between packets in the USB2 test, when the duty cycle is less than 50, has been changed from at least 1ms to at least 1ms to 50ms (for a Duty Cycle of 49 down to 0). - The subscript commands to configure BurnInTest from an external application (i.e. specified in the bit-script-input.txt file and run by specifying either a pre-test or EXECUTEWAIT application) has been changed to allow "LOAD" commands (in addition to "SET" scripting commands). - Renamed the "Error" log to "Event" log. - Changed the order of the items in an Event log line, such that the Severity is the first item. - The EXECUTEWAIT script command has been modified such that the external application may provide an input script file (of SET... commands) to be run after the EXECUTEWAIT application closes. This allows external applications to define test environment parameters (such as the serial number and machine type). - Added scripting commands: SETSERIAL "1234-shdfgdhs-GHGHG" SETMACHINETYPE "HP XPS800" SETNOTES "Test notes defined by the external application." SETLOG "\Program Files\Plugin\plugin_log" SETPLUGIN "\Program Files\Plugin\plugin.exe" - Added POST TEST application parameter substitution to allow values to be passed to an external application at the end of a test. These are: $RESULT - "PASS" or "FAIL" will be substituted. $SERIAL - The serial number will be substituted. $MACHINETYPE - The machine type will be substituted. $NOTES - The notes will be substituted. - Added extra logging for memory allocation errors in the disk test - Added "log bad sector increase" and "bad sector threshold" options to disk test. This resulted in a change to the configuration file format and required additional code to automatically convert from old formats. - Modified the user interface in the preferences window for the disk test and the CD test - Improved the handling of USB 2.0 loopback plugs recovery from sleep states. BUG CORRECTIONS - Corrected a bug where the System and Application events logged in the BurnInTest Trace logs were wrong if the event log had reached its maximum size. - Checks that the Sound test files (WAV and MIDI) exist have been added. - The continuous auto updating of the USB image (USB Loopback plug vs. USB 2.0 Loopback plug) on the main window has been removed. This is now updated on BIT startup, selecting Refresh in USB preferences or on starting a test. If there is a serious USB problem, this (together with the USB 2.0 Loopback device driver, V2.0.1002) will avoid the possibility of BurnInTest locking up. - Corrected a bug with the Butterfly seek mode of the Disk test. This was found to occur with FAT32 disks where the Cylinder size was relatively small and the Sector size relatively large. - Reset Defaults on the Configuration Page now resets the Auto Stop Value. - Reset Defaults on the Configuration Page now resets the color indicators. - The CD test has been modified to skip invalid files either with "?"'s , to avoid reporting errors that are due to the CD test media filenames. - The Network test results window scroll bar has been corrected. - The Memory torture test could fail on some systems with a small amount of RAM and relatively high memory fragmentation. This has been corrected. - Scripting correction for .cmd files. - Corrected a bug that caused problems when running the disk test with SMART monitoring turned on. This problem only occurs on a small number of HDD's. - Corrected memory leaks - On occasion, the measured waveform from the loopback sound test may have been slightly altered on starting or stopping all tests, possibly enough to trigger an error. This has been resolved. - If an error occurred in the final second of a test, the error may have been logged but not included in the big PASS/FAIL results window. This has been corrected. - After running a script file that loaded a configuration file, that had a full path specified, the Save and Load configuration menu options no longer worked. This has been corrected. - Previously, the Version of BurnInTest was only written in the First log file after starting BurnInTest. This log line is now written in all log files. - For USB2 tests that have read or write failures, the Windows error codes are now included in the level 2 Activity trace log. - Command line parameters may now be passed to a PreTest application. - Log files may now use a single static filename. This may be useful when the log file is to be parsed by an external program. - Corrected a bug where the Plugin test would stop prematurely. - Corrected the specification of the Scripting EXECUTEWAIT filename. - Changed Script processing such that a script is aborted if a scripting error is encountered and Stop on error is selected. - Added an indication on the main window that a script is currently running ("Script currently running"). - Corrected the serial port test to identify non-existing plugs when the Disable RTS/CTS and DSR/DTR testing has been selected. - Corrected the display of strange results (666666) reported by a user, related to copy protection. - Fixed a memory leak bug in the MBM interface which caused memory allocation errors. - Added BIT version number to the ASCII log file. - Fixed a bug with the 3D Test that was causing it to stop before the autostop timer period - Changed an error in the tape drive test to a warning if tape drive doesn't support setting drive parameters. History of earlier releases: Please see http://passmark.com/products/bit_history.htm Documentation ============= All the documentation is included in the help file. It can be accessed from the help menu. There is also a PDF format Users guide available for download from the PassMark web site. Support ======= For technical support, questions, suggestions, please check the help file for our email address or visit our web page at http://www.passmark.com Ordering / Registration ======================= All the details are in the help file documentation or you can visit our sales information page http://www.passmark.com/sales Compatibility issues with the Network & Parallel Port Tests =========================================================== If you are running Windows 2000 or XP, you need to have administrator privileges to run this test. Enjoy.. The PassMark Development team
WELCOME TO TURBO C 2.0 ---------------------- This README file contains important, last minute information about Turbo C 2.0. The HELPME!.DOC file on the COMMAND LINE/UTILITIES disk also answers many common Technical Support questions. TABLE OF CONTENTS ----------------- 1. How to Get Help 2. Installation 3. Important Notes 4. Corrections to the Manuals 5. Additional Notes 6. Notes for Turbo Prolog Users 7. Files on the Disks 1. HOW TO GET HELP ------------------- If you have any problems, please read this file, the HELPME!.DOC file, and the Turbo C manuals first. If you still have a question and need assistance, help is available from the following sources: 1. Type GO BOR on the CompuServe bulletin board system for instant access to the Borland forums with their libraries of technical information and answers to common questions. If you are not a member of CompuServe, see the enclosed special offer, and write for full details on how to receive a free IntroPak containing a $15 credit toward your first month's on- line charges. 2. Check with your local software dealer or users' group. 3. Write to us at the following address: Borland International Turbo C Technical Support 1800 Green Hills Road P.O. Box 660001 Scotts Valley, CA 95066-0001 Please remember to include your serial number or we will be unable to process your letter. 4. If you have an urgent problem that cannot wait and you have sent in the license agreement from the front of your manual, you may call the Borland Technical Support Department at (408) 438-5300. Please have the following information ready before calling: a. Product name and serial number on your original distribution disk. Please have your serial number ready or we will be unable to process your call. b. Product version number. The version number for Turbo C is displayed when you first load the program and before you press any keys. c. Computer brand, model, and the brands and model numbers of any additional hardware. d. Operating system and version number. (The version number can be determined by typing VER at the MSDOS prompt.) e. Contents of your AUTOEXEC.BAT file. f. Contents of your CONFIG.SYS file. 2. INSTALLATION ---------------- The INSTALL/HELP disk contains a program called INSTALL.EXE that will assist you with the installation of Turbo C 2.0. There are three options for installation: 1. Hard Disk - This option allows you to pick the subdirectories where the files will be loaded. It will create a TURBOC.CFG file based on those directories. 2. Update from TC 1.5 - This allows for an easy update from version 1.5. After the files are copied, all the installed options from your current TC.EXE will be transferred to the new one. This is especially useful if you have modified the colors or editor keys. 3. Floppy Disk - This option will build either a command line or Integrated Development Environment version for a two drive system. Be sure to have three formatted disks ready before you start. To start the installation, change your current drive to the one that has the install program on it and type INSTALL. You will be given instructions in a box at the bottom of the screen for each prompt. For example, if you will be installing from drive A:, type: A: INSTALL You should read the rest of this README file to get further information about this release before you do the installation. 3. IMPORTANT NOTES ------------------- o The file HELPME!.DOC contains discussions of common questions and answers concerning Turbo C 2.0. You should consult it for answers to problems that aren't covered in this file or in the manuals. o If you are running INSTALL or TCINST on a laptop or any other system that uses an LCD or composite display, you should set your system to black and white mode before running INSTALL or TCINST. You can do this from DOS with the following command line: mode bw80 or, you can force INSTALL or TCINST to come up in black and white mode by using the /b switch: tcinst /b o /P PARAMETER FOR TC.EXE. A new command-line switch controls palette swapping on EGA video adapters. Using this switch tc /p hello is recommended only when the user program modifies the EGA palette registers. When /P is specified, the EGA palette will be restored each time the screen is swapped. In general, you don't need to use this switch unless your program modifies the EGA palette registers, or unless your program uses BGI to change the palette. o A program that takes over interrupt 9 cannot be debugged with the integrated debugger. Use the standalone Turbo Debugger instead. o exec() WITH NOVELL NETWORK. Versions of the Novell network system software earlier than 2.01-2 do not support a DOS call used by exec(), spawn(), and system(). If you are using the Integrated Development Environment to run a program that uses any of these functions and you have early Novell system software, run the program from DOS. To do this from the Integrated Development Environment you can use Alt-F/O. o If you used the INSTALL program to upgrade from version 1.5, or if you used CINSTXFR to transfer options from an installation of version 1.5, check the setting of the standard stack frame option in the Integrated Development Environment (Alt-O/C/C/S). If you are going to use the integrated debugger this option should be turned ON. o If you are having problems with the call stack or qualified names, make sure you have compiled with the standard stack frame option turned on. o The ANSI draft has changed the syntax of labels. A label now must always be followed by a statement. This means that code like this is no longer accepted: { . . . jump_label: } If you have code like this, change it to look like this: { . . . jump_label: ; /* need a statement here! */ } o TCC has a switch to specify which assembler to look for. By default, it will look for TASM.EXE. If you want to use a different assembler, use -E<filename>, as described in the Reference Guide. o When using THELP on an AT&T 6300, be sure to use the /L25 command-line option, as described in the file THELP.DOC. o When you use qualified variable names as described on page 57 of the User's Guide you don't need to use the module name to access a variable that is local to a global function. The module name is only needed when you access a static variable or a variable that is local to a static function. o Because of the limited memory available in the Tiny model, it no longer supports graphics functions. o The Version 1.5 graphics drivers (*.BGI) are not compatible with the Version 2.0 graphics library. Use the graphics drivers distributed with Version 2.0. o When used with a Zenith Z-449 card, the BGI autodetection code will always select the 640X480 enhanced EGA mode. If you are using the Z-449 with a monitor that is not compatible with this mode, it will be necessary to override the GraphDriver and GraphMode parameters used in the BGI initgraph() call. 4. CORRECTIONS TO THE MANUALS ------------------------------ REFERENCE GUIDE: Page 159 The prototype for the function getdefaultpallette() is incorrect. It should be struct palettetype * far _Cdecl getdefaultpalette( void ); USER'S GUIDE: Page 57 In the section entitled "Qualifying Variable Names," the last sentence should read "...need to type only myfunc.myvar." 66 The directions for compiling the WORDCNT program are incorrect. There is no WORDCNT.PRJ file; all you need to do is load the file WORDCNT.C into the editor. Once you have done that, the rest of the instructions are correct. 5. ADDITIONAL NOTES -------------------- 5.1 NOTES FOR VERSION 1.0 & 1.5 USERS ------------------------------------- o You must use the Version 2.0 libraries with the 2.0 compilers. o The Integrated Development Environment no longer displays the message "Press any key to return to Turbo C..." when your program terminates. Instead, at the end of your program the User screen is replaced by the Integrated Development Environment. To view the User screen, press Alt-F5 or select Alt-R/S. When you are viewing the User screen, pressing any key will return you to the Integrated Development Environment. o A new pseudo-variable has been added. _FLAGS now contains the value of the flags register so you can test the flags at any point in your program. o The ssignal() and gsignal() functions are no longer supported. See the section in this README on how to convert programs that use them. o The cprintf() function now works as documented. It does not translate line-feeds into CR/LF combinations. o Some compatibles had a problem under Version 1.5 because it used interrupt 18H. Version 2.0 does not use this interrupt, so you shouldn't encounter this problem anymore. o The program TCINST.COM in Version 1.0 has been changed to an .EXE file. You should delete the TCINST.COM program before trying to run the new TCINST.EXE. Otherwise, MS-DOS will actually run the old one. o The FILE structure for streams in Version 1.0 (but not 1.5) has been changed, so that the function tmpfile() could be implemented. You should recompile any modules that use stream I/O. 5.2 THELP ---------- THELP is a memory-resident utility program that gives you access to the Turbo C context-sensitive help system from any program. You don't need to use THELP if you're in the Integrated Development Environment, but it is especially useful if you use the command line compiler and your own text editor, or if you are debugging with the standalone Turbo Debugger. To use THELP, load THELP.COM into memory by typing at the DOS command line: thelp You activate ("pop-up") THELP by typing its hot key -- by default numeric keypad <5>. All Turbo C help commands apply (F1, Ctrl-F1, Alt-F1). For a complete description of THELP, refer to THELP.DOC in the Documentation Subdirectory. 5.3 USING CINSTXFR.EXE ---------------------- Your Turbo C 2.0 package contains a program named CINSTXFR.EXE, which can be used to transfer the configuration of the Integrated Development Environment from your copy of Turbo C 1.5 (not for 1.0) to your new installation of Turbo C 2.0. This program is run automatically by INSTALL.EXE if you select the option to "Update Hard Drive Copy of Turbo C 1.5 to Turbo C 2.0." If you prefer to do this yourself, you can run CINSTXFR.EXE from the DOS command line. CINSTXFR.EXE takes two arguments: the first is the name of your Turbo C 1.5 Integrated Development Environment file (usually TC.EXE), and the second is the name of your Turbo C 2.0 Integrated Development Environment file (also usually TC.EXE). Either one of these names can also include a path name. For example, if your copy of the Turbo C 1.5 Integrated Development Environment file is named TC.EXE and is in a directory named \TURBOC and your copy of the Turbo C 2.0 Integrated Development Environment file is also named TC.EXE but is located in a directory named \TC2, the command line to copy the configuration from 1.5 to 2.0 would look like this: CINSTXFR \TURBOC\TC.EXE \TC2\TC.EXE This will transfer all the options that you installed in your copy of Turbo C 1.5 to your copy of Turbo C 2.0. CINSTXFR.EXE does not work with Turbo C 1.0. If you are upgrading from Turbo C 1.0, you will have to install the options yourself. 5.4 CHANGED SWITCHES FOR OBJXREF -------------------------------- OBJXREF is an object module cross reference utility and is described on page 528 of the Turbo C Reference Guide. The /O option (object files directory) has been changed to the /D (directories) option. The switch now allows for multiple search directories to be specified. The new syntax is: OBJXREF /Ddir1[;dir2[;dir3]] or OBJXREF /Ddir1 [/Ddir2] [/Ddir3] OBJXREF will search each of the directories in the specified order for all object and library files. If no /D option is used, only the current directory will be searched. However, if a /D option is used, the current directory will NOT be searched unless it is included in the directory list. For example, to first search the BORLAND directory for files and then search the current directory, you would type OBJXREF /Dborland;. If multiple search directories are specified and a file matching the file specification is found, OBJXREF will include the file as part of the cross-reference. OBJXREF will only continue to search the other directories for the same file specification if the file specification contains wildcards. A new option has been added to allow you to specify an output file where OBJXREF will send any reports generated. The new option is the /O option, and has the following syntax: OBJXREF myfile.obj /RU /Ofilename.ext By default, all output is sent to the console. 5.5 CONVERSION INFORMATION FOR ssignal() AND gsignal() ------------------------------------------------------ Note: The C library and SIGNAL.H no longer support the ssignal() and gsignal() functions. ssignal() and gsignal() were from the old UNIX System III days. The ANSI standard no longer supports them nor does the current UNIX System V Interface Definition specification. To ease portation problems for people moving older code to Turbo C, we supply the source for the functions that came with TC 1.0 and TC 1.5. Also, the following discussion describes how code can be converted to do the same sort of things that ssignal() and gsignal() do without actually using them. NOTE: The constants defined in SIGNAL.H for SIG_IGN and SIG_DFL are different from the constants that were in TC 1.0 and TC 1.5. By using a globally declared array of function pointers, you can simulate the actions of ssignal() and gsignal() by using the following macros. Notice how the global table entry [0] is used as a temporary variable in the ssignal macro allowing the macro to swap the values and still return the original one. int (*_sigTable[16]) = { SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN, }; #define ssignal(num, action) \ ( \ (((num) < 1) || ((num) > 15)) ? SIG_DFL : \ ( \ (_sigTable[0] = _sigTable[(num)]), /* List of actions */ \ _sigTable[(num)] = (action), /* The last expression */ \ _sigTable[0] /* is the return value */ \ ) \ ) \ #define gsignal(num) \ ( \ (((num) < 1) || ((num) > 15)) ? 0 : \ ( \ (_sigTable[(num)] == SIG_IGN) ? 1 : \ ( \ (_sigTable[(num)] == SIG_DFL) ? 0 : (*_sigTable[(num)])() \ ) \ ) \ ) \ 6. NOTES FOR TURBO PROLOG USERS -------------------------------- o If you are linking C code with programs generated by Turbo Prolog 2.0, use the file INIT.OBJ provided on the EXAMPLES/BGI/MISC disk of the Turbo C 2.0 package instead of the file provided with Turbo Prolog 2.0. There have been some changes made in Turbo C 2.0 that require the use of this new file. o If your C code uses floating point math and you link with the emulator library, Prolog will not automatically detect a math coprocessor chip. If you want to force the program to use the coprocessor, link it with FP87.LIB instead of EMU.LIB. 7. FILES ON THE DISKS ---------------------- INSTALL/HELP ------------ INSTALL EXE - Installation program README COM - Reads this README TCHELP TCH - Help file for Turbo C THELP COM - Pop-up utility to access TCHELP.TCH THELP DOC - Documentation for THELP.COM README - This file INTEGRATED DEVELOPMENT ENVIRONMENT ---------------------------------- TC EXE - Turbo C Compiler TCCONFIG EXE - Program to convert configuration files MAKE EXE - Program for managing projects GREP COM - Turbo GREP program TOUCH COM - Program that updates a file's date and time COMMAND LINE/UTILITIES ---------------------- TCC EXE - Command-line version of Turbo C Compiler CPP EXE - Turbo C preprocessor TCINST EXE - Installation program for TC.EXE TLINK EXE - Borland Turbo Linker HELPME! DOC - Common questions and answers LIBRARIES --------- C0S OBJ - Small model startup code C0T OBJ - Tiny model startup code C0L OBJ - Large model startup code MATHS LIB - Small model math library MATHL LIB - Large model math library CS LIB - Small model run-time library CL LIB - Large model run-time library EMU LIB - 8087 emulator library GRAPHICS LIB - Graphics library FP87 LIB - 8087 library TLIB EXE - Borland Turbo Librarian HEADER FILES/LIBRARIES ---------------------- ???????? H - Turbo C header files - Subdirectory with SYS\*.H header files C0C OBJ - Compact model startup code C0M OBJ - Medium model startup code MATHC LIB - Compact model math library MATHM LIB - Medium model math library CC LIB - Compact model run-time library CM LIB - Medium model run-time library EXAMPLES/BGI/MISC ----------------- UNPACK COM - Program to unpack the .ARC files OBJXREF COM - Object file cross-reference utility C0H OBJ - Huge model startup code MATHH LIB - Huge model math library CH LIB - Huge model run-time library GETOPT C - Parses options in command line HELLO C - Example Turbo C program MATHERR C - Source code for handling math library exceptions SSIGNAL C - Source code for ssignal and gsignal functions CINSTXFR EXE - Program to copy TC 1.5 installation to TC 2.0 INIT OBJ - Initialization code for use when linking with Prolog BGI ARC - BGI drivers and fonts BGIOBJ EXE - Conversion program for fonts and drivers ATT BGI - Graphics driver for ATT400 graphics card CGA BGI - Graphics driver for CGA EGAVGA BGI - Graphics driver for EGA and VGA HERC BGI - Graphics driver for Hercules IBM8514 BGI - Graphics driver for IBM 8514 graphics card PC3270 BGI - Graphics driver for PC3270 GOTH CHR - Font for gothic character set LITT CHR - Font for small character set SANS CHR - Font for sans serif character set TRIP CHR - Font for triplex character set BGIDEMO C - Graphics demonstration program STARTUP ARC - ARC file with startup source code and related files RULES ASI - Assembler include file for interfacing with Turbo C C0 ASM - Assembler source for startup code SETARGV ASM - Assembler source code for parsing the command line SETENVP ASM - Assembler source code for preparing the environment BUILD-C0 BAT - Batch file for building the startup code modules MAIN C - Alternative, stripped-down C main file EMUVARS ASI - Assembler variable declarations for emulator WILDARGS OBJ - Object code for module to expand wildcard arguments EXAMPLES ARC - Various C examples code CPASDEMO PAS - Pascal program that demonstrates Turbo Pascal 4.0 - Turbo C interface CPASDEMO C - C example module for the Turbo Pascal 4.0 - Turbo C interface demonstration CTOPAS TC - Configuration file for use with TC.EXE that creates Turbo C modules in the correct format for linking with Turbo Pascal 4.0 programs CBAR C - Example function to be used with PBAR.PRO PBAR PRO - Example Turbo Prolog program demonstrating interface with Turbo C WORDCNT C - Example program demonstrating source level debugging. NOTE: DO NOT RUN THIS PROGRAM WITHOUT READING THE DISCUSSION IN THE MANUAL. IT CONTAINS DELIBERATE ERRORS. WORDCNT DAT - Data file for use by WORDCNT.C MCALC ARC - Mcalc sources and doc MCALC DOC - MicroCalc documentation MCALC C - MicroCalc main program source code MCINPUT C - MicroCalc input routines source code MCOMMAND C - MicroCalc commands source code MCPARSER C - MicroCalc input parser source code MCUTIL C - MicroCalc utilities source code MCDISPLY C - MicroCalc screen display source code MCALC H - The header file for MicroCalc MCALC PRJ - The MicroCalc project file
1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) 2.1.4. 注册角色(Role) 2.1.5. 定义访问控制 2.1.6. 查询 ACL 2.2. 精细的访问控制 2.2.1. 精细的访问控制 2.2.2. 除去访问控制 2.3. 高级用法 2.3.1. 保存 ACL 数据确保持久性 2.3.2. 使用声明(Assert)来编写条件性的 ACL 规则 3. Zend_Auth 3.1. 简介 3.1.1. 适配器 3.1.2. 结果 3.1.3. 身份的持久(Persistence) 3.1.3.1. 在PHP Session 中的缺省持久(Persistence) 3.1.3.2. 实现订制存储 3.1.4. 使用Zend_Auth 3.2. 数据库表认证 3.2.1. 简介 3.2.2. 高级使用:持久一个 DbTable 结果对象 3.2.3. 高级用法示例 3.3. 摘要式认证 3.3.1. 简介 3.3.2. 规范(Specifics) 3.3.3. 身份(Identity) 3.4. HTTP 认证适配器 3.4.1. 简介 3.4.2. 设计回顾 3.4.3. 配置选项 3.4.4. Resolvers 3.4.4.1. 文件 Resolver 3.4.5. 基本用法 4. Zend_Cache 4.1. 简介 4.2. 缓存原理 4.2.1. Zend_Cache 工厂方法 4.2.2. 标记纪录 4.2.3. 缓存清理 4.3. Zend_Cache前端 4.3.1. Zend_Cache_Core 4.3.1.1. 简介 4.3.1.2. 可用选项 4.3.1.3. 例子 4.3.2. Zend_Cache_Frontend_Output 4.3.2.1. 简介 4.3.2.2. 可用的选项 4.3.2.3. 例子 4.3.3. Zend_Cache_Frontend_Function 4.3.3.1. Introduction 4.3.3.2. A可用的选项 4.3.3.3. 例子 4.3.4. Zend_Cache_Frontend_Class 4.3.4.1. Introduction 4.3.4.2. Available options 4.3.4.3. Examples 4.3.5. Zend_Cache_Frontend_File 4.3.5.1. Introduction 4.3.5.2. Available options 4.3.5.3. Examples 4.3.6. Zend_Cache_Frontend_Page 4.3.6.1. Introduction 4.3.6.2. Available options (for this frontend in Zend_Cache factory) 4.3.6.3. Examples 4.4. Zend_Cache后端 4.4.1. Zend_Cache_Backend_File 4.4.2. Zend_Cache_Backend_Sqlite 4.4.3. Zend_Cache_Backend_Memcached 4.4.4. Zend_Cache_Backend_Apc 4.4.5. Zend_Cache_Backend_ZendPlatform 5. Zend_Config 5.1. 简介 5.2. 操作理论 5.3. Zend_Config_Ini 5.4. Zend_Config_Xml 6. Zend_Console_Getopt 6.1. Getopt 简介 6.2. 声明 Getopt 规则 6.2.1. 用短语法声明选项 6.2.2. 用长语法声明选项 6.3. 读取(Fetching)选项和参数 6.3.1. 操作 Getopt 异常 6.3.2. 通过名字读取 (Fetching)选项 6.3.3. 报告选项 6.3.4. 读取非选项参数 6.4. 配置 Zend_Console_Getopt 6.4.1. 添加选项规则 6.4.2. 添加帮助信息 6.4.3. 添加选项别名 6.4.4. 添加参数列表 6.4.5. 添加配置 7. Zend_Controller 7.1. Zend_Controller 快速入门 7.1.1. 简介 7.1.2. 入门 7.1.2.1. 文件系统的组织结构 7.1.2.2. 设置文件根目录 7.1.2.3. 创建URL重写规则 7.1.2.4. 创建你的bootstrap文件 7.1.2.5. 创建默认的控制器(Action Controller) 7.1.2.6. 创建你的视图脚本 7.1.2.7. 创建你自己的错误控制器 7.1.2.8. 访问站点! 7.2. Zend_Controller 基础 7.3. 前端控制器 7.3.1. 概述 7.3.2. 主要方法 7.3.2.1. getInstance() 7.3.2.2. setControllerDirectory() 和 addControllerDirectory() 7.3.2.3. dispatch() 7.3.2.4. run() 7.3.3. 环境访问器方法 7.3.4. 前端控制器参数 7.3.5. 继承前端控制器 7.4. 请求对象 7.4.1. 介绍 7.4.2. HTTP 请求 7.4.2.1. 访问请求数据 7.4.2.2. 基地址和子目录 7.4.2.3. 决定请求方式 7.4.2.4. 删除 AJAX 请求 7.4.3. 子类化请求对象 7.5. 标准路由器:Zend_Controller_Router_Rewrite 7.5.1. 简介 7.5.2. 使用路由器 7.5.3. 基本的Rewrite路由器操作 7.5.4. 缺省路由 7.5.5. 基本 URL 和子目录 7.5.6. Route Types 7.5.6.1. Zend_Controller_Router_Route 7.5.6.1.1. 变量缺省 7.5.6.1.2. 变量请求 7.5.6.2. Zend_Controller_Router_Route_Static 7.5.6.3. Zend_Controller_Router_Route_Regex 7.5.7. 使用 Zend_Config with the RewriteRouter 7.5.8. Subclassing the Router 7.6. 分发器 7.6.1. 概述 7.6.2. 子类化分发器 7.7. 动作控制器 7.7.1. 简介 7.7.2. 对象初始化 7.7.3. 派遣前后的钩子 7.7.4. 访问器 7.7.5. 视图集成 7.7.5.1. 视图初始化 7.7.5.2. 解析(Rendering)视图 7.7.6. 实用方法 7.7.7. 继承(Subclassing)动作控制器 7.8. 动作助手 7.8.1. 介绍 7.8.2. 初始化助手 7.8.3. 助手经纪人 7.8.4. 内建的动作助手 7.8.4.1. 动作堆栈(助手) 7.8.4.2. AutoComplete 7.8.4.2.1. AutoCompletion with Dojo 7.8.4.2.2. AutoCompletion with Scriptaculous 7.8.4.3. ContextSwitch and AjaxContext 7.8.4.3.1. 缺省可用的上下文 7.8.4.3.2. 创建定制的上下文 7.8.4.3.3. 为每个动作设置上下文 7.8.4.3.4. 初始化上下文开关 7.8.4.3.5. 另外的功能 7.8.4.3.6. AjaxContext 函数 7.8.4.4. FlashMessenger 7.8.4.4.1. 简介 7.8.4.4.2. Basic Usage Example 7.8.4.5. JSON 7.8.4.6. 转向器(Redirector) 7.8.4.6.1. 介绍 7.8.4.6.2. 基础用例 7.8.4.7. ViewRenderer 7.8.4.7.1. 介绍 7.8.4.7.2. API 7.8.4.7.3. 基础用法示例 7.8.4.7.4. 高级用法示例 7.8.5. 编写自己的助手 7.9. 响应对象 7.9.1. 用法 7.9.2. 处理消息头 7.9.3. 命名片段 7.9.4. 在响应对象中测试异常 7.9.5. 子类化响应对象 7.10. 插件 7.10.1. 简介 7.10.2. 编写插件 7.10.3. 使用插件 7.10.4. 获取和控制插件 7.10.5. 包含在标准发行包中的插件 7.10.5.1. 动作堆栈 7.10.5.2. Zend_Controller_Plugin_ErrorHandler 7.10.5.2.1. 使用 ErrorHandler 作为一个 404 处理器(handler) 7.10.5.2.2. 处理以前呈现的(rendered)输出 7.10.5.2.3. 插件用法示例 7.10.5.2.4. 错误控制器示例 7.11. 使用传统的模块目录结构 7.11.1. 简介 7.11.2. 指定模块控制器目录 7.11.3. Routing to modules 7.11.4. 模块或全局缺省控制器 7.12. MVC 异常 7.12.1. 介绍 7.12.2. 如何处理异常? 7.12.3. 可能遭遇的MVC异常 7.13. 从以前的版本移植 7.13.1. 从 1.0.x 到 1.5.0 或更新的版本的移植 7.13.2. 从 0.9.3 到 1.0.0RC1 或更新的版本的移植 7.13.3. 从 0.9.2 移植到 0.9.3 或更新的版本 7.13.4. 从 0.6.0 移植到 0.8.0 或更新的版本 7.13.5. 从 0.2.0 或以前的版本移植到 0.6.0 8. Zend_Currency 8.1. Zend_Currency 简介 8.1.1. 为什么使用 Zend_Currency ? 8.2. 如何使用货币 8.2.1. 从货币创建输出 8.2.2. 修改货币格式 8.2.3. Zend_Currency 的信息方法 8.2.4. 设置新缺省值 8.2.5. 加速 Zend_Currency 8.3. 从前面的版本迁移 8.3.1. 从 1.0.2 到 1.0.3 或更新的迁移 9. Zend_Date 9.1. Introduction 9.1.1. Always Set a Default Timezone 9.1.2. Why Use Zend_Date? 9.2. 操作理论 9.2.1. 内部(Internals) 9.3. Basic Methods 9.3.1. The current date 9.3.2. Zend_Date by Example 9.3.2.1. Ouput a Date 9.3.2.2. Setting a Date 9.3.2.3. Adding and Subtracting Dates 9.3.2.4. Comparation of dates 9.4. Zend_Date API Overview 9.4.1. Zend_Date Options 9.4.1.1. Selecting the date format type 9.4.1.2. DST and Date Math 9.4.1.3. Month Calculations 9.4.1.4. Speed up date localization and normalization with Zend_Cache 9.4.1.5. Receiving syncronised timestamps with Zend_TimeSync 9.4.2. Working with Date Values 9.4.3. Basic Zend_Date Operations Common to Many Date Parts 9.4.3.1. List of Date Parts 9.4.3.2. List of Date Operations 9.4.4. Comparing Dates 9.4.5. Getting Dates and Date Parts 9.4.6. Working with Fractions of Seconds 9.4.7. Sunrise / Sunset 9.5. Creation of dates 9.5.1. Create the actual date 9.5.2. Create a date from database 9.5.3. Create dates from an array 9.6. Constants for General Date Functions 9.6.1. Using Constants 9.6.2. List of All Constants 9.6.3. Self-Defined OUTPUT Formats with ISO 9.6.4. Self-defined OUTPUT formats using PHP's date() format specifiers 9.7. Working examples 9.7.1. Checking dates 9.7.2. Sunrise and Sunset 9.7.3. Timezones 10. Zend_Db 10.1. Zend_Db_Adapter 10.1.1. 简介 10.1.2. 添加引号防止数据库攻击 10.1.3. 直接查询 10.1.4. 事务处理 10.1.5. 插入数据行 10.1.6. 更新数据行 10.1.7. 删除数据行 10.1.8. 取回查询结果 10.2. Zend_Db_Statement 10.2.1. Creating a Statement 10.2.2. Executing a Statement 10.2.3. Fetching Results from a SELECT Statement 10.2.3.1. Fetching a Single Row from a Result Set 10.2.3.2. Fetching a Complete Result Set 10.2.3.3. Changing the Fetch Mode 10.2.3.4. Fetching a Single Column from a Result Set 10.2.3.5. Fetching a Row as an Object 10.3. Zend_Db_Profiler 10.3.1. Introduction 10.3.2. Using the Profiler 10.3.3. Advanced Profiler Usage 10.3.3.1. Filter by query elapsed time 10.3.3.2. Filter by query type 10.3.3.3. Retrieve profiles by query type 10.4. Zend_Db_Select 10.4.1. 简介 10.4.2. 同一表中查询多列数据 10.4.3. 多表联合查询 10.4.4. WHERE条件 10.4.5. GROUP BY分句 10.4.6. HAVING 条件 10.4.7. ORDER BY 分句 10.4.8. 通过总数和偏移量进行LIMIT限制 10.4.9. 通过页数和总数进行LIMIT限制 10.5. Zend_Db_Table 10.5.1. 简介 10.5.2. 开始 10.5.3. 表名和主键 10.5.4. 插入数据 10.5.5. 更新数据 10.5.6. Deleting Rows 10.5.7. 根据主键查找数据 10.5.8. 取回一条记录 10.5.9. 取回多条记录 10.5.10. Adding Domain Logic 10.6. Zend_Db_Table_Row 10.6.1. 简介 10.6.2. 取回一条记录 10.6.3. 修改数据 10.7. Zend_Db_Table_Rowset 10.7.1. 简介 10.7.2. 取回结果集 10.7.3. 遍历结果集 10.8. Zend_Db_Table Relationships 10.8.1. Introduction 10.8.2. Defining Relationships 10.8.3. Fetching a Dependent Rowset 10.8.4. Fetching a Parent Row 10.8.5. Fetching a Rowset via a Many-to-many Relationship 10.8.6. Cascading Write Operations 10.8.6.1. Notes Regarding Cascading Operations 11. Zend_Debug 11.1. 输出变量的值 (Dumping Variables) 12. Zend_Exception 12.1. 使用“异常” 13. Zend_Feed 13.1. 介绍 13.2. 导入Feeds 13.2.1. 定制 feeds 13.2.1.1. 导入定制的数组 13.2.1.2. 导入定制的数据源 13.2.1.3. Dumping feed 内容 13.3. 从网页上获得Feed 13.4. RSS Feed的使用 13.5. Atom Feed的使用 13.6. 单个Atom条目的处理 13.7. 修改Feed和条目结构 13.8. 自定义Feed和条目类 14. Zend_Filter 14.1. 简介 14.1.1. 什么是过滤器(filter)? 14.1.2. 过滤器的基本用法 14.1.3. 使用静态 get() 方法 14.2. 标准过滤器类 14.2.1. Alnum 14.2.2. Alpha 14.2.3. BaseName 14.2.4. Digits 14.2.5. Dir 14.2.6. HtmlEntities 14.2.7. Int 14.2.8. RealPath 14.2.9. StringToLower 14.2.10. StringToUpper 14.2.11. StringTrim 14.2.12. StripTags 14.3. 过滤器链 14.4. 编写过滤器 14.5. Zend_Filter_Input 14.5.1. Declaring Filter and Validator Rules 14.5.2. Creating the Filter and Validator Processor 14.5.3. Retrieving Validated Fields and other Reports 14.5.3.1. Querying if the input is valid 14.5.3.2. Getting Invalid, Missing, or Unknown Fields 14.5.3.3. Getting Valid Fields 14.5.4. Using Metacommands to Control Filter or Validator Rules 14.5.4.1. The FIELDS metacommand 14.5.4.2. The PRESENCE metacommand 14.5.4.3. The DEFAULT_VALUE metacommand 14.5.4.4. The ALLOW_EMPTY metacommand 14.5.4.5. The BREAK_CHAIN metacommand 14.5.4.6. The MESSAGES metacommand 14.5.4.7. Using options to set metacommands for all rules 14.5.5. Adding Filter Class Namespaces 14.6. Zend_Filter_Inflector 14.6.1. Operation 14.6.2. Setting Paths To Alternate Filters 14.6.3. Setting the Inflector Target 14.6.4. Inflection Rules 14.6.4.1. Static Rules 14.6.4.2. Filter Inflector Rules 14.6.4.3. Setting Many Rules At Once 14.6.5. Utility Methods 14.6.6. Using Zend_Config with Zend_Filter_Inflector 15. Zend_Form 15.1. Zend_Form 15.2. Zend_Form 快速起步 15.2.1. 创建表单对象 15.2.2. 添加表单元素 15.2.3. 解析(Render)表单 15.2.4. 检查表单是否有效 15.2.5. 获得错误状态 15.2.6. 放到一起 15.2.7. 使用 Zend_Config 对象 15.2.8. 结论 15.3. 使用 Zend_Form_Element 生成表单元素 15.3.1. 插件加载器 15.3.2. 过滤器 15.3.3. 校验器 15.3.4. 装饰器 15.3.5. 元数据和属性 15.3.6. 标准元素 15.3.7. Zend_Form_Element 方法 15.3.8. 配置 15.3.9. 定制元素 15.4. 使用 Zend_Form 生成表单 15.4.1. 插件加载器 15.4.2. 元素(Elements) 15.4.2.1. 组装和读取数值 15.4.2.2. 全局操作 15.4.2.3. 和元素交互使用的方法 15.4.3. 显示组(Display Groups) 15.4.3.1. 全局操作 15.4.3.2. 使用定制的显示组类 15.4.3.3. 和显示组交互使用的方法 15.4.3.4. Zend_Form_DisplayGroup 方法 15.4.4. 子表单 15.4.4.1. 全局操作 15.4.4.2. 和子表单交互使用的方法 15.4.5. 元数据(Metadata)和属性(Attributes) 15.4.6. 装饰器 15.4.7. 校验 15.4.8. 方法 15.4.9. 配置 15.4.10. 定制表单 15.5. 使用 Zend_Form_Decorator 生成定制的表单标识(Markup) 15.5.1. 操作 15.5.2. 标准装饰器 15.5.3. 定制装饰器 15.6. Zend Framework 带有的标准表单元素 15.6.1. Zend_Form_Element_Button 15.6.2. Zend_Form_Element_Checkbox 15.6.3. Zend_Form_Element_Hidden 15.6.4. Zend_Form_Element_Hash 15.6.5. Zend_Form_Element_Image 15.6.6. Zend_Form_Element_MultiCheckbox 15.6.7. Zend_Form_Element_Multiselect 15.6.8. Zend_Form_Element_Password 15.6.9. Zend_Form_Element_Radio 15.6.10. Zend_Form_Element_Reset 15.6.11. Zend_Form_Element_Select 15.6.12. Zend_Form_Element_Submit 15.6.13. Zend_Form_Element_Text 15.6.14. Zend_Form_Element_Textarea 15.7. Zend Framework 带有的标准表单装饰器(Decorators) 15.7.1. Zend_Form_Decorator_Callback 15.7.2. Zend_Form_Decorator_Description 15.7.3. Zend_Form_Decorator_DtDdWrapper 15.7.4. Zend_Form_Decorator_Errors 15.7.5. Zend_Form_Decorator_Fieldset 15.7.6. Zend_Form_Decorator_Form 15.7.7. Zend_Form_Decorator_FormElements 15.7.8. Zend_Form_Decorator_HtmlTag 15.7.9. Zend_Form_Decorator_Image 15.7.10. Zend_Form_Decorator_Label 15.7.11. Zend_Form_Decorator_ViewHelper 15.7.12. Zend_Form_Decorator_ViewScript 15.8. Zend_Form 的国际化 15.8.1. 在表单中初始化 I18n 15.8.2. 标准 I18N 目标 15.9. Zend_Form 的高级用法 15.9.1. 数组符号(Notation) 15.9.2. 多页表单 16. Zend_Gdata 16.1. Introduction to Gdata 16.1.1. Structure of Zend_Gdata 16.1.2. Interacting with Google Services 16.1.3. Obtaining instances of Zend_Gdata classes 16.1.4. Google Data Client Authentication 16.1.5. Dependencies 16.1.6. Creating a new Gdata client 16.1.7. Common query parameters 16.1.8. Fetching a feed 16.1.9. Working with multi-page feeds 16.1.10. Working with data in feeds and entries 16.1.11. Updating entries 16.1.12. Posting entries to Google servers 16.1.13. Deleting entries on Google servers 16.2. Authenticating with AuthSub 16.2.1. Creating an AuthSub authenticated Http Client 16.2.2. Revoking AuthSub authentication 16.3. Authenticating with ClientLogin 16.3.1. Creating a ClientLogin authenticated Http Client 16.3.2. Terminating a ClientLogin authenticated Http Client 16.4. Using Google Calendar 16.4.1. Connecting To The Calendar Service 16.4.1.1. Authentication 16.4.1.2. Creating A Service Instance 16.4.2. Retrieving A Calendar List 16.4.3. Retrieving Events 16.4.3.1. Queries 16.4.3.2. Retrieving Events In Order Of Start Time 16.4.3.3. Retrieving Events In A Specified Date Range 16.4.3.4. Retrieving Events By Fulltext Query 16.4.3.5. Retrieving Individual Events 16.4.4. Creating Events 16.4.4.1. Creating Single-Occurrence Events 16.4.4.2. Event Schedules and Reminders 16.4.4.3. Creating Recurring Events 16.4.4.4. Using QuickAdd 16.4.5. Modifying Events 16.4.6. Deleting Events 16.4.7. Accessing Event Comments 16.5. Using Google Documents List Data API 16.5.1. Get a List of Documents 16.5.2. Upload a Document 16.5.3. Searching the documents feed 16.5.3.1. Get a List of Word Processing Documents 16.5.3.2. Get a List of Spreadsheets 16.5.3.3. Performing a text query 16.6. Using Google Spreadsheets 16.6.1. Create a Spreadsheet 16.6.2. Get a List of Spreadsheets 16.6.3. Get a List of Worksheets 16.6.4. Interacting With List-based Feeds 16.6.4.1. Get a List-based Feed 16.6.4.2. Reverse-sort Rows 16.6.4.3. Send a Structured Query 16.6.4.4. Add a Row 16.6.4.5. Edit a Row 16.6.4.6. Delete a Row 16.6.5. Interacting With Cell-based Feeds 16.6.5.1. Get a Cell-based Feed 16.6.5.2. Send a Cell Range Query 16.6.5.3. Change Contents of a Cell 16.7. Using Google Apps Provisioning 16.7.1. Setting the current domain 16.7.1.1. Setting the domain for the service class 16.7.1.2. Setting the domain for query classes 16.7.2. Interacting with users 16.7.2.1. Creating a user account 16.7.2.2. Retrieving a user account 16.7.2.3. Retrieving all users in a domain 16.7.2.4. Updating a user account 16.7.2.4.1. Resetting a user's password 16.7.2.4.2. Forcing a user to change their password 16.7.2.4.3. Suspending a user account 16.7.2.4.4. Granting administrative rights 16.7.2.5. Deleting user accounts 16.7.3. Interacting with nicknames 16.7.3.1. Creating a nickname 16.7.3.2. Retrieving a nickname 16.7.3.3. Retrieving all nicknames for a user 16.7.3.4. Retrieving all nicknames in a domain 16.7.3.5. Deleting a nickname 16.7.4. Interacting with email lists 16.7.4.1. Creating an email list 16.7.4.2. Retrieving all email lists to which a recipient is subscribed 16.7.4.3. Retrieving all email lists in a domain 16.7.4.4. Deleting an email list 16.7.5. Interacting with email list recipients 16.7.5.1. Adding a recipient to an email list 16.7.5.2. Retrieving the list of subscribers to an email list 16.7.5.3. Removing a recipient from an email list 16.7.6. Handling errors 16.8. Using Google Base 16.8.1. Connect To The Base Service 16.8.1.1. Authentication 16.8.1.2. Create A Service Instance 16.8.2. Retrieve Items 16.8.2.1. Send a Structured Query 16.8.2.1.1. Query Customer Items Feed 16.8.2.1.2. Query Snippets Feed 16.8.2.2. Iterate through the Items 16.8.3. Insert, Update, and Delete Customer Items 16.8.3.1. Insert an Item 16.8.3.2. Modify an Item 16.8.3.3. Delete an Item 16.9. Using the YouTube data API 16.9.1. Retrieving video feeds 16.9.1.1. Searching for videos by metadata 16.9.1.2. Searching for videos by categories and tags/keywords 16.9.1.3. Retrieving standard feeds 16.9.1.4. Retrieving videos uploaded by a user 16.9.1.5. Retrieving videos favorited by a user 16.9.1.6. Retrieving video responses for a video 16.9.2. Retrieving video comments 16.9.3. Retrieving playlist feeds 16.9.3.1. Retrieving the playlists of a user 16.9.3.2. Retrieving a specific playlist 16.9.4. Retrieving a list of a user's subscriptions 16.9.5. Retrieving a user's profile 16.10. Using Picasa Web Albums 16.10.1. Connecting To The Service 16.10.1.1. Authentication 16.10.1.2. Creating A Service Instance 16.10.2. Understanding and Constructing Queries 16.10.3. Retrieving Feeds And Entries 16.10.3.1. Retrieving A User 16.10.3.2. Retrieving An Album 16.10.3.3. Retrieving A Photo 16.10.3.4. Retrieving A Comment 16.10.3.5. Retrieving A Tag 16.10.4. Creating Entries 16.10.4.1. Creating An Album 16.10.4.2. Creating A Photo 16.10.4.3. Creating A Comment 16.10.4.4. Creating A Tag 16.10.5. Deleting Entries 16.10.5.1. Deleting An Album 16.10.5.2. Deleting A Photo 16.10.5.3. Deleting A Comment 16.10.5.4. Deleting A Tag 16.10.5.5. Optimistic Concurrency (Notes On Deletion) 16.11. Catching Gdata Exceptions 17. Zend_Http 17.1. Zend_Http_Client 17.1.1. 简介 17.1.2. 带有指定的HTTP头的基本 GET 请求 17.1.3. 发送请求到多个域名 17.1.4. 改变HTTP timeout时间 17.1.5. 动态指定HTTP Header 17.1.6. 构造 HTTP POST, PUT, 和 DELETE 请求 17.2. Zend_Http_Client - Advanced Usage 17.2.1. HTTP Redirections 17.2.2. Adding Cookies and Using Cookie Persistence 17.2.3. Setting Custom Request Headers 17.2.4. File Uploads 17.2.5. Sending Raw POST Data 17.2.6. HTTP Authentication 17.2.7. Sending Multiple Requests With the Same Client 17.3. Zend_Http_Client - Connection Adapters 17.3.1. Overview 17.3.2. The Socket Adapter 17.3.3. The Proxy Adapter 17.3.4. The Test Adapter 17.3.5. Creating your own connection adapters 17.4. Zend_Http_Cookie and Zend_Http_CookieJar 17.4.1. Introduction 17.4.2. Instantiating Zend_Http_Cookie Objects 17.4.3. Zend_Http_Cookie getter methods 17.4.4. Zend_Http_Cookie: Matching against a scenario 17.4.5. The Zend_Http_CookieJar Class: Instantiation 17.4.6. Adding Cookies to a Zend_Http_CookieJar object 17.4.7. Retrieving Cookies From a Zend_Http_CookieJar object 17.5. Zend_Http_Response 17.5.1. 简介 18. Zend_Json 18.1. 简介 18.2. 基本用法 18.3. JSON 对象 18.4. XML 到 JSON 转换 19. Zend_Layout 19.1. 简介 19.2. Zend_Layout 快速入门 19.2.1. 布局脚本 19.2.2. 和Zend Framework MVC一起使用 Zend_Layout 19.2.3. 使用Zend_Layout做为独立的组件 19.2.4. 尝试一下布局 19.3. Zend_Layout 配置选项 19.3.1. 范例 19.4. Zend_Layout 高级用法 19.4.1. 定制视图对象 19.4.2. 定制前端控制器插件 19.4.3. 定制动作助手 19.4.4. 定制布局脚本路径解析(Resolution):使用变形器(Inflector) 20. Zend_Loader 20.1. 动态加载文件和类 20.1.1. 加载文件 20.1.2. 加载类 20.1.3. 判定某个文件是否可读 20.1.4. 使用 Autoloader 20.2. 加载插件 20.2.1. 基本用例 20.2.2. 处理插件路径 20.2.3. 测试插件和获取类的名字 21. Zend_Locale 21.1. Introduction 21.1.1. What is Localization 21.1.2. What is a Locale? 21.1.3. How are Locales Represented? 21.1.4. Selecting the Right Locale 21.1.5. Usage of automatic Locales 21.1.6. Using a default Locale 21.1.7. ZF Locale-Aware Classes 21.1.8. Zend_Locale_Format::setOptions(array $options) 21.1.9. Speed up Zend_Locale and it's subclasses 21.2. Using Zend_Locale 21.2.1. Copying, Cloning, and Serializing Locale Objects 21.2.2. Equality 21.2.3. Default locales 21.2.4. Set a new locale 21.2.5. Getting the language and region 21.2.6. Obtaining localized strings 21.2.7. Obtaining translations for "yes" and "no" 21.2.8. Get a list of all known locales 21.3. Normalization and Localization 21.3.1. Number normalization: getNumber($input, Array $options) 21.3.1.1. Precision and Calculations 21.3.2. Number localization 21.3.3. Number testing 21.3.4. Float value normalization 21.3.5. Floating point value localization 21.3.6. Floating point value testing 21.3.7. Integer value normalization 21.3.8. Integer point value localization 21.3.9. Integer value testing 21.3.10. Numeral System Conversion 21.3.10.1. List of supported numeral systems 21.4. Working with Dates and Times 21.4.1. Normalizing Dates and Times 21.4.2. Testing Dates 21.4.3. Normalizing a Time 21.4.4. Testing Times 21.5. Supported Languages for Locales 21.6. Supported Regions for Locales 22. Zend_Log 22.1. 概述 22.1.1. 创建Log 22.1.2. 日志消息 22.1.3. 销毁Log 22.1.4. 使用内建的消息等级 22.1.5. 添加用户定义的日志等级 22.1.6. 理解日志事件 22.2. Writers 22.2.1. 写入到流(Streams) 22.2.2. 写入到数据库 22.2.3. 踩熄Writer 22.2.4. 测试 Mock 22.2.5. 组合Writers 22.3. Formatters 22.3.1. 简单格式化 22.3.2. 格式化到XML 22.4. 过滤器 22.4.1. 对所有Writer过滤 22.4.2. 过滤一个Writer实例 23. Zend_Mail 23.1. 简介 23.1.1. 起步 23.1.2. 配置缺省的 sendmail 传送器(transport) 23.2. 通过SMTP发送邮件 23.3. 通过一个SMTP连接发送多个邮 23.4. 使用不同的Transport对象 23.5. HTML邮件 23.6. 附件 23.7. 增加收件人 23.8. 控制MIME分界线 23.9. 外加邮件头信息 23.10. 字符集 23.11. 编码 23.12. SMTP 身份验证 23.13. Securing SMTP Transport 23.14. Reading Mail Messages 23.14.1. Simple example using Pop3 23.14.2. Opening a local storage 23.14.3. Opening a remote storage 23.14.4. Fetching messages and simple methods 23.14.5. Working with messages 23.14.6. Checking for flags 23.14.7. Using folders 23.14.8. Advanced Use 23.14.8.1. Using NOOP 23.14.8.2. Caching instances 23.14.8.3. Extending Protocol Classes 23.14.8.4. Using Quota (since 1.5) 24. Zend_Measure 24.1. Introduction 24.2. Creation of Measurements 24.2.1. Creating measurements from integers and floats 24.2.2. Creating measurements from strings 24.2.3. Measurements from localized strings 24.3. Outputting measurements 24.3.1. Automatic output 24.3.2. Outputting values 24.3.3. Output with unit of measurement 24.3.4. Output as localized string 24.4. Manipulating Measurements 24.4.1. Convert 24.4.2. Add and subtract 24.4.3. Compare 24.4.4. Compare 24.4.5. Manually change values 24.4.6. Manually change types 24.5. Types of measurements 24.5.1. Hints for Zend_Measure_Binary 24.5.2. Hints for Zend_Measure_Number 24.5.3. Roman numbers 25. Zend_Memory 25.1. 概述 25.1.1. 简介 25.1.2. 操作原理 25.1.2.1. 内存管理器 25.1.2.2. 内存容器 25.1.2.3. 锁定的内存 25.1.2.4. 可移动内存 25.2. 内存管理器 25.2.1. 创建一个内存管理器 25.2.2. 管理内存对象 25.2.2.1. 创建可移动的对象 25.2.2.2. 创建锁定的对象 25.2.2.3. 销毁对象 25.2.3. 内存管理器设置 25.2.3.1. 内存限制 25.2.3.2. MinSize 25.3. 内存对象 25.3.1. 可移动的 25.3.2. 锁定的 25.3.3. 内存容器 '值' 属性. 25.3.4. 内存容器接口 25.3.4.1. getRef() 方法 25.3.4.2. touch() 方法 25.3.4.3. lock() 方法 25.3.4.4. unlock() 方法 25.3.4.5. isLocked() 方法 26. Zend_Mime 26.1. Zend_Mime 26.1.1. 简介 26.1.2. 静态方法和常量 26.1.3. 实例化Zend_Mime 26.2. Zend_Mime_Message 26.2.1. 简介 26.2.2. 实例化 26.2.3. 增加MIME消息段 26.2.4. 分界线处理 26.2.5. 解析字符串,创建Zend_Mime_Message对象(实验性的) 26.3. Zend_Mime_Part 26.3.1. 简介 26.3.2. 实例化 26.3.3. 解析(rendering)消息段为字符串的方法 27. Zend_Pdf 27.1. 简介 27.2. 生成和加载 PDF 文档 27.3. 保存修改到 PDF 文档 27.4. 文档页面 27.4.1. 页面生成 27.4.2. 页面克隆 27.5. Drawing. 27.5.1. Geometry. 27.5.2. Colors. 27.5.3. Shape Drawing. 27.5.4. Text Drawing. 27.5.5. Using fonts. 27.5.6. Starting in 1.5, Extracting fonts. 27.5.7. Image Drawing. 27.5.8. Line drawing style. 27.5.9. Fill style. 27.5.10. Rotations. 27.5.11. Save/restore graphics state. 27.5.12. Clipping draw area. 27.5.13. Styles. 27.6. Zend_Pdf module usage example. 28. Zend_Registry 28.1. 使用对象注册表(Registry) 28.1.1. 设置Registry中的值 28.1.2. 获取Registry中的值 28.1.3. 创建一个Registry对象 28.1.4. 像访问数组一样访问Registry对象 28.1.5. 对象方式访问Registry 28.1.6. 查询一个索引是否存在 28.1.7. 扩展Registry对象 28.1.8. 删除静态注册表 29. Zend_Rest 29.1. Introduction 29.2. Zend_Rest_Client 29.2.1. Introduction 29.2.2. Responses 29.2.3. Request Arguments 29.3. Zend_Rest_Server 29.3.1. Introduction 29.3.2. REST Server Usage 29.3.3. Calling a Zend_Rest_Server Service 29.3.4. Sending A Custom Status 29.3.5. Returning Custom XML Responses 30. Zend_Search_Lucene 30.1. 概述 30.1.1. 简介 30.1.2. 文档和字段对象 30.1.3. 理解字段类型 30.2. 建立索引 30.2.1. 创建新索引 30.2.2. 更新索引 30.3. 搜索索引 30.3.1. 建立查询 30.3.2. 搜索结果 30.3.3. 结果评分 30.4. Query Language 30.4.1. Terms 30.4.2. Fields 30.4.3. Starting in 1.5, Wildcards 30.4.4. Term Modifiers 30.4.5. Starting in 1.5, Range Searches 30.4.6. Starting in 1.5, Fuzzy Searches 30.4.7. Proximity Searches 30.4.8. Boosting a Term 30.4.9. Boolean Operators 30.4.9.1. AND 30.4.9.2. OR 30.4.9.3. NOT 30.4.9.4. &&, ||, and ! operators 30.4.9.5. + 30.4.9.6. - 30.4.9.7. No Operator 30.4.10. Grouping 30.4.11. Field Grouping 30.4.12. Escaping Special Characters 30.5. 查询类型 30.5.1. 单项查询 30.5.2. 多项查询 30.5.3. 短语查询 30.6. 字符集 30.6.1. UTF-8 和单字节字符集支持 30.7. 扩展性 30.7.1. 文本分析 30.7.2. 评分算法 30.7.3. 存储容器 30.8. 与 Java Lucene 的互操作性 30.8.1. 文件格式 30.8.2. 索引目录 30.8.3. Java 源代码 30.9. Advanced 30.9.1. Using the index as static property 30.10. Best Practices 30.10.1. Field names 30.10.2. Indexing performance 30.10.3. Index during Shut Down 30.10.4. Retrieving documents by unique id 30.10.5. Memory Usage 30.10.6. Encoding 30.10.7. Index maintenance 31. Zend_Server 31.1. 简介 31.2. Zend_Server_Reflection 31.2.1. 简介 31.2.2. 用法 32. Zend_Service 32.1. 简介 32.2. Zend_Service_Akismet 32.2.1. Introduction 32.2.2. Verify an API key 32.2.3. Check for spam 32.2.4. Submitting known spam 32.2.5. Submitting false positives (ham) 32.2.6. Zend-specific Accessor Methods 32.3. Zend_Service_Amazon 32.3.1. Introduction 32.3.2. Country Codes 32.3.3. Looking up a Specific Amazon Item by ASIN 32.3.4. Performing Amazon Item Searches 32.3.5. Using the Alternative Query API 32.3.5.1. Introduction 32.3.6. Zend_Service_Amazon Classes 32.3.6.1. Zend_Service_Amazon_Item 32.3.6.1.1. Zend_Service_Amazon_Item::asXML() 32.3.6.1.2. Properties 32.3.6.2. Zend_Service_Amazon_Image 32.3.6.2.1. Properties 32.3.6.3. Zend_Service_Amazon_ResultSet 32.3.6.3.1. Zend_Service_Amazon_ResultSet::totalResults() 32.3.6.4. Zend_Service_Amazon_OfferSet 32.3.6.4.1. Properties 32.3.6.5. Zend_Service_Amazon_Offer 32.3.6.5.1. Zend_Service_Amazon_Offer Properties 32.3.6.6. Zend_Service_Amazon_SimilarProduct 32.3.6.6.1. Properties 32.3.6.7. Zend_Service_Amazon_Accessories 32.3.6.7.1. Properties 32.3.6.8. Zend_Service_Amazon_CustomerReview 32.3.6.8.1. Properties 32.3.6.9. Zend_Service_Amazon_EditorialReview 32.3.6.9.1. Properties 32.3.6.10. Zend_Service_Amazon_Listmania 32.3.6.10.1. Properties 32.4. Zend_Service_Audioscrobbler 32.4.1. Introduction to Searching Audioscrobbler 32.4.2. Users 32.4.3. Artists 32.4.4. Tracks 32.4.5. Tags 32.4.6. Groups 32.4.7. Forums 32.5. Zend_Service_Delicious 32.5.1. Introduction 32.5.2. Retrieving posts 32.5.3. Zend_Service_Delicious_PostList 32.5.4. Editing posts 32.5.5. Deleting posts 32.5.6. Adding new posts 32.5.7. Tags 32.5.8. Bundles 32.5.9. Public data 32.5.9.1. Public posts 32.5.10. HTTP client 32.6. Zend_Service_Flickr 32.6.1. 对Flickr搜索的介绍 32.6.2. 查找 Flickr 用户 32.6.3. 获得 Flickr 图像详细资料 32.6.4. Zend_Service_Flickr 类 32.6.4.1. Zend_Service_Flickr_ResultSet 32.6.4.1.1. 属性 32.6.4.1.2. Zend_Service_Flickr_ResultSet::totalResults() 32.6.4.2. Zend_Service_Flickr_Result 32.6.4.2.1. 属性 32.6.4.3. Zend_Service_Flickr_Image 32.6.4.3.1. 属性 32.7. Zend_Service_Simpy 32.7.1. Introduction 32.7.2. Links 32.7.3. Tags 32.7.4. Notes 32.7.5. Watchlists 32.8. Zend_Service_StrikeIron 32.8.1. Overview 32.8.2. Registering with StrikeIron 32.8.3. Getting Started 32.8.4. Making Your First Query 32.8.5. Examining Results 32.8.6. Handling Errors 32.8.7. Checking Your Subscription 32.9. Zend_Service_StrikeIron: Bundled Services 32.9.1. ZIP Code Information 32.9.2. U.S. Address Verification 32.9.3. Sales & Use Tax Basic 32.10. Zend_Service_StrikeIron: Advanced Uses 32.10.1. Using Services by WSDL 32.10.2. Viewing SOAP Transactions 32.11. Zend_Service_Yahoo 32.11.1. 简介 32.11.2. 用Yahoo!来搜索网页 32.11.3. 用Yahoo!来查找图片 32.11.4. Finding Local Businesses and Services with Yahoo! 32.11.5. 搜索Yahoo! 新闻 32.11.6. Zend_Service_Yahoo 类 32.11.6.1. Zend_Service_Yahoo_ResultSet 32.11.6.1.1. Zend_Service_Yahoo_ResultSet::totalResults() 32.11.6.1.2. Properties 32.11.6.2. Zend_Service_Yahoo_WebResultSet 32.11.6.3. Zend_Service_Yahoo_ImageResultSet 32.11.6.4. Zend_Service_Yahoo_LocalResultSet 32.11.6.5. Zend_Service_Yahoo_NewsResultSet 32.11.6.6. Zend_Service_Yahoo_Result 32.11.6.6.1. Properties 32.11.6.7. Zend_Service_Yahoo_WebResult 32.11.6.7.1. 属性 32.11.6.8. Zend_Service_Yahoo_ImageResult 32.11.6.8.1. 属性 32.11.6.9. Zend_Service_Yahoo_LocalResult 32.11.6.9.1. 属性 32.11.6.10. Zend_Service_Yahoo_NewsResult 32.11.6.10.1. 属性 32.11.6.11. Zend_Service_Yahoo_Image 32.11.6.11.1. Properties 33. Zend_Session 33.1. 简介 33.2. 基本用法 33.2.1. 实例教程 33.2.2. 迭代会话命名空间 33.2.3. 会话命名空间的访问器 33.3. 高级用法 33.3.1. 开启会话 33.3.2. 锁住会话命名空间 33.3.3. 命名空间过期 33.3.4. 会话封装和控制器 33.3.5. 防止每个命名空间有多重实例 33.3.6. 使用数组 33.3.7. 在对象中使用会话 33.3.8. 在单元测试中使用会话 33.4. 全局会话管理 33.4.1. 配置选项 33.4.2. 错误:Headers Already Sent 33.4.3. 会话标识符 33.4.3.1. 会话劫持和会话固定 33.4.4. rememberMe(integer $seconds) 33.4.5. forgetMe() 33.4.6. sessionExists() 33.4.7. destroy(bool $remove_cookie = true, bool $readonly = true) 33.4.8. stop() 33.4.9. writeClose($readonly = true) 33.4.10. expireSessionCookie() 33.4.11. setSaveHandler(Zend_Session_SaveHandler_Interface $interface) 33.4.12. namespaceIsset($namespace) 33.4.13. namespaceUnset($namespace) 33.4.14. namespaceGet($namespace) 33.4.15. getIterator() 34. Zend_Translate 34.1. 简介 34.1.1. 开始多语言化 34.2. Zend_Translate适配器 34.2.1. 如何判断使用哪种翻译适配器 34.2.1.1. Zend_Translate_Adapter_Array 34.2.1.2. Zend_Translate_Adapter_Csv 34.2.1.3. Zend_Translate_Adapter_Gettext 34.2.1.4. Zend_Translate_Adapter_Tbx 34.2.1.5. Zend_Translate_Adapter_Tmx 34.2.1.6. Zend_Translate_Adapter_Qt 34.2.1.7. Zend_Translate_Adapter_Xliff 34.2.1.8. Zend_Translate_Adapter_XmlTm 34.2.2. 集成编写自己的适配器 34.2.3. 加速所有的适配器 34.3. Using Translation Adapters 34.3.1. Translation Source Structures 34.3.2. Creating array source files 34.3.3. Creating Gettext Source Files 34.3.4. Creating TMX Source Files 34.3.5. Creating CSV Source Files 34.3.6. Options for adapters 34.3.7. Handling languages 34.3.7.1. Automatically handling of languages 34.3.8. Automatic source detection 34.3.8.1. Language through naming directories 34.3.8.2. Language through filenames 34.3.8.2.1. Complete Filename 34.3.8.2.2. Extension of the file 34.3.8.2.3. Filename tokens 34.3.9. Checking for translations 34.3.10. Access to the source data 35. Zend_Uri 35.1. Zend_Uri 35.1.1. 概述 35.1.2. 新建一个URI 35.1.3. 操作现有的URI 35.1.4. URI 验证 35.1.5. 公共实例方法 35.1.5.1. 取得URI的Schema 35.1.5.2. 取得整个URI 35.1.5.3. 验证URI 36. Zend_Validate 36.1. 简介 36.1.1. 什么是校验器(validator)? 36.1.2. 校验器的基本用法 36.1.3. 定制消息 36.1.4. 使用静态 is() 方法 36.2. 标准校验类 36.2.1. Alnum 36.2.2. Alpha 36.2.3. Barcode 36.2.4. Between 36.2.5. Ccnum 36.2.6. 日期 36.2.7. 数字 36.2.8. Email 地址 36.2.9. 浮点数 36.2.10. GreaterThan 36.2.11. 十六进制数 36.2.12. 主机名 36.2.13. InArray 36.2.14. 整数 36.2.15. Ip 36.2.16. LessThan 36.2.17. NotEmpty 36.2.18. Regex 36.2.19. StringLength 36.3. 校验器链 36.4. 编写校验器 37. Zend_Version 37.1. 读取Zend Framework的当前版本 38. Zend_View 38.1. 简介 38.1.1. 控制器脚本 38.1.2. 视图脚本 38.1.3. 选项 38.1.4. 实用访问器 38.2. 控制器脚本 38.2.1. 变量赋值 38.2.2. 调用视图脚本并打印输出 38.2.3. 视图脚本的路径 38.3. 视图脚本 38.3.1. 转义输出(Escaping Output) 38.3.2. 使用模板系统 38.3.2.1. 使用View脚本的模板系统 38.3.2.2. 通过Zend_View_Interface接口使用模板系统 38.4. 视图助手(View Helper) 38.4.1. 基本的助手 38.4.1.1. 动作视图助手 38.4.1.2. 区域助手(Partial Helper) 38.4.1.3. 占位符助手(Placeholder Helper) 38.4.1.3.1. 具体占位符实现 38.4.1.4. 文档类型助手(Doctype Helper) 38.4.1.5. HeadLink 助手 38.4.1.6. HeadMeta 助手 38.4.1.7. HeadScript 助手 38.4.1.8. HeadStyle 助手 38.4.1.9. HeadTitle 助手 38.4.1.10. InlineScript 助手 38.4.1.11. JSON 助手 38.4.1.12. 翻译助手 38.4.2. 助手的路径 38.4.3. 编写自定义的助手类 39. Zend_XmlRpc 39.1. 介绍 39.2. Zend_XmlRpc_Client 39.2.1. 介绍 39.2.2. 带参数 39.2.2.1. 以PHP本地变量的形式传递参数 39.2.2.2. 以Zend_XmlRpc_Value 对象的形式传递参数 39.2.2.3. 将一个XML字符串解析为XML-RPC参数 39.2.3. 参数类型提示 39.2.4. 获取响应 39.3. Zend_XmlRpc_Server 39.3.1. Introduction 39.3.2. Basic Usage 39.3.3. Server Structure 39.3.4. Conventions 39.3.5. Utilizing Namespaces 39.3.6. Custom Request Objects 39.3.7. Custom Responses 39.3.8. Handling Exceptions via Faults 39.3.9. Caching Server Definitions Between Requests 39.3.10. Usage Examples 39.3.10.1. Basic Usage 39.3.10.2. Attaching a class 39.3.10.3. Attaching several classes using namespaces 39.3.10.4. Specifying exceptions to use as valid fault responses 39.3.10.5. Utilizing a custom request object 39.3.10.6. Utilizing a custom response object 39.3.10.7. Cache server definitions between requests A. 系统需求 A.1. PHP 版本需求 A.2. PHP 扩展 A.3. Zend Framework 组件 B. Zend Framework PHP 编码标准 B.1. 绪论 B.1.1. 适用范围 B.1.2. 目标 B.2. PHP File 文件格式 B.2.1. 常规 B.2.2. 缩进 B.2.3. 行的最大长度 B.2.4. 行结束标志 B.3. 命名约定 B.3.1. 类 B.3.2. 接口 B.3.3. 文件名 B.3.4. 函数和方法 B.3.5. 变量 B.3.6. 常量 B.4. 编码风格 B.4.1. PHP 代码划分(Demarcation) B.4.2. 字符串 B.4.2.1. 字符串文字 B.4.2.2. 包含单引号(')的字符串文字 B.4.2.3. 变量替换 B.4.2.4. 字符串连接 B.4.3. 数组 B.4.3.1. 数字索引数组 Numerically Indexed Arrays B.4.3.2. 关联数组 B.4.4. 类 B.4.4.1. 类的声明 B.4.4.2. 类成员变量 B.4.5. 函数和方法 B.4.5.1. 函数和方方声明 B.4.5.2. 函数和方法的用法 B.4.6. 控制语句 B.4.6.1. If / Else / Elseif B.4.6.2. Switch B.4.7. 注释文档 B.4.7.1. 格式 B.4.7.2. 文件 B.4.7.3. 类 B.4.7.4. 函数 C. 版权信息 索引 表格清单 2.1. 一个CMS范例的访问控制 3.1. 配置选项 4.1. 核心前端选项 4.2. 函数前端选项 4.3. Class frontend options 4.4. File frontend options 4.5. Page frontend options 4.6. 文件后端选项 4.7. Sqlite 后端选项 4.8. Memcached 后端选项 5.1. Zend_Config_Ini 构造器参数 8.1. 选择货币描述的常量 8.2. 选择货币位置的常量 9.1. Date Parts 9.2. Basic Operations 9.3. Date Comparison Methods 9.4. Date Output Methods 9.5. Date Output Methods 9.6. Miscellaneous Methods 9.7. Operations involving Zend_Date::HOUR 9.8. Day Constants 9.9. Week Constants 9.10. Month Constants 9.11. Year Constants 9.12. Time Constants 9.13. Timezone Constants 9.14. Date Format Constants (formats include timezone) 9.15. Date and Time Formats (format varies by locale) 9.16. Constants for ISO 8601 date output 9.17. Constants for PHP date output 9.18. Types of supported horizons for sunset and sunrise 17.1. Zend_Http_Client_Adapter_Socket configuration parameters 17.2. Zend_Http_Client configuration parameters 21.1. Details for getTranslationList($type = null, $locale = null, $value = null) 21.2. Details for getTranslation($value = null, $type = null, $locale = null) 21.3. Differences between ZF 1.0 and ZF 1.5 21.4. Format tokens for self generated number formats 21.5. List of supported numeral systems 21.6. Key values for getDate() with option 'fix_date' 21.7. Return values 21.8. Format definition 21.9. Example formats 21.10. List of all supported languages 21.11. List of all supported regions 23.1. Mail Read Feature Overview 23.2. Mail Folder Names 24.1. List of measurement types 30.1. Zend_Search_Lucene_Field 类型 32.1. Zend_Service_Amazon_Item Properties 32.2. Zend_Service_Amazon_Image Properties 32.3. Zend_Service_Amazon_OfferSet Properties 32.4. Properties 32.5. Zend_Service_Amazon_SimilarProduct Properties 32.6. Zend_Service_Amazon_Accessories Properties 32.7. Zend_Service_Amazon_CustomerReview Properties 32.8. Zend_Service_Amazon_EditorialReview Properties 32.9. Zend_Service_Amazon_Listmania Properties 32.10. Methods for retrieving public data 32.11. Methods of the Zend_Service_Delicious_SimplePost class 32.12. Zend_Service_Flickr_ResultSet 属性 32.13. Zend_Service_Flickr_Result 属性 32.14. Zend_Service_Flickr_Image 属性 32.15. Zend_Service_Yahoo_ResultSet 32.16. Zend_Service_Yahoo_LocalResultSet 属性 32.17. Zend_Service_Yahoo_Result Properties 32.18. Zend_Service_Yahoo_WebResult 属性 32.19. Zend_Service_Yahoo_ImageResult 属性 32.20. Zend_Service_Yahoo_LocalResult 属性 32.21. Zend_Service_Yahoo_NewsResult 属性 32.22. Zend_Service_Yahoo_Image Properties 34.1. Zend_Translate适配器 34.2. Options for Translation Adapters 39.1. PHP本地变量类型转化为XML-RPC类型 39.2. Zend_XmlRpc_Value 对象声明的XML-RPC类型 A.1. Zend Framework 使用的 PHP 扩展 A.2. Zend Framework 组件以及其使用到的 PHP 扩展 范例清单 2.1. 角色之间的多重继承 3.1. 修改 Session 名字空间 3.2. 使用定制存储类 3.3. 基本用法 4.1. 调用 Zend_Cache::factory()取得一个前端 4.2. Caching a database query result 4.3. 用Zend_Cache 输出前端缓存输出 5.1. 使用 Zend_Config 本身 5.2. Using Zend_Config with a PHP Configuration File 5.3. 使用 Zend_Config_Ini 5.4. 使用Zend_Config_Xml 6.1. 使用短语法 6.2. 使用长语法 6.3. 捕捉 Getopt 异常 6.4. 使用 getOption() 6.5. 使用 __get() 和 __isset() 魔术方法 6.6. 使用 getRemainingArgs() 6.7. 使用 addRules() 6.8. 使用 setHelp() 6.9. 使用 setAliases() 6.10. 使用 addArguments() 和 setArguments() 6.11. 使用 setOption() 6.12. 使用 setOptions() 7.1. 如何处理不存在的动作 7.2. 用动作、控制器和模块名来添加一个任务 7.3. 使用请求对象添加一个任务 7.4. AutoCompletion with Dojo Using Zend MVC 7.5. 允许动作响应 Ajax 的请求 7.6. 设定选项 7.7. 使用默认设定 7.8. 使用goto()的_forward()API 7.9. 通过gotoRoute()使用路由组装(route assembly) 7.10. 基本用法 7.11. 禁用自动解析 7.12. 选择另外的视图脚本 7.13. 修改注册的视图Modifying the registered view 7.14. 修改路径规则 7.15. 一个动作中解析多个视图脚本 7.16. Standard usage 7.17. Setting a different error handler 7.18. Using accessors 8.1. 从实际地方创建 Zend_Currency 的实例 8.2. 创建 Zend_Currency 实例的其它例子 8.3. 为货币创建输出 8.4. 修改货币的显示格式 8.5. 从货币中获取信息 8.6. 设置新地方 8.7. 缓存货币 9.1. Setting a default timezone 9.2. Creating the current date 9.3. get() - output a date 9.4. set() - set a date 9.5. add() - adding dates 9.6. compare() - compare dates 9.7. equals() - identify a date or date part 9.8. User-specified input date format 9.9. Operating on Parts of Dates 9.10. Date creation by instance 9.11. Static date creation 9.12. Quick creation of dates from database date values 9.13. Convenient creation of dates from database date values 9.14. Date creation by array 9.15. Example usage for self-defined ISO formats 9.16. Example usage for self-defined formats with PHP specifier 9.17. Checking dates 9.18. Getting all available cities 9.19. Getting the location for a city 9.20. Calculating sun informations 9.21. Working with timezones 9.22. Multiple timezones 10.1. Creating a SQL statement object with query() 10.2. Using a SQL statement constructor 10.3. Executing a statement with positional parameters 10.4. Executing a statement with named parameters 10.5. Using fetch() in a loop 10.6. Using fetchAll() 10.7. Setting the fetch mode 10.8. Using fetchColumn() 10.9. Using fetchObject() 10.10. Fetching a Dependent Rowset 10.11. Fetching a Dependent Rowset By a Specific Rule 10.12. Fetching a Dependent Rowset using a Zend_Db_Table_Select 10.13. Fetching Dependent Rowsets using the Magic Method 10.14. Fetching the Parent Row 10.15. Fetching a Parent Row By a Specific Rule 10.16. Fetching the Parent Row using the Magic Method 10.17. Fetching a Rowset with the Many-to-many Method 10.18. Fetching a Rowset with the Many-to-many Method By a Specific Rule 10.19. Fetching Rowsets using the Magic Many-to-many Method 10.20. Example of a Cascading Delete 10.21. Example Declaration of Cascading Operations 11.1. dump()方法使用示例 12.1. 捕捉一个异常的例子 13.1. 用Zend_Feed来处理RSS Feed数据 13.2. Atom Feed的基本用法 13.3. 读取Atom Feed的单个条目 13.4. 用条目对象直接访问Atom Feed的单个条目 13.5. 修改一个已存在的条目 13.6. 用自定义的命名空间创建一个Atom条目元素 13.7. 用自定义的命名空间继承Atom条目类 14.1. Transforming CamelCaseText to another format 14.2. Setting Multiple Rules at Once 14.3. Using Zend_Config with Zend_Filter_Inflector 15.1. 定制标签 15.2. 为所有元素设置前缀路径 15.3. 为所有元素设置装饰器(Decorators) 15.4. 为所有元素设置过滤器 15.5. 为所有的显示组设置装饰器前缀路径 15.6. 为所有显示组设置装饰器 15.7. 注册表单示例 17.1. 执行一个基本的 GET 请求 17.2. 创建一个基本的Zend_Http_Client 17.3. 发送多条header信息 17.4. 发送请求到多个域名 17.5. 用Zend_Http_Client发送POST 数据 17.6. Forcing RFC 2616 Strict Redirections on 301 and 302 Responses 17.7. Setting Cookies Using setCookie() 17.8. Enabling Cookie Stickiness 17.9. Setting A Single Custom Request Header 17.10. Setting Multiple Custom Request Headers 17.11. Using setFileUpload to Upload Files 17.12. Sending Raw POST Data 17.13. Setting HTTP Authentication User and Password 17.14. Performing consecutive requests with one client 17.15. Changing the HTTPS transport layer 17.16. Using Zend_Http_Client behind a proxy server 17.17. Testing Against a Single HTTP Response Stub 17.18. Testing Against Multiple HTTP Response Stubs 17.19. Creating your own connection adapter 17.20. Instantiating a Zend_Http_Cookie object 17.21. Stringifying a Zend_Http_Cookie object 17.22. Using getter methods with Zend_Http_Cookie 17.23. Matching cookies 17.24. 处理HTTP应答 19.1. 传递选项给构造器或startMvc() 19.2. 使用setOption() 和 setConfig() 19.3. 使用访问器 19.4. 使用Zend_Layout访问器来修改变形器(inflector) 19.5. Zend_Layout 变形器的直接修改 19.6. 定制变形器(inflectors) 20.1. loadFile() 方法范例 20.2. Example of loadClass() method 20.3. isReadable()示例: 20.4. 注册 autoloader callback 方法范例 20.5. 从继承类注册 autoload callback 方法范例 21.1. Choosing a specific locale 21.2. Automatically selecting a locale 21.3. Using automatic locales 21.4. Handling locale exceptions 21.5. Setting a default locale 21.6. Dates default to correct locale of web users 21.7. Overriding default locale selection 21.8. Performance optimization when using a default locale 21.9. Dates default to correct locale of web users 21.10. Using STANDARD definitions for setOptions() 21.11. clone 21.12. Check for equal locales 21.13. Get default locales 21.14. setLocale 21.15. getLanguage and getRegion 21.16. getTranslationList 21.17. getTranslationList 21.18. Converting country name in one language to another 21.19. All available translations 21.20. All Languages written in their native language 21.21. getQuestion() 21.22. getLocaleList() 21.23. Number normalization 21.24. Number normalization with precision 21.25. Number localization 21.26. Number localization with precision 21.27. Using a self defined number format 21.28. Number testing 21.29. Floating point value normalization 21.30. Floating point value localization 21.31. Floating point value testing 21.32. Integer value normalization 21.33. Integer value localization 21.34. Integer value testing 21.35. Converting numerals from Eastern Arabic scripts to European/Latin scripts 21.36. Converting numerals from Latin script to Eastern Arabic script 21.37. Getting 4 letter CLDR script code using a native-language name of the script 21.38. Normalizing a date 21.39. Normalizing a date by locale 21.40. Normalizing a date with time 21.41. Normalizing a userdefined date 21.42. Automatic correction of input dates 21.43. Date testing 21.44. Normalize an unknown time 21.45. Testing a time 23.1. 使用Zend_Mail发送简单邮件 23.2. 传递另外的参数给 Zend_Mail_Transport_Sendmail 传送器 23.3. 通过 SMTP 发送邮件 23.4. 通过一个SMTP连接发送多个邮件 23.5. 手工控制传送器连接 23.6. 使用不同的Transport对象 23.7. 发送HTML邮件 23.8. 带附件的邮件 23.9. 更改MIME分界线 23.10. 外加邮件头信息 23.11. 在 Zend_Mail_Transport_Smtp 中使用身份验证 23.12. Enabling a secure connection within Zend_Mail_Transport_Smtp 24.1. Converting measurements 24.2. The meter measurement 24.3. Creation using integer and floating values 24.4. Creation using strings 24.5. Arbitrary text input containing measurements 24.6. Localized string 24.7. Automatic output 24.8. Output a value 24.9. Outputting units 24.10. Convert 24.11. Adding units 24.12. Subtract 24.13. Different measurements 24.14. Identical measurements 24.15. Difference 24.16. Changing a value 24.17. Changing the type 25.1. 使用 Zend_Memory 组件 27.1. 生成新的或加载 PDF 文档 27.2. 请求 PDF 文档的指定版本 27.3. Save PDF document. 27.4. PDF 文档页面管理 27.5. Cloning existing page. 27.6. Draw a string on the page. 27.7. Draw a UTF-8-encoded string on the page. 27.8. Create a standard font. 27.9. Create a TrueType font. 27.10. Create a TrueType font, but do not embed it in the PDF document. 27.11. Do not throw an exception for fonts that cannot be embeded. 27.12. Do not compress an embedded font. 27.13. Combining font embedding options. 27.14. Extracting fonts from a loaded document. 27.15. Extracting font from a loaded document by specifying font name. 27.16. Image drawing. 27.17. Zend_Pdf module usage demo. 28.1. set() 使用示例: 28.2. get() 方法示例: 28.3. 迭代一个registry对象: 28.4. 创建一个registry对象 28.5. Example of initializing the static registry 28.6. array 方式访问示例: 28.7. 对象形式的访问: 28.8. isRegistered() 示例: 28.9. isset() 示例: 28.10. 指定静态注册表的类名: 28.11. _unsetInstance() 示例: 29.1. A basic REST request 29.2. Response Status 29.3. Using Technorati's Rest Service 29.4. Example Technorati Response 29.5. Setting Request Arguments 29.6. Basic Zend_Rest_Server Usage - Classes 29.7. Basic Zend_Rest_Server Usage - Functions 29.8. Returning Custom Status 29.9. Return Custom XML 30.1. 自定义文本分析程序 32.1. isSpam() Usage 32.2. submitSpam() Usage 32.3. submitHam() Usage 32.4. Search Amazon Using the Traditional API 32.5. Search Amazon Using the Query API 32.6. Choosing an Amazon Web Service Country 32.7. Looking up a Specific Amazon Item by ASIN 32.8. Performing Amazon Item Searches 32.9. Using the ResponseGroup Option 32.10. Search Amazon Using the Alternative Query API 32.11. Retrieving User Profile Information 32.12. Retrieving a User's Weekly Artist Chart 32.13. Retrieving Related Artists 32.14. Get all posts 32.15. Accessing post lists 32.16. Filtering a Post List with Specific Tags 32.17. Filtering a Post List by URL 32.18. Post editing 32.19. Method call chaining 32.20. Deleting posts 32.21. Adding a post 32.22. Tags 32.23. Bundles 32.24. Retrieving public data 32.25. Changing the HTTP client of Zend_Rest_Client 32.26. Configuring your HTTP client to keep connections alive 32.27. 简单的 Flickr 照片搜索 32.28. 用email地址来查找Flickr用户 32.29. 获得 Flickr 图像详细资料 32.30. Querying Links 32.31. Modifying Links 32.32. Working With Tags 32.33. Working With Notes 32.34. Retrieving Watchlists 32.35. 用Yahoo!来搜索网页 32.36. 用Yahoo!来查找图片 32.37. 用Yahoo!查找本地商务和服务信息 32.38. 搜索Yahoo! 新闻 33.1. 页面浏览计数 33.2. 新方法: 使用命名空间避免冲突 33.3. 老方法: PHP会话访问 33.4. 会话迭代 33.5. 访问会话数据 33.6. 开启全局会话 33.7. 锁住会话命名空间 33.8. 过期的例子 33.9. 带有生命期的控制器命名空间会话 33.10. 限制命名空间访问单一实例 33.11. 修改带有会话命名空间的数组数据 33.12. 在会话存储之前构造数组 33.13. 方案:重新分配一个被修改的数组 33.14. 方案:存储包括引用的数组 33.15. PHPUnit Testing Code Dependent on Zend_Session 33.16. 使用Zend_Config配置Zend_Session 33.17. 会话固定 34.1. Example of single-language PHP code 34.2. Example of multi-lingual PHP code 34.3. Example TMX file 34.4. Example CSV file 34.5. Example CSV file two 34.6. Using translation options 34.7. Handling languages with adapters 34.8. How automatically language detection works 34.9. Scanning a directory structure for sources 34.10. Directory scanning for languages 34.11. Filename scanning for languages 34.12. Checking if a text is translatable 34.13. Handling languages with adapters 35.1. 使用Zend_Uri::factory()创建一个新的URI 35.2. 使用Zend_Uri::factory()操作一个现有的URI 35.3. 使用Zend_Uri::check()进行URI 验证 35.4. 从Zend_Uri_* 对象取得模式 35.5. 从一个Zend_Uri_* 对象取得整个URI 35.6. 验证一个 Zend_Uri_* 对象 36.1. 创建简单校验类 36.2. 编写有独立条件的校验类 36.3. 带有独立条件、多重失败原因的校验 37.1. compareVersion()方法示例: 38.1. 动作视图助手的基本用法 38.2. Partials 的基本用法 38.3. 使用 PartialLoop 来解析可迭代的(Iterable)的模型 38.4. 在其它模块中解析 Partials 38.5. 占位符的基本用法 38.6. 用占位符来聚合内容 38.7. 使用占位符(Placeholders)来抓取内容 38.8. Doctype 助手的基本用法 38.9. 获取 Doctype 38.10. HeadLink 助手的基本用法 38.11. HeadMeta 助手基本用法 38.12. HeadScript 助手基本用法 38.13. Capturing Scripts Using the HeadScript Helper 38.14. HeadStyle 助手的基本用法 38.15. 用 HeadStyle 助手抓取样式声明 38.16. HeadTitle 助手基本用法 38.17. 已注册的实例 38.18. 在视图里 38.19. 直接用法 38.20. 单个参数 38.21. 参数列表 38.22. 参数数组 38.23. 动态修改地点 (locale) 38.24. 静态修改地点 (locale) 38.25. 获得当前设置的地点 39.1. 一个基本的XML-RPC请求 39.2. 用类型提示来调用一个XML-RPC服务
sdk LCS/Telegraphics Wintab* Interface Specification 1.1: 16- and 32-bit API Reference By Rick Poyner Revised February 11, 2012 This specification was developed in response to a perceived need for a standardized programming inter-face to digitizing tablets, three dimensional position sensors, and other pointing devices by a group of lead-ing digitizer manufacturers and applications developers. The availability of drivers that support the features of the specification will simplify the process of developing Windows appli¬cation programs that in-corporate absolute coordinate input, and enhance the acceptance of ad¬vanced pointing de¬vices among users. This specification is intended to be an open standard, and as such the text and information contained herein may be freely used, copied, or distributed without compensation or licensing restrictions. This document is copyright 1991-2012 by LCS/Telegraphics.* Address questions and comments to: LCS/Telegraphics 150 Rogers St. Cambridge, MA 02142 (617)225-7970 (617)225-7969 FAX Compuserve: 76506,1676 Internet: wintab@pointing.com Note: sections marked with the “(1.1)” are new sections added for specification version 1.1. Sec-tions bearing the “(1.1 modified)” notation contain updated information for specification version 1.1. Version 1.1 Update Notation Conventions 1 1. Background Information 1 1.1. Features of Digitizers 1 1.2. The Windows Environment 1 2. Design Goals 2 2.1. User Control 2 2.2. Ease of Programming 2 2.3. Tablet Sharing 3 2.4. Tablet Feature Support 3 3. Design Concepts 3 3.1. Device Conventions 3 3.2. Device Information 4 3.3. Tablet Contexts 4 3.4. Event Packets 4 3.5. Tablet Managers 5 3.6. Extensions 5 3.7. Persistent Binding of Interface Features (1.1) 6 4. Interface Implementations 6 4.1. File and Module Conventions 6 4.2. Feature Support Options 6 5. Function Reference 7 5.1. Basic Functions 7 5.1.1. WTInfo 8 5.1.2. WTOpen 9 5.1.3. WTClose 10 5.1.4. WTPacketsGet 10 5.1.5. WTPacket 11 5.2. Visibility Functions 11 5.2.1. WTEnable 11 5.2.2. WTOverlap 12 5.3. Context Editing Functions 12 5.3.1. WTConfig 12 5.3.2. WTGet 13 5.3.3. WTSet (1.1 modified) 13 5.3.4. WTExtGet 14 5.3.5. WTExtSet 14 5.3.6. WTSave 15 5.3.7. WTRestore 15 5.4. Advanced Packet and Queue Functions 16 5.4.1. WTPacketsPeek 16 5.4.2. WTDataGet 17 5.4.3. WTDataPeek 17 5.4.4. WTQueuePackets (16-bit only) 18 5.4.5. WTQueuePacketsEx 18 5.4.6. WTQueueSizeGet 19 5.4.7. WTQueueSizeSet 19 5.5. Manager Handle Functions 19 5.5.1. WTMgrOpen 19 5.5.2. WTMgrClose 20 5.6. Manager Context Functions 20 5.6.1. WTMgrContextEnum 20 5.6.2. WTMgrContextOwner 21 5.6.3. WTMgrDefContext 22 5.6.4. WTMgrDefContextEx (1.1) 22 5.7. Manager Configuration Functions 23 5.7.1. WTMgrDeviceConfig 23 5.7.2. WTMgrConfigReplace (16-bit only) 24 5.7.3. WTMgrConfigReplaceEx 24 5.8. Manager Packet Hook Functions 25 5.8.1. WTMgrPacketHook (16-bit only) 26 5.8.2. WTMgrPacketHookEx 26 5.8.3. WTMgrPacketUnhook 29 5.8.4. WTMgrPacketHookDefProc (16-bit only) 30 5.8.5. WTMgrPacketHookNext 30 5.9. Manager Preference Data Functions 31 5.9.1. WTMgrExt 31 5.9.2. WTMgrCsrEnable 32 5.9.3. WTMgrCsrButtonMap 32 5.9.4. WTMgrCsrPressureBtnMarks (16-bit only) 33 5.9.5. WTMgrCsrPressureBtnMarksEx 33 5.9.6. WTMgrCsrPressureResponse 34 5.9.7. WTMgrCsrExt 35 6. Message Reference 36 6.1. Event Messages 36 6.1.1. WT_PACKET 36 6.1.2. WT_CSRCHANGE (1.1) 37 6.2. Context Messages 37 6.2.1. WT_CTXOPEN 37 6.2.2. WT_CTXCLOSE 37 6.2.3. WT_CTXUPDATE 38 6.2.4. WT_CTXOVERLAP 38 6.2.5. WT_PROXIMITY 38 6.3. Information Change Messages 39 6.3.1. WT_INFOCHANGE 39 7. Data Reference 39 7.1. Common Data Types (1.1 modified) 39 7.2. Information Data Structures 41 7.2.1. AXIS 41 7.2.2. Information Categories and Indices (1.1 modified) 42 7.3. Context Data Structures 50 7.3.1. LOGCONTEXT (1.1 modified) 50 7.4. Event Data Structures 55 7.4.1. PACKET (1.1 modified) 55 7.4.2. ORIENTATION 57 7.4.3. ROTATION (1.1) 58 Appendix A. Using PKTDEF.H 59 Appendix B. Extension Definitions 60 B.1. Extensions Programming 60 B.2. Out of Bounds Tracking 61 OBT Programming 61 Information Category 61 Turning OBT On and Off 61 B.3. Function Keys 62 FKEYS Programming 62 Information Category 62 B.4. Tilt 62 TILT Programming 63 Information Category 63 B.5. Cursor Mask 63 CSRMASK Programming 64 Information Category 64 B.6. Extended Button Masks 64 XBTNMASK Programming 64 Information Category 65 VERSION 1.1 UPDATE NOTATION CONVENTIONS Sections marked with the “(1.1)” are new sections added for specification version 1.1. Sections bearing the “(1.1 modified)” notation contain updated information for specification version 1.1. The “(1.1)” notation also marks the definitions of new functions, messages, and data structures. The nota-tion “1.1:” marks new text or commentaries explaining new functionality added to existing features. 1 BACKGROUND INFORMATION This document describes a programming interface for using digitizing tablets and other advanced pointing de¬vices with Microsoft Windows Version 3.0 and above. The design presented here is based on the input of numerous professionals from the pointing device manufacturing and Windows soft¬ware development industries. In this document, the words "tablet" and "digitizer" are used interchange¬ably to mean all absolute point¬ing or digitizing devices that can be made to work with this interface. The definition is not lim¬ited to de¬vices that use a physical tablet. In fact, this specification can support de¬vices that combine rela¬tive and absolute pointing as well as purely relative devices. The following sections describe features of tablets and of the Windows environment that helped mo¬tivate the design. 1.1 Features of Digitizers Digitizing tablets present several problems to device interface authors. • Many tablets have a very high report rate. • Many tablets have many configurable features and types of input information. • Tablets often control the system cursor, provide additional digitizing input, and provide template or macro functions. 1.2 The Windows Environment Programming for tablets in the Windows environment presents additional problems. • Multitasking means multiple applications may have to share the tablet. • The tablet must also be able to control the system cursor and/or the pen (in Pen Windows). • The tablet must work with legacy applications, and with applications written to take advan¬tage of tablet services. • The tablet driver must add minimal speed and memory overhead, so as many applications as possible can run as efficiently as possible. • The user should be able to control how applications use the tablet. The user interface must be ef-ficient, consistent, and customizable. 2 DESIGN GOALS While the tablet interface design must address the technical problems stated above, it must also be useful to the programmers who will write tablet programs, and ultimately, to the tablet users. Four design goals will help clarify these needs, and provide some criteria for evaluating the interface speci¬fication. The goals are user control, ease of programming, tablet sharing, and tablet feature support. 2.1 User Control The user should be able to use and control the tablet in as natural and easy a manner as possible. The user's preferences should take precedence over application requests, where possible. Here are questions to ask when thinking about user control as a design goal: • Can the user understand how applications use the tablet? • Is the interface for controlling tablet functions natural and unobtrusive? • Is the user allowed to change things that help to customize the work environment, but pre¬vented from changing things over which applications must have control? 2.2 Ease of Programming Programming is easiest when the amount of knowledge and effort required matches the task at hand. Writing simple programs should require only a few lines of code and a minimal understanding of the en-vironment. On the other hand, more advanced features and functions should be available to those who need them. The interface should accommodate three kinds of programmers: those who wish to write sim-ple tablet programs, programmers who wish to write complex applications that take full ad¬vantage of tab-let capabilities, and programmers who wish to provide tablet device control features. In addition, the inter-face should accommodate programmers in as many different programming lan¬guages, situations, and en-vironments as possible. Questions to ask when thinking about ease of programming include: • How hard is it to learn the interface and write a simple program that uses tablet input? • Can programmers of complex applications control the features they need? • Are more powerful tablet device control features available? • Can the interface be used in different programming environments? • Is the interface logical, consistent, and robust? 2.3 Tablet Sharing In the Windows environment, multiple applications that use the tablet may be running at once. Each ap-plication will require different services. Applications must be able to get the services they need without getting in each others' way. Questions to ask when thinking about tablet sharing include: • Can tablet applications use the tablet features they need, independent of other applications? • Does the interface prevent a rogue application from "hijacking" the tablet, or causing dead¬locks? • Does the sharing architecture promote efficiency? 2.4 Tablet Feature Support The interface gives standard access to as many features as possible, while leaving room for future ex¬ten-sions and vendor-specific customizations. Applications should be able to get the tablet informa¬tion and services they want, just the way they want them. Users should be able to use the tablet to set up an effi-cient, comfortable work environment. Questions to ask when thinking about tablet feature support include: • Does the interface provide the features applications need? Are any commonly available fea¬tures not supported? • Does the interface provide what users need? Is anything missing? • Are future extensions possible and fairly easy? • Are vendor-specific extensions possible? 3 DESIGN CONCEPTS The proposed interface design depends on several fundamental concepts. Devices and cursor types de-scribe physical hardware configurations. The interface publishes read-only information through a single information interface. Applications interact with the interface by setting up tablet contexts and consuming event packets. Applications may assume interface and hardware control functions by be¬coming tablet managers. The interface provides explicit support for future extensions. 3.1 Device Conventions The interface provides access to one or more devices that produce pointing input. Devices sup¬ported by this interface have some common characteristics. The device must define an absolute or relative coordi-nate space in at least two dimensions for which it can return position data. The device must have a point-ing ap¬para¬tus or method (such as a stylus, or a finger touching a touch pad), called the cursor, that de¬fines the current position. The cursor must be able to return at least one bit of additional state (via a but¬ton, touching a digitizing surface, etc.). Devices may have multiple cursor types that have different physical configurations, or that have differ¬ent numbers of buttons, or return auxiliary information, such as pressure information. Cursor types may also describe different optional hardware configurations. The interface defines a standard orientation for reporting device native coordinates. When the user is viewing the device in its normal position, the coordinate origin will be at the lower left of the device. The coordinate system will be right-handed, that is, the positive x axis points from left to right, and the posi¬tive y axis points either upward or away from the user. The z axis, if supported, points either to¬ward the user or upward. For devices that lay flat on a table top, the x-y plane will be horizontal and the z axis will point upward. For devices that are oriented vertically (for example, a touch screen on a conventional dis¬play), the x-y plane will be vertical, and the z axis will point toward the user. 3.2 Device Information Any program can get descriptive information about the tablet via the WTInfo function. The interface specifies certain information that must be available, but allows new implementations to add new types of information. The basic information includes device identifiers, version numbers, and overall ca¬pabilities. The information items are organized by category and index numbers. The combination of a category and index specifies a single information data item, which may be a scalar value, string, structure, or array. Applica¬tions may retrieve single items or whole categories at once. Some categories are multiplexed. A single category code represents the first of a group of identically in-dexed categories, one for each of a set of similar objects. Multiplexed categories in¬clude those for devices and cur¬sor types. One constructs the category number by adding the defined cate¬gory code to a zero-based device or cursor identification number. The information is read-only for normal tablet applications. Some information items may change during the course of a Windows session; tablet applications receive messages notifying them of changes in tablet information. 3.3 Tablet Contexts Tablet contexts play a central role in the interface; they are the objects that applications use to specify their use of the tablet. Con¬texts include not only the physical area of the tablet that the application will use, but also information about the type, con¬tents, and delivery method for tablet events, as well as other information. Tablet contexts are somewhat analo¬gous to display contexts in the GDI interface model; they contain context information about a spe¬cific application's use of the tablet. An application can open more than one context, but most only need one. Applications can customize their contexts, or they can open a context using a default context specification that is always available. The WTInfo function provides access to the default context specification. Opening a context requires a window handle. The window handle becomes the context's owner and will receive any window messages associated with the context. Contexts are remotely similar to screen windows in that they can physically overlap. The tablet inter¬face uses a combination of context overlap order and context attributes to decide which context will process a given event. The topmost context in the overlap order whose input context encompasses the event, and whose event masks select the event, will process the event. (Note that the notion of overlap order is sepa-rate from the notion of the physical z dimension.) Tablet managers (described below) provide a way to modify and overlap contexts. 3.4 Event Packets Tablet contexts generate and report tablet activity via event packets. Applications can control how they receive events, which events they receive, and what information they contain. Applications may receive events either by polling, or via Windows messages. • Polling: Any application that has opened a context can call the WTPacketsGet function to get the next state of the tablet for that context. • Window Messages: Applications that request messages will receive the WT_PACKET mes¬sage (described below), which indicates that something happened in the context and provides a refer-ence to more information. Applications can control which events they receive by using event masks. For example, some appli¬ca¬tions may only need to know when a button is pressed, while others may need to receive an event every time the cursor moves. Tablet context event masks implement this type of control. Applications can control the contents of the event packets they receive. Some tablets can return data that many applications will not need, like button pressure and three dimensional position and orien¬tation in-formation. The context object provides a way of specifying which data items the appli¬cation needs. This allows the driver to improve the efficiency of packet delivery to applications that only need a few items per packet. Packets are stored in context-specific packet queues and retrieved by explicit function calls. The interface provides ways to peek at and get packets, to query the size and contents of the queue, and to re-size the queue. 3.5 Tablet Managers The interface provides functions for tablet management. An application can become a tablet manager by opening a tablet manager handle. This handle allows the manager access to spe¬cial functions. These man-agement functions allow the application to arrange, overlap, and modify tablet contexts. Man¬agers may also perform other functions, such as changing default values used by applica¬tions, chang¬ing ergo¬nomic, preference, and configuration settings, controlling tablet behavior with non-tablet aware applica¬tions, modi¬fy¬ing user dialogs, and recording and playing back tablet packets. Opening a manager handle re¬quires a window handle. The window becomes a manager window and receives window messages about interface and con¬text activity. 3.6 Extensions The interface allows implementations to define additional features called extensions. Extensions can be made available to new applications without the need to modify ex¬isting applications. Extensions are sup-ported through the information categories, through the flexible definition of packets, and through special context and manager functions. Designing an extension involves defining the meaning and behavior of the extension packet and/or prefer-ence data, filling in the information category, defining the extension's interface with the special functions, and possibly defining additional functions to support the extension. Each extension will be assigned a unique tag for identification. Not all implementations will support all extensions. A multiplexed information category contains descriptive data about extensions. Note that applica¬tions must find their extensions by iterating through the categories and matching tags. While tags are fixed across all implementations, category numbers may vary among implementations. 3.7 Persistent Binding of Interface Features (1.1) The interface provides access to many of its features using consecutive numeric indices whose value is not guaranteed from session to session. However, sufficient information is provided to create unique identifi¬ers for devices, cursors, and interface extensions. Devices should be uniquely identified by the contents of their name strings. If multiple identical devices are present, implementation providers should provide unique, persistent id strings to the extent possible. Identical devices that return unique serial numbers are ideal. If supported by the hardware, cursors also may have a physical cursor id that uniquely identifies the cursor in a persistent and stable manner. Interface extensions are uniquely identified by their tag. 4 INTERFACE IMPLEMENTATIONS Implementations of this interface usually support one specific device, a class of similar devices, or a com-mon combination of devices. The following sections discuss guidelines for implementations. 4.1 File and Module Conventions For 16-bit implementations, the interface functions, and any additional vendor- or device-specific func-tions, reside in a dynamic link library with the file name "WINTAB.DLL" and module name "WINTAB"; 32-bit implementations use the file name "WINTAB32.DLL" and module name "WINTAB32." Any other file or module con¬ventions are implementation specific. Implementations may include other library mod-ules or data files as necessary. Installation processes are likewise implementa¬tion-specific. Wintab programs written in the C language require two header files. WINTAB.H contains definitions of all of the functions, constants, and fixed data types. PKTDEF.H contains a parameterized definition of the PACKET data structure, that can be tailored to fit the application. The Wintab Programmer's Kit con¬tains these and other files necessary for Wintab programming, plus several example programs with C-lan¬guage source files. The Wintab Programmer's Kit is available from the author. 4.2 Feature Support Options Some features of the interface are optional and may be left out by some implementations. Support of defined data items other than x, y, and buttons is optional. Many devices only report x, y, and button information. Support of system-cursor contexts is optional. This option relieves implementations of replacing the sys¬tem mouse driver in Windows versions before 3.1. Support of Pen Windows contexts is optional. Not all systems will have the Pen Windows hardware and software necessary. Support of external tablet manager applications is optional, and the number of manager handles is imple-mentation-dependent. However, the manager functions should be present in all implementa¬tions, return¬ing appropriate failure codes if not fully implemented. An implementation may provide context- and hardware-management support internally only, if desired. On the other hand, providing the external man-ager interface may relieve the implementation of a considerable amount of user in¬terface code, and make improvements to the manager interface easier to implement and distribute later. Support of extension data items is optional. Most extensions will be geared to unusual hardware features. 5 FUNCTION REFERENCE All tablet function names have the prefix "WT" and have attributes equivalent to WINAPI. Applica¬tions gain access to the tablet interface functions through a dynamic-link library with standard file and module names, as defined in the previous section. Applications may link to the functions by using the Windows functions LoadLibrary, FreeLibrary, and GetProcAddress, or use an import library. Specific to 32-bit Wintab: The functions WTInfo, WTOpen, WTGet, and WTSet have both ANSI and Unicode versions, using the same ANSI/Unicode porting conventions used in the Win32 API. Five non-portable functions, WTQueuePackets, WTMgrCsrPressureBtnMarks, WTMgrConfigReplace, WTMgrPacketHook, and WTMgrPacketHookDefProc are replaced by new portable functions WTQueuePacketsEx, WTMgrCsrPressureBtnMarksEx, WTMgrConfigReplaceEx, WTMgrPack-etHookEx, WTMgrPacketUnhook, and WTMgrPacketHookNext. WTMgrConfigReplaceEx and WTMgrPacketHookEx have both ANSI and Unicode versions. Table 5.1. Ordinal Function Numbers for Dynamic Linking Ordinal numbers for dynamic linking are defined in the table below. Where two ordinal entries appear, the first entry identifies the 16-bit and 32-bit ANSI versions of the function. The second entry identifies the 32-bit Unicode version. Function Name Ordinal Function Name Ordinal WTInfo 20, 1020 WTMgrOpen 100 WTOpen 21, 1021 WTMgrClose 101 WTClose 22 WTMgrContextEnum 120 WTPacketsGet 23 WTMgrContextOwner 121 WTPacket 24 WTMgrDefContext 122 WTEnable 40 WTMgrDefContextEx (1.1) 206 WTOverlap 41 WTMgrDeviceConfig 140 WTConfig 60 WTMgrConfigReplace 141 WTGet 61, 1061 WTMgrConfigReplaceEx 202, 1202 WTSet 62, 1062 WTMgrPacketHook 160 WTExtGet 63 WTMgrPacketHookEx 203, 1203 WTExtSet 64 WTMgrPacketUnhook 204 WTSave 65 WTMgrPacketHookDefProc 161 WTRestore 66 WTMgrPacketHookNext 205 WTPacketsPeek 80 WTMgrExt 180 WTDataGet 81 WTMgrCsrEnable 181 WTDataPeek 82 WTMgrCsrButtonMap 182 WTQueuePackets 83 WTMgrCsrPressureBtnMarks 183 WTQueuePacketsEx 200 WTMgrCsrPressureBtnMarksEx 201 WTQueueSizeGet 84 WTMgrCsrPressureResponse 184 WTQueueSizeSet 85 WTMgrCsrExt 185 5.1 Basic Functions The functions in the following section will be used by most tablet-aware applications. They include getting interface and device information, opening and closing contexts, and retrieving packets by polling or via Windows messages. 5.1.1 WTInfo Syntax UINT WTInfo(wCategory, nIndex, lpOutput) This function returns global information about the interface in an application-sup-plied buffer. Different types of information are specified by different index argu-ments. Applications use this function to receive information about tablet coordi-nates, physical dimensions, capabilities, and cursor types. Parameter Type/Description wCategory UINT Identifies the category from which information is being re-quested. nIndex UINT Identifies which information is being requested from within the category. lpOutput LPVOID Points to a buffer to hold the requested information. Return Value The return value specifies the size of the returned information in bytes. If the infor-mation is not supported, the function returns zero. If a tablet is not physi¬cally pres-ent, this function always returns zero. Comments Several important categories of information are available through this function. First, the function provides identification information, including specification and software version numbers, and tablet vendor and model information. Sec¬ond, the function provides general capability information, including dimensions, resolutions, optional features, and cursor types. Third, the function provides categories that give defaults for all tablet context attributes. Finally, the func¬tion may provide any other implementation- or vendor-specific information cat¬egories necessary. The information returned by this function is subject to change during a Win¬dows session. Applications cannot change the information returned here, but tablet man-ager applications or hardware changes or errors can. Applications can respond to information changes by fielding the WT_INFOCHANGE message. The parameters of the message indicate which information has changed. If the wCategory argument is zero, the function copies no data to the output buffer, but returns the size in bytes of the buffer necessary to hold the largest complete category. If the nIndex argument is zero, the function returns all of the information entries in the category in a single data structure. If the lpOutput argument is NULL, the function just returns the required buffer size. See Also Category and index definitions in tables 7.3 through 7.9, and the WT_INFOCHANGE message in section 6.3.1. 5.1.2 WTOpen Syntax HCTX WTOpen(hWnd, lpLogCtx, fEnable) This function establishes an active context on the tablet. On successful comple¬tion of this function, the application may begin receiving tablet events via mes¬sages (if they were requested), and may use the handle returned to poll the con¬text, or to per-form other context-related functions. Parameter Type/Description hWnd HWND Identifies the window that owns the tablet context, and receives messages from the context. lpLogCtx LPLOGCONTEXT Points to an application-provided LOGCONTEXT data structure describing the context to be opened. fEnable BOOL Specifies whether the new context will immediately begin processing input data. Return Value The return value identifies the new context. It is NULL if the context is not opened. Comments Opening a new context allows the application to receive tablet input or creates a context that controls the system cursor or Pen Windows pen. The owning window (and all manager windows) will immediately receive a WT_CTXOPEN message when the context has been opened. If the fEnable argument is zero, the context will be created, but will not process input. The context can be enabled using the WTEnable function. If tablet event messages were requested in the context specification, the owning window will receive them. The application can control the message numbers used the lcMsgBase field of the LOGCONTEXT structure. The window that owns the new context will receive context and information change messages even if event messages were not requested. It is not necessary to handle these in many cases, but some applications may wish to do so. The newly opened tablet context will be placed on the top of the context overlap or-der. Invalid or out-of-range attribute values in the logical context structure will ei¬ther be validated, or cause the open to fail, depending on the attributes involved. Upon a successful return from the function, the context specification pointed to by lpLogCtx will contain the validated values. See Also The WTEnable function in section 5.2.1, the LOGCONTEXT data structure in section 7.3.1, and the context and infor¬mation change messages in sections 6.2 and 6.3. 5.1.3 WTClose Syntax BOOL WTClose(hCtx) This function closes and destroys the tablet context object. Parameter Type/Description hCtx HCTX Identifies the context to be closed. Return Value The function returns a non-zero value if the context was valid and was destroyed. Otherwise, it returns zero. Comments After a call to this function, the passed handle is no longer valid. The owning win¬dow (and all manager windows) will receive a WT_CTXCLOSE message when the context has been closed. See Also The WTOpen function in section 5.1.2. 5.1.4 WTPacketsGet Syntax int WTPacketsGet(hCtx, cMaxPkts, lpPkts) This function copies the next cMaxPkts events from the packet queue of context hCtx to the passed lpPkts buffer and removes them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being returned. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. Return Value The return value is the number of packets copied in the buffer. Comments The exact structure of the returned packet is determined by the packet infor¬mation that was requested when the context was opened. The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. Applications may flush packets from the queue by calling this function with a NULL lpPkt argument. See Also The WTPacketsPeek function in section 5.4.1, and the descriptions of the LOGCONTEXT (section 7.3.1) and PACKET (section 7.4.1) data structures. 5.1.5 WTPacket Syntax BOOL WTPacket(hCtx, wSerial, lpPkt) This function fills in the passed lpPkt buffer with the context event packet having the specified serial number. The returned packet and any older packets are removed from the context's internal queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being returned. wSerial UINT Serial number of the tablet event to return. lpPkt LPVOID Points to a buffer to receive the event packet. Return Value The return value is non-zero if the specified packet was found and returned. It is zero if the specified packet was not found in the queue. Comments The exact structure of the returned packet is determined by the packet infor¬mation that was requested when the context was opened. The buffer pointed to by lpPkts must be at least sizeof(PACKET) bytes long to pre-vent overflow. Applications may flush packets from the queue by calling this function with a NULL lpPkts argument. See Also The descriptions of the LOGCONTEXT (section 7.3.1) and PACKET (section 7.4.1) data structures. 5.2 Visibility Functions The functions in this section allow applications to control contexts' visibility, whether or not they are pro-cessing input, and their overlap order. 5.2.1 WTEnable Syntax BOOL WTEnable(hCtx, fEnable) This function enables or disables a tablet context, temporarily turning on or off the processing of packets. Parameter Type/Description hCtx HCTX Identifies the context to be enabled or disabled. fEnable BOOL Specifies enabling if non-zero, disabling if zero. Return Value The function returns a non-zero value if the enable or disable request was satis¬fied, zero otherwise. Comments Calls to this function to enable an already enabled context, or to disable an al¬ready disabled context will return a non-zero value, but otherwise do nothing. The context’s packet queue is flushed on disable. Applications can determine whether a context is currently enabled by using the WTGet function and examining the lcStatus field of the LOGCONTEXT struc¬ture. See Also The WTGet function in section 5.3.2, and the LOGCONTEXT structure in sec¬tion 7.3.1. 5.2.2 WTOverlap Syntax BOOL WTOverlap(hCtx, fToTop) This function sends a tablet context to the top or bottom of the order of over¬lapping tablet contexts. Parameter Type/Description hCtx HCTX Identifies the context to move within the overlap order. fToTop BOOL Specifies sending the context to the top of the overlap or-der if non-zero, or to the bottom if zero. Return Value The function returns non-zero if successful, zero otherwise. Comments Tablet contexts' input areas are allowed to overlap. The tablet interface main¬tains an overlap order that helps determine which context will process a given event. The topmost context in the overlap order whose input context encom¬passes the event, and whose event masks select the event will process the event. This function is useful for getting access to input events when the application's con-text is overlapped by other contexts. The function will fail only if the context argument is invalid. 5.3 Context Editing Functions This group of functions allows applications to edit, save, and restore contexts. 5.3.1 WTConfig Syntax BOOL WTConfig(hCtx, hWnd) This function prompts the user for changes to the passed context via a dialog box. Parameter Type/Description hCtx HCTX Identifies the context that the user will modify via the dialog box. hWnd HWND Identifies the window that will be the parent window of the dialog box. Return Value The function returns a non-zero value if the tablet context was changed, zero oth-erwise. Comments Tablet applications can use this function to let the user choose context attributes that the application doesn't need to control. Applications can control the editing of con¬text attributes via the lcLocks logical context structure member. Applications should consider providing access to this function through a menu item or command. See Also The LOGCONTEXT structure in section 7.3.1 and the context lock values in table 7.13. 5.3.2 WTGet Syntax BOOL WTGet(hCtx, lpLogCtx) This function fills the passed structure with the current context attributes for the passed handle. Parameter Type/Description hCtx HCTX Identifies the context whose attributes are to be copied. lpLogCtx LPLOGCONTEXT Points to a LOGCONTEXT data structure to which the context attributes are to be copied. Return Value The function returns a non-zero value if the data is retrieved successfully. Oth¬er¬wise, it returns zero. See Also The LOGCONTEXT structure in section 7.3.1. 5.3.3 WTSet (1.1 modified) Syntax BOOL WTSet(hCtx, lpLogCtx) This function allows some of the context's attributes to be changed on the fly. Parameter Type/Description hCtx HCTX Identifies the context whose attributes are being changed. lpLogCtx LPLOGCONTEXT Points to a LOGCONTEXT data structure containing the new context attributes. Return Value The function returns a non-zero value if the context was changed to match the passed context specification; it returns zero if any of the requested changes could not be made. Comments If this function is called by the task or process that owns the context, any context attribute may be changed. Otherwise, the function can change attributes that do not affect the format or meaning of the context's event packets and that were not speci-fied as locked when the context was opened. Context lock values can only be changed by the context’s owner. 1.1: If the hCtx argument is a default context handle returned from WTMgrDef-Context or WTMgrDefContextEx, and the lpLogCtx argument is WTP_LPDEFAULT, the default context will be reset to its initial factory default values. See Also The LOGCONTEXT structure in section 7.3.1 and the context lock values in table 7.13. 5.3.4 WTExtGet Syntax BOOL WTExtGet(hCtx, wExt, lpData) This function retrieves any context-specific data for an extension. Parameter Type/Description hCtx HCTX Identifies the context whose extension attributes are being retrieved. wExt UINT Identifies the extension tag for which context-specific data is being retrieved. lpData LPVOID Points to a buffer to hold the retrieved data. Return Value The function returns a non-zero value if the data is retrieved successfully. Oth¬er¬wise, it returns zero. See Also The extension definitions in Appendix B. 5.3.5 WTExtSet Syntax BOOL WTExtSet(hCtx, wExt, lpData) This function sets any context-specific data for an extension. Parameter Type/Description hCtx HCTX Identifies the context whose extension attributes are being modified. wExt UINT Identifies the extension tag for which context-specific data is being modified. lpData LPVOID Points to the new data. Return Value The function returns a non-zero value if the data is modified successfully. Oth¬er¬wise, it returns zero. Comments Extensions may forbid their context-specific data to be changed during the life¬time of a context. For such extensions, calls to this function would always fail. Extensions may also limit context data editing to the task of the owning window, as with the context locks. See Also The extension definitions in Appendix B, the LOGCONTEXT data structure in section 7.3.1 and the context locking values in table 7.13. 5.3.6 WTSave Syntax BOOL WTSave(hCtx, lpSaveInfo) This function fills the passed buffer with binary save information that can be used to restore the equivalent context in a subsequent Windows session. Parameter Type/Description hCtx HCTX Identifies the context that is being saved. lpSaveInfo LPVOID Points to a buffer to contain the save information. Return Value The function returns non-zero if the save information is successfully retrieved. Oth-erwise, it returns zero. Comments The size of the save information buffer can be determined by calling the WTInfo function with category WTI_INTERFACE, index IFC_CTXSAVESIZE. The save information is returned in a private binary data format. Applications should store the information unmodified and recreate the context by passing the save information to the WTRestore function. Using WTSave and WTRestore allows applications to easily save and restore ex-tension data bound to contexts. See Also The WTRestore function in section 5.3.7. 5.3.7 WTRestore Syntax HCTX WTRestore(hWnd, lpSaveInfo, fEnable) This function creates a tablet context from save information returned from the WTSave function. Parameter Type/Description hWnd HWND Identifies the window that owns the tablet context, and receives messages from the context. lpSaveInfo LPVOID Points to a buffer containing save information. fEnable BOOL Specifies whether the new context will immediately begin processing input data. Return Value The function returns a valid context handle if successful. If a context equivalent to the save information could not be created, the function returns NULL. Comments The save information is in a private binary data format. Applications should only pass save information retrieved by the WTSave function. This function is much like WTOpen, except that it uses save in¬formation for input instead of a logical context. In particular, it will generate a WT_CTXOPEN mes¬sage for the new context. See Also The WTOpen function in section 5.1.2, the WTSave function in section 5.3.6, and the WT_CTXOPEN message in section 6.2.1. 5.4 Advanced Packet and Queue Functions These functions provide advanced packet retrieval and queue manipulation. The packet retrieval functions require the application to provide a packet output buffer. To prevent overflow, the buffer must be large enough to hold the requested number of packets from the specified context. It is up to the caller to deter¬mine the packet size (by interrogating the context, if necessary), and to allocate a large enough buffer. Ap¬plications may flush packets from the queue by passing a NULL buffer pointer. 5.4.1 WTPacketsPeek Syntax int WTPacketsPeek(hCtx, cMaxPkts, lpPkts) This function copies the next cMaxPkts events from the packet queue of context hCtx to the passed lpPkts buffer without removing them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being read. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. Return Value The return value is the number of packets copied in the buffer. Comments The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. See Also the WTPacketsGet function in section 5.1.4. 5.4.2 WTDataGet Syntax int WTDataGet(hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts) This function copies all packets with serial numbers between wBegin and wEnd in-clusive from the context's queue to the passed buffer and removes them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being returned. wBegin UINT Serial number of the oldest tablet event to return. wEnd UINT Serial number of the newest tablet event to return. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. lpNPkts LPINT Points to an integer to receive the number of packets ac-tually copied. Return Value The return value is the total number of packets found in the queue between wBegin and wEnd. Comments The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. See Also The WTDataPeek function in section 5.4.3, and the WTQueuePacketsEx function in section 5.4.5. 5.4.3 WTDataPeek Syntax int WTDataPeek(hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts) This function copies all packets with serial numbers between wBegin and wEnd in-clusive, from the context's queue to the passed buffer without removing them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being read. wBegin UINT Serial number of the oldest tablet event to return. wEnd UINT Serial number of the newest tablet event to return. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. lpNPkts LPINT Points to an integer to receive the number of packets ac-tually copied. Return Value The return value is the total number of packets found in the queue between wBegin and wEnd. Comments The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. See Also The WTDataGet function in section 5.4.2, and the WTQueuePacketsEx function in section 5.4.5. 5.4.4 WTQueuePackets (16-bit only) Syntax DWORD WTQueuePackets(hCtx) This function returns the serial numbers of the oldest and newest packets cur¬rently in the queue. Parameter Type/Description hCtx HCTX Identifies the context whose queue is being queried. Return Value The high word of the return value contains the newest packet's serial number; the low word contains the oldest. Comments This function is non-portable and is superseded by WTQueuePacketsEx. See Also The WTQueuePacketsEx function in section 5.4.5. 5.4.5 WTQueuePacketsEx Syntax BOOL WTQueuePacketsEx(hCtx, lpOld, lpNew) This function returns the serial numbers of the oldest and newest packets cur¬rently in the queue. Parameter Type/Description hCtx HCTX Identifies the context whose queue is being queried. lpOld UINT FAR * Points to an unsigned integer to receive the oldest packet's serial number. lpNew UINT FAR * Points to an unsigned integer to receive the newest packet's serial number. Return Value The function returns non-zero if successful, zero otherwise. 5.4.6 WTQueueSizeGet Syntax int WTQueueSizeGet(hCtx) This function returns the number of packets the context's queue can hold. Parameter Type/Description hCtx HCTX Identifies the context whose queue size is being re¬turned. Return Value The return value is the number of packet the queue can hold. See Also The WTQueueSizeSet function in section 5.4.7. 5.4.7 WTQueueSizeSet Syntax BOOL WTQueueSizeSet(hCtx, nPkts) This function attempts to change the context's queue size to the value specified in nPkts. Parameter Type/Description hCtx HCTX Identifies the context whose queue size is being set. nPkts int Specifies the requested queue size. Return Value The return value is non-zero if the queue size was successfully changed. Other¬wise, it is zero. Comments If the return value is zero, the context has no queue because the function deletes the original queue before attempting to create a new one. The application must continue calling the function with a smaller queue size until the function returns a non-zero value. See Also The WTQueueSizeGet function in section 5.4.6. 5.5 Manager Handle Functions The functions described in this and subsequent sections are for use by tablet manager applications. The functions of this section create and destroy manager handles. These handles allow the interface code to limit the degree of simultaneous access to the powerful manager functions. Also, opening a manager handle lets the application receive messages about tablet interface activity. 5.5.1 WTMgrOpen Syntax HMGR WTMgrOpen(hWnd, wMsgBase) This function opens a tablet manager handle for use by tablet manager and con¬figu-ration applications. This handle is required to call the tablet management func¬tions. Parameter Type/Description hWnd HWND Identifies the window which owns the manager handle. wMsgBase UINT Specifies the message base number to use when notifying the manager window. Return Value The function returns a manager handle if successful, otherwise it returns NULL. Comments While the manager handle is open, the manager window will receive context mes-sages from all tablet contexts. Manager windows also receive information change messages. The number of manager handles available is interface implementation-dependent, and can be determined by calling the WTInfo function with category WTI_INTERFACE and index IFC_NMANAGERS. See Also The WTInfo function in section 5.1.1, the WTMgrClose function in section 5.5.2, the description of message base numbers in section 6 and the context and in¬for¬ma-tion change messages in sections 6.2 and 6.3. 5.5.2 WTMgrClose Syntax BOOL WTMgrClose(hMgr) This function closes a tablet manager handle. After this function returns, the passed manager handle is no longer valid. Parameter Type/Description hMgr HMGR Identifies the manager handle to close. Return Value The function returns non-zero if the handle was valid; otherwise, it returns zero. 5.6 Manager Context Functions These functions provide access to all open contexts and their owners, and allow changing context de¬faults. Only tablet managers are allowed to manipulate tablet contexts belonging to other applica¬tions. 5.6.1 WTMgrContextEnum Syntax BOOL WTMgrContextEnum(hMgr, lpEnumFunc, lParam) This function enumerates all tablet context handles by passing the handle of each context, in turn, to the callback function pointed to by the lpEnumFunc pa¬rameter. The enumeration terminates when the callback function returns zero. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. lpEnumFunc WTENUMPROC Is the procedure-instance address of the call-back function. See the following "Comments" section for details. lParam LPARAM Specifies the value to be passed to the callback func-tion for the application's use. Return Value The return value specifies the outcome of the function. It is non-zero if all con¬texts have been enumerated. Otherwise, it is zero. Comments The address passed as the lpEnumFunc parameter must be created by using the MakeProcInstance function. The callback function must have attributes equivalent to WINAPI. The callback function must have the following form: Callback BOOL WINAPI EnumFunc(hCtx, lParam) HCTX hCtx; LPARAM lParam; EnumFunc is a place holder for the application-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the applica-tion's module-definition file. Parameter Description hCtx Identifies the context. lParam Specifies the 32-bit argument of the WTMgrContextEnum func-tion. Return Value The function must return a non-zero value to continue enumeration, or zero to stop it. 5.6.2 WTMgrContextOwner Syntax HWND WTMgrContextOwner(hMgr, hCtx) This function returns the handle of the window that owns a tablet context. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. hCtx HCTX Identifies the context whose owner is to be returned. Return Value The function returns the context owner's window handle if the passed arguments are valid. Otherwise, it returns NULL. Comments This function allows the tablet manager to coordinate tablet context manage¬ment with the states of the context-owning windows. 5.6.3 WTMgrDefContext Syntax HCTX WTMgrDefContext(hMgr, fSystem) This function retrieves a context handle that allows setting values for the current default digit¬izing or system context. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. fSystem BOOL Specifies retrieval of the default system context if non-zero, or the default digitizing context if zero. Return Value The return value is the context handle for the specified default context, or NULL if the arguments were invalid. Comments The default digitizing context is the context whose attributes are returned by the WTInfo function WTI_DEFCONTEXT category. The default system context is the context whose attributes are returned by the WTInfo function WTI_DEFSYSCTX category. Editing operations on the retrieved handles will fail if the new default contexts do not meet certain requirements. The digitizing context must include at least buttons, x, and y in its packet data, and must return absolute coordinates. 1.1: Editing the current default digitizing context will also update the device-spe¬cific default context for the device listed in the lcDevice field of the default con¬text’s LOGCONTEXT structure. See Also The WTInfo function in section 5.1.1 the WTMgrDefContextEx function in section 5.6.4, and the category and index definitions in tables 7.3 through 7.9. 5.6.4 WTMgrDefContextEx (1.1) Syntax HCTX WTMgrDefContextEx(hMgr, wDevice, fSystem) This function retrieves a context handle that allows setting values for the default digit¬izing or system context for a specified device. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. wDevice UINT Specifies the device for which a default context handle will be returned. fSystem BOOL Specifies retrieval of the default system context if non-zero, or the default digitizing context if zero. Return Value The return value is the context handle for the specified default context, or NULL if the arguments were invalid. Comments The default digitizing contexts are contexts whose attributes are returned by the WTInfo function WTI_DDCTXS multiplexed category. The default system con-texts are contexts whose attributes are returned by the WTInfo function WTI_DSCTXS multiplexed category. Editing operations on the retrieved handles will fail if the new default contexts do not meet certain requirements. The digitizing context must include at least buttons, x, and y in its packet data, and must return absolute coordinates. See Also The WTInfo function in section 5.1.1, and the category and index definitions in tables 7.3 through 7.9. 5.7 Manager Configuration Functions These functions allow manager applications to replace the default context configuration dialog and to display a configuration dialog for each hardware device. 5.7.1 WTMgrDeviceConfig Syntax UINT WTMgrDeviceConfig(hMgr, wDevice, hWnd) This function displays a custom modal tablet-hardware configuration dialog box, if one is supported. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. wDevice UINT Identifies the device that the user will configure via the dialog box. hWnd HWND Identifies the window that will be the parent window of the dialog box. If this argument is NULL, the function will return non-zero if the dialog is supported, or zero otherwise. Return Value The return value is zero if the dialog box is not supported. Otherwise, it is one of the following non-zero values. Value Meaning WTDC_CANCEL The user canceled the dialog without making any changes. WTDC_OK The user made and confirmed changes. WTDC_RESTART The user made and confirmed changes that require a sys-tem restart in order to take effect. The calling program should query the user to determine whether to restart. Restart Windows using the function call ExitWin-dows(EW_RESTARTWINDOWS, 0);. 5.7.2 WTMgrConfigReplace (16-bit only) Syntax BOOL WTMgrConfigReplace(hMgr, fInstall, lpConfigProc) This function allows a manager application to replace the default behavior of the WTConfig function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. fInstall BOOL Specifies installation of a replacement function if non-zero, or removal of the current replacement if zero. lpConfigProc WTCONFIGPROC Is the procedure-instance address of the new configuration function. This argument is ignored during a re¬moval request. Return Value The function return non-zero if the installation or removal request succeeded. Oth-erwise, it returns zero. Comments This function is non-portable and is superseded by WTMgrConfigReplaceEx. See Also The WTConfig function in section 5.3.1, and for a description of the configuration callback function, see the WTMgrConfigReplaceEx function in section 5.7.3. 5.7.3 WTMgrConfigReplaceEx Syntax BOOL WTMgrConfigReplaceEx(hMgr, fInstall, lpszModule, lpszCfgProc) This function allows a manager application to replace the default behavior of the WTConfig function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. fInstall BOOL Specifies installation of a replacement function if non-zero, or removal of the current replacement if zero. lpszModule LPCTSTR Points to a null-terminated string that names a DLL module containing the new configuration function. This argument is ignored during a re¬moval request lpszCfgProc LPCSTR Points to a null-terminated string that names the new configuration function. This argument is ignored during a re¬moval request. Return Value The function return non-zero if the installation or removal request succeeded. Oth-erwise, it returns zero. Comments The configuration callback function must have attributes equivalent to WINAPI. Only one callback function may be installed at a time. The manager handle passed with the removal request must match the handle passed with the corre¬sponding in-stallation request. Tablet managers that install a replacement context configuration function must re-move it before exiting. Callback BOOL WINAPI ConfigProc(hWnd, hCtx) HWND hWnd; HCTX hCtx; ConfigProc is a place holder for the application-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the applica-tion's module-definition file. Parameter Description hWnd Identifies the window that will be the parent window of the dialog box. hCtx Identifies the context that the user will modify via the dialog box. Return Value The function returns a non-zero value if the tablet context was changed, zero oth-erwise. Comments The configuration function and resulting dialog box should analyze the lcLocks context structure member, and only allow editing of unlocked context attributes. See Also The WTConfig function in section 5.3.1. 5.8 Manager Packet Hook Functions These functions allow manager applications to monitor, record, and play back sequences of tablet packets. 5.8.1 WTMgrPacketHook (16-bit only) Syntax WTHOOKPROC WTMgrPacketHook(hMgr, fInstall, nType, lpFunc) This function installs or removes a packet hook function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. fInstall BOOL Specifies installation of a hook function if non-zero, or removal of the specified hook if zero. nType int Specifies the packet hook to be installed. It can be any one of the following values: Value Meaning WTH_PLAYBACK Installs a packet playback hook. WTH_RECORD Installs a packet record hook. lpFunc WTHOOKPROC Is the procedure-instance address of the hook function to be installed. See the "Comments" section under WTMgrPacketHookEx for details. Return Value When installing a hook, the return value points to the procedure-instance ad¬dress of the previously installed hook (if any). It is NULL if there is no previous hook; it is negative one if the hook cannot be installed. The application or library that calls this func¬tion should save this return value in the library's data segment. The fourth argument of the WTPacketHookDefProc function points to the location in memory where the library saves this return value. When removing a hook, the return value is the passed lpFunc if successful, NULL otherwise. Comments This function is non-portable and is superseded by WTMgrPacketHookEx and WTMgrPacketUnhook. See Also the WTMgrPacketHookEx function in section 5.8.2, and the WTMgrPacketUn-hook function in section 5.8.3. 5.8.2 WTMgrPacketHookEx Syntax HWTHOOK WTMgrPacketHookEx(hMgr, nType, lpszModule, lpszHookProc) This function installs a packet hook function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the caller as a manager application. nType int Specifies the packet hook to be installed. It can be any one of the following values: Value Meaning WTH_PLAYBACK Installs a packet playback hook. WTH_RECORD Installs a packet record hook. lpszModule LPCTSTR Points to a null-terminated string that names a DLL module containing the new hook function. See the following "Comments" section for details. lpszHookProc LPCSTR Points to a null-terminated string that names the new hook function. See the following "Comments" section for details. Return Value If the function succeeds, the return value is the handle of the installed hook func-tion. Otherwise, the return value is NULL. Comments Packet hooks are a shared resource. Installing a hook affects all applications using the interface. All Wintab hook functions must be exported functions residing in a DLL module. The following section describes how to support the individual hook functions. WTH_PLAYBACK Wintab calls the WTH_PLAYBACK hook whenever a request for an event packet is made. The function is intended to be used to supply a previously recorded event packet for a compatible context. The hook function must have attributes equivalent to WINAPI. The filter function must have the following form: Hook Function LRESULT WINAPI HookFunc(nCode, wParam, lParam); int nCode; WPARAM wParam; LPARAM lParam; HookFunc is a place holder for the library-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the library's mod¬ule-definition file. Parameter Description nCode Specifies whether the hook function should process the mes¬sage or call the WTMgrPacketHookDefProc (if installed by WTMgrPacketHook)or WTMgrPacketHookNext (if installed by WTMgrPacketHookEx) function. If the nCode parame¬ter is less than zero, the hook function should pass the message to the appropriate function without further process¬ing. wParam Specifies the context handle whose event is being requested. lParam Points to the packet being processed by the hook function. Comments The WTH_PLAYBACK function should copy an event packet to the buffer pointed to by the lParam pa¬rameter. The packet must have been previously recorded by us-ing the WTH_RECORD hook. It should not modify the packet. The return value should be the amount of time (in milliseconds) Wintab should wait before pro¬cess¬ing the mes¬sage. This time can be computed by calculation the difference between the time stamps of the current and previous packets. If the function returns zero, the message is processed immediately. Once it returns control to Wintab, the packet continues to be processed. If the nCode parameter is WTHC_SKIP, the hook func-tion should prepare to return the next recorded event message on its next call. The packet pointed to by lParam will have the same structure as packets re¬trieved from the context normally. Wintab will validate the following packet items to en¬sure consistency: context handle, time stamp, and serial number. The remaining fields will be valid if the context used for playback is equivalent to the context from which the events were recorded. The WTH_PLAYBACK hook will not be called to notify it of the display or re¬moval of system modal dialog boxes. It is expected that applications playing back packets will also be playing back window event messages using Windows' own hook functions. While the WTH_PLAYBACK function is in effect, Wintab ignores all hardware in-put. WTH_RECORD The interface calls the WTH_RECORD hook whenever it processes a packet from a context event queue. The hook can be used to record the packet for later playback. The hook function must have attributes equivalent to WINAPI. The hook function must have the following form: Hook Function LRESULT WINAPI HookFunc(nCode, wParam, lParam); int nCode; WPARAM wParam; LPARAM lParam; HookFunc is a place holder for the library-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the library's mod¬ule-definition file. Parameter Description nCode Specifies whether the hook function should process the mes¬sage or call the WTMgrPacketHookDefProc (if installed by WTMgrPacketHook)or WTMgrPacketHookNext (if installed by WTMgrPacketHookEx) function. If the nCode parame¬ter is less than zero, the hook function should pass the message to the appropriate function without further process¬ing. wParam Specifies the context handle whose event is being processed. lParam Points to the packet being processed by the hook function. Comments The WTH_RECORD function should save a copy of the packet for later play¬back. It should not modify the packet. Once it returns control to Wintab, the message con-tinues to be processed. The filter function does not require a return value. The packet pointed to by lParam will have the same structure as packets re¬trieved from the context normally. The WTH_RECORD hook will not be called to notify it of the display or re¬moval of system modal dialog boxes. It is expected that applications recording packets will also be recording window event messages using Windows' own hook functions. 5.8.3 WTMgrPacketUnhook Syntax BOOL WTMgrPacketUnhook(hHook) This function removes a hook function installed by the WTMgrPacketHookEx function. Parameter Type/Description hHook HWTHOOK Identifies the hook function to be removed. Return Value The function returns a non-zero value if successful, zero otherwise. See Also The WTMgrPacketHookEx function in section 5.8.2, and the WTMgrPack-etHookNext function in section 5.8.5. 5.8.4 WTMgrPacketHookDefProc (16-bit only) Syntax LRESULT WTMgrPacketHookDefProc(nCode, wParam, lParam, lplpFunc) This function calls the next function in a chain of packet hook functions. A packet hook function is a function that processes packets before they are re¬trieved from a context's queue. When applications define more than one hook function by using the WTMgrPacketHook function, Wintab places func¬tions of the same type in a chain. Parameter Type/Description nCode int Specifies a code used by the hook function to determine how to process the message. wParam WPARAM Specifies the word parameter of the message that the hook function is processing. lParam LPARAM Specifies the long parameter of the message that the hook function is processing. lplpFunc WTHOOKPROC FAR * Points to a memory location that con-tains the WTHOOKPROC returned by the WTMgrPacketHook function. Wintab changes the value at this location after an appli-cation unhooks the hook using the WTMgrPacketHook function. Return Value The return value specifies a value that is directly related to the nCode parameter. Comments This function is non-portable and is superseded by the WTMgrPacketHookNext function. See Also The WTMgrPacketHookNext function in section 5.8.5. 5.8.5 WTMgrPacketHookNext Syntax LRESULT WTMgrPacketHookNext(hHook, nCode, wParam, lParam) This function passes the hook information to the next hook function in the current hook chain. Parameter Type/Description hHook HWTHOOK Identifies the current hook. nCode int Specifies the hook code passed to the current hook function. wParam WPARAM Specifies the wParam value

20,358

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧