Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1990-2000 Microsoft Corporation
Module Name:
Cufat.cxx
Abstract:
This module contains run-time, global support for the FAT Conversion library (CUFAT). This support includes:
- creation of CLASS_DESCRIPTORs - Global objects
Author:
Ramon Juan San Andres (ramonsa) 23-Sep-1991
Environment:
User Mode
Notes:
--*/
#include <pch.cxx>
#include "ulib.hxx"
//
// Local prototypes
//
STATIC BOOLEAN DefineClassDescriptors( );
STATIC BOOLEAN UndefineClassDescriptors( );
extern "C" BOOLEAN InitializeCufat ( PVOID DllHandle, ULONG Reason, PCONTEXT Context );
BOOLEAN InitializeCufat ( PVOID DllHandle, ULONG Reason, PCONTEXT Context ) /*++
Routine Description:
Initialize Cufat by constructing and initializing all global objects. These include:
- all CLASS_DESCRIPTORs (class_cd)
Arguments:
None.
Return Value:
BOOLEAN - Returns TRUE if all global objects were succesfully constructed and initialized.
--*/
{ UNREFERENCED_PARAMETER( DllHandle ); UNREFERENCED_PARAMETER( Context );
#if defined( _AUTOCHECK_ ) || defined( _SETUP_LOADER_ )
UNREFERENCED_PARAMETER( Reason );
if (!DefineClassDescriptors()) { UndefineClassDescriptors(); DebugAbort( "Cufat initialization failed!!!\n" ); return( FALSE ); }
DebugPrint("CUFAT.DLL got attached.\n");
#else // _AUTOCHECK_ and _SETUP_LOADER_ not defined
STATIC ULONG count = 0;
switch (Reason) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH:
if (count > 0) { ++count; DebugPrintTrace(("CUFAT.DLL got attached %d times.\n", count)); return TRUE; }
if (!DefineClassDescriptors()) { UndefineClassDescriptors(); DebugAbort( "Cufat initialization failed!!!\n" ); return( FALSE ); }
DebugPrint("CUFAT.DLL got attached.\n");
count++; break;
case DLL_PROCESS_DETACH: case DLL_THREAD_DETACH:
if (count > 1) { --count; DebugPrintTrace(("CUFAT.DLL got detached. %d time(s) left.\n", count)); return TRUE; } if (count == 1) {
DebugPrint("CUFAT.DLL got detached.\n");
UndefineClassDescriptors(); count--; } else DebugPrint("CUFAT.DLL detached more than attached\n"); break; } #endif // _AUTOCHECK || _SETUP_LOADER_
return TRUE; }
DECLARE_CLASS( FAT_NTFS );
STATIC BOOLEAN DefineClassDescriptors( ) { if ( DEFINE_CLASS_DESCRIPTOR( FAT_NTFS ) && TRUE ) { return TRUE;
} else {
DebugPrint( "Could not initialize class descriptors!"); return FALSE; } }
STATIC BOOLEAN UndefineClassDescriptors( ) { UNDEFINE_CLASS_DESCRIPTOR( FAT_NTFS ); return TRUE; }
|