Home > Store

Win32 System Services: The Heart of Windows 98 and Windows 2000, 3rd Edition

Register your product to gain access to bonus material or receive a coupon.

Win32 System Services: The Heart of Windows 98 and Windows 2000, 3rd Edition

Book

  • Sorry, this book is no longer in print.
Not for Sale

About

Features

  • NEW -

Description

  • Copyright 2001
  • Dimensions: 7" x 9-1/4"
  • Pages: 720
  • Edition: 3rd
  • Book
  • ISBN-10: 0-13-022557-6
  • ISBN-13: 978-0-13-022557-3

Fully updated to reflect Win32 enhancements in Windows 2000 and Windows 98, Marshall Brain's classic guide remains the most effective way for developers to master Win32 services in real-world application development. Brain introduces Win32 files, directory and drive structure, NT processes and threads, synchronization mechanisms, network communications, Remote Procedure Calls, NT services, NT security, consoles, communications ports, accessing system information, and using DLLs to modularize programs. Each self-contained chapter covers a different API service, with functions demonstrated clearly in code examples. Brain also shows how multiple services can be integrated to create larger, more sophisticated applications.

Downloads

CD Contents

Untitled Document Download the CD-ROM for this title.

Sample Content

Downloadable Sample Chapter

Click here for a sample chapter for this book: 0130225576.pdf

Table of Contents



1. Introduction.

One Hundred and Twenty-one Questions About Windows 2000 and 98. Compiling Code. Terminology. Error Handling. Handles and Objects. Using the Microsoft Documentation. Bugs in the 32-Bit API. Differences Between Windows 98 and Windows 2000.



2. Files.

The Possibilities. Overview. Opening and Reading from a File. Getting and Setting File Information. File Operations. Temporary Files. File Reading and Writing. Asynchronous File Operations. File Locking. Compressed Files. File Mapping. Conclusion.



3. Drives.

The Possibilities. Getting Volume Information. Getting Drive Types. Getting Free Space. Getting Logical Drives and Drive Strings. Setting the Volume Label. WNet Functions. Conclusion.



4. Directories.

The Possibilities. Creating and Deleting Directories. Getting and Setting the Current Directory. Searching for a File. Traversing Directory Trees. Combining Capabilities. Detecting Changes to Directories and Files. Conclusion.



5. Active Directory.

The Possibilities. Introduction to Active Directory. Active Directory Architecture. Frequently Asked Questions. Conclusion.



6. Process and Threads.

The Possibilities. Introduction. Simple Examples. Using Threads in GUI Applications. Matching the Number of Threads to the Number of CPU's. Using Thread Local Storage. Thread Priorities. Other Thread Functions. Processes. Inheriting Handles. Interprocess Communication. Jobs. Conclusion.



7. Synchronization.

Understanding the Problem. Four Different Synchronization Methods. Deadlocks, Starvation, and Other Synchronization Bugs. Wait Functions. Overlapped I/O. Change Functions. Integrating Synchronization into MFC Programs. Conclusion.



8. Network Communications.

The Possibilities. Understanding Your Options. Mailslots. Named Pipes. Named Pipe Client/Server Systems. Connection with UNIX and Other TCP/IP Machines. UDP Connections. TCP Connections. Conclusion.



9. Remote Procedure Calls.

The Possibilities. The Basic Idea. Design Issues. Creating RPCs. Understanding RPCs at a High Level. Parameter Passing. Understanding the Code. Setting up a Name Server in the Registry. Manual Binding with Implicit Handles. An RPC Server for Mandelbrot Sets. Improving the Mandelbrot RPC Server. Explicit Handles. Context Handles. Common Questions. Conclusion.



10. Distribute COM (DCOM).

DCOM Architecture. Components and Reuse. Location Independence. Connection Management. Scalability. Conclusion.



11. Communications.

The Possibilities. Understanding Serial Communications. A Simple Communications Application. Getting Communications Events. A Simple Bulletin Board System. Flow Control. A Simple TTY Terminal Program. Other Communications Functions. Conclusion.



12. Windows 2000 Services.

The Possibilities. Understanding Services. S ervice Choreography. The Simplest Service. Installing and Removing a Service. Displaying Dialogs from within a Service. Multiple Services in an Executable. Getting and Setting Configuration Information. Controlling Services. Enumerating Services. Placing an RPC Server in a Server. Conclusion.



13. Security.

The Possibilities. -Understanding the Terminology and Concepts of the Windows 2000 Security _System. Windows 2000 Security Vocabulary. Simple Examples. Securable Objects and Access Rights. Examining Existing Access Tokens and Security Descriptors. Privileges. Adding and Deleting ACEs. Impersonation. Conclusion.



14. Consoles.

