|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
init.c
Abstract:
This module provides the main cluster initialization.
Author:
John Vert (jvert) 6/5/1996
Revision History:
--*/
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include "clusrtl.h"
#define MEM_LEAKS 1
#define EVENT_LEAKS 1
#define KEY_LEAKS 1
#define HEAP_SIGNATURE 'PAEH'
typedef struct _MEM_HDR { DWORD Signature; PVOID CallersAddress; PVOID CallersCaller; } MEM_HDR, *PMEM_HDR;
#ifdef MEM_LEAKS
HLOCAL WINAPI CheckLocalAlloc( UINT uFlags, UINT uBytes ) { HLOCAL memory; PMEM_HDR memHdr; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
memHdr = LocalAlloc( uFlags, uBytes + sizeof(MEM_HDR) ); if ( !memHdr ) { return NULL; }
memHdr->Signature = HEAP_SIGNATURE; memHdr->CallersAddress = callersAddress; memHdr->CallersCaller = callersCaller;
return(memHdr+1); }
HLOCAL WINAPI CheckLocalFree( HLOCAL hMem ) { PMEM_HDR memHdr = hMem;
if ( memHdr ) { --memHdr; if ( memHdr->Signature != HEAP_SIGNATURE ) { memHdr++; } }
return( LocalFree(memHdr) ); }
#endif // MEM_LEAKS
#ifdef EVENT_LEAKS
//WINBASEAPI
HANDLE WINAPI CheckCreateEventA( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName ) { HANDLE handle; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
handle = CreateEventA( lpEventAttributes, bManualReset, bInitialState, lpName );
ClRtlLogPrint( "[TEST] CreateEvent returns handle %1!lx!, called from %2!lx! and %3!lx!\n", handle, callersAddress, callersCaller );
return(handle);
} // CheckCreateEventA
//WINBASEAPI
HANDLE WINAPI CheckCreateEventW( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName ) { HANDLE handle; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
handle = CreateEventW( lpEventAttributes, bManualReset, bInitialState, lpName );
ClRtlLogPrint( "[TEST] CreateEventW returns handle %1!lx!, called from %2!lx! and %3!lx!\n", handle, callersAddress, callersCaller );
return(handle);
} // CheckCreateEventW
#endif // EVENT_LEAKS
#ifdef KEY_LEAKS
//WINADVAPI
LONG APIENTRY CheckRegOpenKeyA( HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegOpenKeyA( hKey, lpSubKey, phkResult );
if ( status ) { ClRtlLogPrint( "[TEST] RegOpenKey returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller ); }
return(status);
} // CheckRegOpenKeyA
//WINADVAPI
LONG APIENTRY CheckRegOpenKeyW( HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegOpenKeyW( hKey, lpSubKey, phkResult );
if ( status ) { ClRtlLogPrint( "[TEST] RegOpenKeyW returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller ); }
return(status);
} // CheckRegOpenKeyW
//WINADVAPI
LONG APIENTRY CheckRegOpenKeyExA( HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegOpenKeyExA( hKey, lpSubKey, ulOptions, samDesired, phkResult );
if ( status ) { ClRtlLogPrint( "[TEST] RegOpenKeyEx returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller ); }
return(status);
} // CheckRegOpenKeyExA
//WINADVAPI
LONG APIENTRY CheckRegOpenKeyExW( HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegOpenKeyExW( hKey, lpSubKey, ulOptions, samDesired, phkResult );
if ( status ) { ClRtlLogPrint( "[TEST] RegOpenKeyExW returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller ); }
return(status);
} // CheckRegOpenKeyExW
//WINADVAPI
LONG APIENTRY CheckRegCreateKeyA( HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegCreateKeyA( hKey, lpSubKey, phkResult );
if ( status ) { ClRtlLogPrint( "[TEST] RegCreateKey returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller ); }
return(status);
} // CheckRegCreateKeyA
//WINADVAPI
LONG APIENTRY CheckRegCreateKeyW( HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegCreateKeyW( hKey, lpSubKey, phkResult );
if ( status ) { ClRtlLogPrint( "[TEST] RegCreateKeyW returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller ); }
return(status);
} // CheckRegCreateKeyW
//WINADVAPI
LONG APIENTRY CheckRegCreateKeyExA( HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegCreateKeyExA( hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition );
if ( status ) { ClRtlLogPrint( "[TEST] RegCreateKeyEx returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller ); }
return(status);
} // CheckRegCreateKeyExA
//WINADVAPI
LONG APIENTRY CheckRegCreateKeyExW( HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
status = RegCreateKeyExW( hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition );
ClRtlLogPrint( "[TEST] RegCreateKeyExW returns key %1!lx!, called from %2!lx! and %3!lx!\n", *phkResult, callersAddress, callersCaller );
return(status);
} // CheckRegCreateKeyExW
//WINADVAPI
LONG APIENTRY CheckRegCloseKey( HKEY hKey ) { LONG status; PVOID callersAddress; PVOID callersCaller;
RtlGetCallersAddress( &callersAddress, &callersCaller );
ClRtlLogPrint( "[TEST] RegCloseKey for handle %1!lx! called from %2!lx! and %3!lx!\n", hKey, callersAddress, callersCaller );
status = RegCloseKey( hKey );
return(status);
} // CheckRegCloseKey
#endif // KEY_LEAKS
|