Developing Quality Applications
Data Recovery and App Restart
Applications developed under Windows Vista® can be written so that users do not lose their work or documents because of a software problem beyond their control. Preserving a user's experience despite an unrecoverable application error is supported in Windows Vista by Windows Feedback through two complementary mechanisms:
An application state persistence mechanism to save the state of the terminated application
An automatic restart technology to pick up the running of the terminated application
Windows Feedback Services
Windows Vista allows application developers to control and customize error reporting through Windows Feedback and C-callable libraries.
Using the appropriate Windows Vista and application-specific locations to determine where to store files and registry information keeps an application from conflicting with other applications, and makes it easier to migrate your application or make it accessible to roaming users.
Known Folders abstracts the actual physical location of a file on a specific system, allowing an application to query for the system's actual configuration.
Known Folders succeeds the fixed list of predefined "special folders" identified by CSIDL constants. For more information on CSIDL, see the CSIDL section of the Windows SDK.
To prevent application failure, or the appearance of application failure due to an unresponsive I/O operation, Windows Vista provides an updated API for I/O cancellation. Support for I/O cancellation requires either the use of asynchronous (non-blocking) I/O functions, such as CreateFile, or multithreaded applications, so that the synchronous I/O operation and I/O cancellation can be located in separate threads.
A good general rule is that operations requiring more than 2 seconds to complete should provide feedback to the user in the form of progress or other status indicators, and implement I/O cancellation. This is particularly true for an application's user interface (UI). No UI threads should be blocked by any I/O, wait, or other operations (even lengthy compute operations) for a perceptible amount of time. Multi-threading is recommended.
Diagnostics and Performance Tuning
The new Performance Counter Library (PERFLIB version 2.0) offers a number of advantages to the developer, including:
Performance counters can be exposed and consumed in a much simplified manner
Finer granularity queries
A standard inter-process communication (IPC) mechanism, based on Event Tracing for Windows (ETW) notification, between a provider and consumer
More reliable and secure operation
Language-neutral universal identifiers
The new Counter Preprocessor (CTRPP) tool, which generates skeleton code for performance counter providers
Event Reporting and Tracing
Windows Vista contains two facilities for event reporting and tracing:
Event Tracing for Windows (ETW)
First introduced in Windows 2000, this high-performance technology enables the instrumentation and monitoring of applications, typically during optimization, debugging, and performance tuning. Because of its high performance design, it has limited querying, subscription, and forwarding capabilities.
Windows Event Log
New with Windows Vista, it is used to create, publish, receive, and store system and application events for the primary purposes of diagnostics and auditing. The Windows Event Log service has an associated API that, in conjunction with the ETW API, unifies much of this functionality for the developer, hiding the differences in the technology used. This API is targeted at the C/C++ programmer.