The Possibilities. Raw versus Cooked Input. Simple Examples. Raw Input. Other Input Events. Other Capabilities. Conclusion.



15. Microsoft Management Console (MMC).

The Possibilities. MMC Interfaces and Methods. ATL Snap-In Wizard. Conclusion.



16. System Information.

The GetSystemInfo Function. Other System Information Functions. Getting and Setting Environment Strings. Shutting Down the System.



17. Dynamic Link Libraries.

The Possibilities. Overview. Creating a Simple DLL. Understanding a Simple DLL. Load-time versus Run-time Linking. DLL Entry Points. Memory Models. Conclusion.



18. Component Object Model (COM).

COM Fundamentals. Component Object Library. Summary.



19. COM+.

COM+ Programming Overview. COM+ Application Overview. Developing COM+ Applications. COM+ Design Assumptions and Principles. Conclusion.



20. -Windows Distributed Network _Architecture (DNA).

Frequently Asked Questions about Windows DNA. Microsoft Windows Distributed Internet Application Architecture. The Presentation Tier. Business Services Tier. Data Services Tier. Conclusion.



21. Miscellaneous.

Registry. The Event Log. Time. Memory. Structured Exception Handling. Error Handling.



Appendix A: Compiling the Code in This Book.


Appendix B: Contacting the Authors.


Appendix C: Error Codes.


Index.

Preface

Preface

The Win32 system services are the innovative, cutting-edge capabilities that make Windows 2000 and Windows 98 interesting and exciting. Amid all of the media attention surrounding Windows 2000 and 98, you have probably heard and read about many of the modern capabilities that these operating systems contain:

  • Processes and threads
  • Synchronization
  • Remote Procedure Calls (RPCs) and DCOM (Distributed COM)
  • Event logging
  • Network communications
  • TCP/IP network communications
  • File mapping and Active Directory
  • Interprocess and Interprocessor communication
  • Compressed file access
  • Network drive- and printer-sharing
  • Serial communications
  • Services (background processing like UNIX daemons)
  • Object and file security

The goal of this book is to show you how to use all of these different services in your own applications. This book contains hundreds of concise, clear, and easy-to-understand example programs and explanations. The examples show you how to access the system services listed above, as well as many others. You can use these examples directly, to understand the concepts. You can also drop the sample code into your own programs and then extend it to give your applications new and useful features.

By learning about the many and varied system services available inside of Windows 2000 and 98, you can make your programs much more interesting to the user. For example, if you learn about threads and then add multiple threads to your applications, the user gets a much smoother interface (see Chapter 6). Your program will also take advantage of multiple processors on machines that have them. If you add network support to your applications, the user is able to access network resources that are unavailable on a single machine (see Chapter 8). If you add modem support, you can use it to let the user dial into a remote system (see Chapter 11). Or you might use a modem to let the user dial a support line or registration system for a product that your company sells.

The goal of this book is to give you a thorough and clear understanding of the system services so that you can take advantage of all of the capabilities that Windows has to offer.

Audience

This book is designed for two types of people. If you are a devoted connoisseur or student of programming, the study of the system functions is interesting in its own right. It's fun to see what functions are available, and to try to think of ways to exploit those capabilities. One way to use this book is to simply browse through it and see what is possible. You can work with the examples and extend them in ways that you find enjoyable.

If, on the other hand, you are a programmer with a deadline, enjoyable entertainment is probably not your goal. You may have looked at the huge number of functions in the Windows API and found it discouraging. Where do you start? What you need is a set of useful examples and clear explanations that quickly solve your specific problems. You will find this book useful because it organizes concepts logically and provides the material that you need to master a specific topic very quickly.

If you are migrating from another operating system to Windows, this book will help you to quickly map your existing knowledge into the Windows framework. See Chapter 1 for a list of the 121 most common programming questions in Windows, as well as for the locations of the sections that contain the answers.

Organization

This book is organized by functional categories. For example, Chapter 2 talks about all of the functions that pertain to file input/output and file handling. Chapter 3 deals with disk drives. Chapter 4 discusses directories. Chapter 5 talks about the next-generation directory services, known as Active Directory in Windows 2000. Chapter 6 talks about processes and threads. You will find that each chapter starts with a general overview of the topic, followed by sections that describe and give examples for subsets of functions.

In many chapters you will find integrating examples that combine different capabilities from several chapters to create larger applications. Many of these larger examples form complete applications that you can use as starting points for new projects of your own.

Philosophy

Several principles guide the content of this book. The first principle is the most important and is therefore used throughout: it is simplicity. There is nothing worse than looking up a function, only to find that its example is embedded within sample code that takes three days to comprehend because it is 28 pages long. In all cases a function is first demonstrated in code that is as simple as possible so that you can extract the essence of each one very quickly. They may then be integrated into larger examples. In many cases you will look at the example code and say to yourself, "This is easy!" That is exactly the intent. If the book makes everything look simple and easy for you, then it has accomplished its goal.

