95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
| //////////////////////////////////////////////////////////////////////////////
 | |
| //
 | |
| //  Detours Test Program (testapi.cpp of testapi.exe)
 | |
| //
 | |
| //  Microsoft Research Detours Package
 | |
| //
 | |
| //  Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| //
 | |
| #include "trcapi.cpp"
 | |
| 
 | |
| #if (_MSC_VER < 1299)
 | |
| typedef ULONG * PULONG_PTR;
 | |
| typedef ULONG ULONG_PTR;
 | |
| typedef LONG * PLONG_PTR;
 | |
| typedef LONG LONG_PTR;
 | |
| #endif
 | |
| 
 | |
| VOID SyelogOpen(PCSTR pszIdentifier, BYTE nFacility)
 | |
| {
 | |
|     (void)pszIdentifier;
 | |
|     (void)nFacility;
 | |
| }
 | |
| 
 | |
| VOID SyelogExV(BOOL fTerminate, BYTE nSeverity, PCSTR pszMsgf, va_list args)
 | |
| {
 | |
|     (void)fTerminate;
 | |
| 
 | |
|     CHAR szBuffer[1024];
 | |
|     PCHAR psz = szBuffer;
 | |
|     BOOL fLf = FALSE;
 | |
| 
 | |
|     StringCchPrintfA(psz, szBuffer + sizeof(szBuffer) - psz, "--.%02x: ", nSeverity);
 | |
|     while (*psz) {
 | |
|         psz++;
 | |
|     }
 | |
| 
 | |
|     StringCchVPrintfA(psz, szBuffer + sizeof(szBuffer) - psz, pszMsgf, args);
 | |
|     for (psz = szBuffer; *psz; psz++) {
 | |
|         if (*psz == '\n') {
 | |
|             if (fLf) {
 | |
|                 *psz = '\0';
 | |
|                 break;
 | |
|             }
 | |
|             fLf = TRUE;
 | |
|         }
 | |
|     }
 | |
|     if (!fLf) {
 | |
|         *psz++ = '\n';
 | |
|         *psz = '\0';
 | |
|     }
 | |
|     printf("%s", szBuffer);
 | |
|     Real_OutputDebugStringA(szBuffer);
 | |
| }
 | |
| 
 | |
| VOID SyelogV(BYTE nSeverity, PCSTR pszMsgf, va_list args)
 | |
| {
 | |
|     SyelogExV(FALSE, nSeverity, pszMsgf, args);
 | |
| }
 | |
| 
 | |
| VOID Syelog(BYTE nSeverity, PCSTR pszMsgf, ...)
 | |
| {
 | |
|     va_list args;
 | |
|     va_start(args, pszMsgf);
 | |
|     SyelogExV(FALSE, nSeverity, pszMsgf, args);
 | |
|     va_end(args);
 | |
| }
 | |
| 
 | |
| VOID SyelogEx(BOOL fTerminate, BYTE nSeverity, PCSTR pszMsgf, ...)
 | |
| {
 | |
|     va_list args;
 | |
|     va_start(args, pszMsgf);
 | |
|     SyelogExV(fTerminate, nSeverity, pszMsgf, args);
 | |
|     va_end(args);
 | |
| }
 | |
| 
 | |
| VOID SyelogClose(BOOL fTerminate)
 | |
| {
 | |
|     (void)fTerminate;
 | |
| }
 | |
| 
 | |
| DWORD main(int argc, char **argv)
 | |
| {
 | |
|     (void)argc;
 | |
|     (void)argv;
 | |
| 
 | |
|     printf("testapi: Starting\n");
 | |
|     ProcessAttach(NULL);
 | |
|     Sleep(100);
 | |
|     ProcessDetach(NULL);
 | |
| 
 | |
|     return 0;
 | |
| }
 | |
| //
 | |
| //////////////////////////////////////////////////////////////////////////////
 |