home *** CD-ROM | disk | FTP | other *** search
- /*
- TESTHAND.C -- Test driver for HANDLES.H and HANDLES.C
-
- From Chapter 5 of "Undocumented Windows" (Addison-Wesley 1992)
- by Andrew Schulman, Dave Maxey and Matt Pietrek
-
- Build using: WINIOBC TESTHAND HANDLES (for Borland C++ v3.00)
- WINIOMS TESTHAND HANDLES (for Microsoft C/SDK)
- */
-
- #include <windows.h>
- #include <stdlib.h>
- #include <assert.h>
- #include "winio.h"
- #include "handles.h"
-
- main()
- {
- extern HANDLE __hInst; // in ARGCARGV.C
- HANDLE hTask, hModule, hModule2, hInstance, PSP;
-
- winio_about("TESTHAND"
- "\nTest driver for HANDLES.H and HANDLES.C"
- "\n\nFrom Chapter 5 of"
- "\n\"Undocumented Windows\" (Addison-Wesley, 1992)"
- "\nby Andrew Schulman, David Maxey and Matt Pietrek"
- );
-
- printf("Windows %d.%02d %s mode (%s)\n",
- LOBYTE(GetVersion()), HIBYTE(GetVersion()),
- (GetWinFlags() & WF_STANDARD) ? "Standard" : "Enhanced",
- (GetSystemMetrics(SM_DEBUG)) ? "DEBUG" : "RETAIL");
-
- hTask = GetCurrentTask();
- printf("hTask = %04x\n", hTask);
-
- hInstance = HINSTANCE_FROM_HTASK(hTask);
- printf("hInstance = %04x\n", hInstance);
- assert(hInstance == __hInst);
-
- hModule = HMODULE_FROM_HTASK(hTask);
- hModule2 = HMODULE_FROM_HINSTANCE(hInstance);
- printf("hModule = %04x\n", hModule);
- assert(hModule == hModule2);
-
- PSP = PSP_FROM_HTASK(hTask);
- printf("PSP = %04x\n", PSP);
- assert(PSP == GetCurrentPDB());
-
- assert(hTask_from_hInstance(hInstance) == hTask);
- assert(PSP_FROM_HINSTANCE(hInstance) == PSP);
- assert(hTask_from_PSP(PSP) == hTask);
- assert(HINSTANCE_FROM_PSP(PSP) == hInstance);
-
- assert(IsValidModuleHandle(GetCurrentModule()));
- assert(IsValidPSP(GetCurrentPDB()));
- assert(IsValidTask(GetCurrentTask()));
-
- return 0;
- }
-
-