The second principle driving this book is the idea of functional families. Functions in the 32-bit API very rarely exist on their own-it is far more common to find small collections of functions that relate very closely to one another. For example, the ReadFile function reads from a file, but you must open the file with CreateFile before you can read from it and then remember to close it with CloseHandle afterwards (see Chapter 2). These functions belong to a family. In this book you will generally find small groupings of functions described as logical units.

The third principle in this book is that of currency. The Windows API has been around for some time, and when you look at it you will find that there is a certain amount of layering. The documentation will often say things like, "this function is retained for compatibility with version 1.8, but has been superseded by function xyz." This book deals only with the current functions, and leaves the superseded ones to die in peace.

The last principle guiding this book is independence. Each chapter in this book is as stand-alone as possible, so that you can jump around in the book as you please. In cases where material from other chapters is important, you will find references to the related sections.

Prerequisites and Languages

This book makes no assumptions about your former knowledge of systems programming in Windows or in any other system. Its only real assumption is that you know C and/or C++. You will find that the example code can be divided into two categories:

  1. Text examples that run in "console mode." These programs run from the MS-DOS prompt, accept keyboard input, and produce text output. They form the vast majority of the code in this book because they are simple. These programs are C++- compatible, but the only elements really being used from C++ are the I/O stream libraries.
  2. "Windows" programs that use the Windows GUI. These programs use C++ and the Microsoft Foundation Class library (MFC). The book Visual C++: Developing Professional Applications for Windows 98 and NT using MFC, by Marshall Brain and Lance Lovette (ISBN 0-13-085121-3), describes how to create programs with MFC, and will be useful as a tool to help you understand these examples if you are not already familiar with MFC. You can develop C-language Windows programs using only the Win32 API. However, the Visual C++ tools make low-level Win32 programming easier. But to take advantage of the Visual C++ and MFC tools, you should have a good grasp of the underlying Win32 API.

If you are a C programmer with no C++ experience, you will have no trouble understanding the console programs. The only unusual thing you will see is code that looks like this:

char s100;// Prompt the usercout << "Enter a line of text: ";// Read a line of text from the usercin.getline(s,100);// Echo the user's input to stdoutcout << s << endl;

This code declares a character string s, and then uses "cout <<" to output a prompt to the user. The "cin.getline" statement reads a line of text from the user. The final "cout" statement echoes the line. The book Visual C++: Developing Professional Applications in Windows 95 and NT using MFC, by Marshall Brain and Lance Lovette (ISBN 0-13-305145-5), contains an extensive C++ appendix to help you get started with the language if you are interested. It will also help you understand the MFC code.

The Diskette and the On-line Index

The diskette included with this book contains the source code for all of the examples in the book, as well as the source and data for an on-line indexing program. The index is broken down by sections and includes every word found in the manuscript.

To use the index, follow the directions in the README file on the disk to compile the program. When you run the index, you will see a display that contains an edit area, three buttons (Help, Search and Quit), and a list area. Any words that you type in the edit area are used to search for appropriate sections. For example, if you want to find out how to create a DLL entry point, you would type "DLL entry point" in the edit area. Press the "Search" button to begin the search. The index program will list all sections that contain all three of those words. Enter as many words as you like to home in on what you want. Word matching is exact and case-insensitive. If a word does not appear in the book, the program will tell you.

There are many cases where an exact match does not work well. For example, there may be a section that contains "thread" and "create" but not "creating" and "threads," so if you enter the line "creating threads" on the edit line you get no matches. You can use the "*" wild card character at the end of a word to solve this problem. For example, by entering "creat*" the system will use OR to gather together all words with the root "creat" ("create," "creates," "creation," etc.). You may want to get in the habit of using the wild card character at the end of all words: "creat* thread*," for example. This often yields more helpful results.

If an obvious word seems to be missing from the index, try to find it in the book to make sure you are spelling it correctly. For example, "resize" is spelled "re-size" in the book, and you need to spell it the same way.

Contents of the Book

Each chapter in this book talks about a different service in the 32-bit API. Chapter 1 contains a list of the 121 most common questions about the system services, and it will help you to quickly find material that interests you. The list below summarizes the different chapters in the book to help you with browsing.

  • Chapter 1 is an introduction. It contains a list of the 121 most common programming questions about the Windows system services. This list will serve as a good road map for you. The chapter also contains general information that is useful throughout the book.
  • Chapter 2 discusses files. It shows you how to open, read, and write files, how to read from compressed files, how to map files into memory, and so on. The 32-bit API contains quite a few interesting file capabilities.
  • Chapter 3 introduces the drive structure of Windows. You will learn how to query the drives on your local machine, as well as how to query and connect to drives on the network.
  • Chapter 4 discusses the directory structure. It shows you how to create and traverse directory trees.
  • Chapter 5 talks about the next-generation directory structure of Windows 2000. It shows you how to create and use this new directory capability. It also gives suggestions on when to use this active-directory capability.
  • Chapter 6 offers a complete introduction to processes and threads in the Windows environment. You will see how to multi-thread your own applications, as well as MFC applications. There is also a discussion of processes, interprocess communication, and inheritance.
  • Chapter 7 discusses Windows synchronization mechanisms. Critical sections, mutexes, semaphores and events help you write multi-threaded code that does not step on itself. The chapter introduces you to general synchronization principles and bugs, and shows solutions to a number of standard problems. It also shows you how to incorporate synchronization mechanisms into an MFC program without stalling its event loop.
  • Chapter 8 talks about network communications. Windows contains two different native technologies for communicating over a network: mailslots and named pipes. Windows also supports UPD and TCP packets on TCP/IP networks. The latter capabilities let you intercommunicate with UNIX and other TCP/IP machines. The chap-ter includes a complete introduction to network principles and terminology.
  • Chapter 9 intoduces Remote Procedure Calls, or RPCs. An RPC lets you make a function call that is transmitted over a network and executed on another machine. This chapter contains a complete introduction to the hows and whys of RPCs, as well as design principles to keep in mind when creating client/server systems with RPCs. It contains examples of auto, implicit, explicit, and context binding, and also shows how to incorporate RPCs into MFC programs.
  • Chapter 10 discusses Distributed COM (DCOM). This chapter shows how DCOM objects are created and distributed to create a distributed network.
  • Chapter 11 talks about communications ports in Windows systems. It shows you how to access both the serial and parallel ports, and demonstrates a simple terminal emulator and bulletin board system.
  • Chapter 12 discusses Windows 2000 services. These are background processes that start at boot time and run regardless of who is logged in, just like daemons in UNIX. This chapter shows you how to create your own services and install them in NT's service manager. It also shows you how to place RPC servers into services so they run continuously.
  • Chapter 13 offers a complete introduction to the Windows 2000 security system. This system is uniform across all NT objects, so you will learn how to secure files, registry keys, pipes, semaphores, and so on. It teaches you everything you need to know to create and modify access control lists and security descriptors.
  • Chapter 14 discusses consoles, which you will use when you want to create text-based programs in Windows. For example, if you want to create a terminal emulator, consoles offer an easy way to handle the keyboard input and character output for the emulator.
  • Chapter 15 talks about Microsoft Management Console (MMC). It will demonstrate the possibilities, and methods for using ATL (Active Template Library) to do Snap-ins.
  • Chapter 16 shows you how to access system information, and how to log users off and shut down or reboot the system. For example, this chapter shows you how to determine how many CPUs a system contains, or how many buttons there are on the mouse.
  • Chapter 17 shows you how to modularize your programs using dynamic link libraries (DLLs). Windows can be thought of as an extensible operating system because of DLLs. A programmer can easily add capabilities that others can use by creating a DLL and publishing its interface. Windows itself places much of its functionality in DLLs.
  • Chapter 18 discusses some of the basics of the Component Object Model (COM). This will prepare us for the discussion in Chapter 19, of COM+ and Windows 2000.
  • Chapter 19 discusses the new COM+ and Windows 2000. This will prepare us for the discussion about Windows 2000 Distributed Network Architecture (DNA), which follows this chapter.
  • Chapter 20 discusses Windows 2000 Distributed Network Architecture (DNA). It covers the possibilities and gives a three-tiered architecture example.
  • Chapter 21 contains short discussions and examples on six miscellaneous topics: the registry, the event log, the Windows time model, error handling, structured exception handling, and the memory model.
  • Appendix A shows you how to compile the different types of code found in the book.
  • Appendix B contains information on contacting the authors via E-mail to ask questions and obtain free supplements and updates to this book.

Contacting the Author: Questions, Comments, and Version Changes

One thing about Microsoft is that it never stands still for very long. Its compilers and libraries are constantly changing. One of the goals for this book is that its code be as compatible as possible with existing and future releases of Microsoft compiler products. Another goal is to give you "investment-grade" knowledge—knowledge that does not lose its value over time, and that is transferable between as many different platforms as possible.

As things change, however, you need a way to get updates and corrections. You may also have questions, comments or suggestions for improving this book. If so, we would like to hear from you. You can use our free E-mail information server to get updates and supplements to this book. You can also send questions and comments via E-mail or U.S. mail. Please see Appendix B for instructions.

Updates

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020