00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "lfsprocs.h"
00022
00023
00024
00025
00026
00027 #define Dbg (DEBUG_TRACE_INITIALIZATION)
00028
00029
#undef MODULE_POOL_TAG
00030 #define MODULE_POOL_TAG ('IsfL')
00031
00032
#ifdef ALLOC_PRAGMA
00033
#pragma alloc_text(PAGE, LfsInitializeLogFileService)
00034
#endif
00035
00036 extern USHORT LfsUsaSeqNumber;
00037
00038
00039 BOOLEAN
00040 LfsInitializeLogFileService (
00041 )
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 {
00066 LARGE_INTEGER CurrentTime;
00067
00068
PAGED_CODE();
00069
00070
DebugTrace( +1,
Dbg,
"LfsInitializeLogFileService: Enter\n", 0 );
00071
00072
00073
00074
00075
00076
00077
if (
LfsData.
NodeTypeCode ==
LFS_NTC_DATA
00078 &&
LfsData.
NodeByteSize ==
sizeof(
LFS_DATA )
00079 &&
FlagOn(
LfsData.
Flags,
LFS_DATA_INITIALIZED )) {
00080
00081
DebugTrace( -1,
Dbg,
"LfsInitializeLogFileService: Exit -> %01x\n",
TRUE );
00082
00083
return TRUE;
00084 }
00085
00086
00087
00088
00089
00090 RtlZeroMemory( &
LfsData,
sizeof(
LFS_DATA ));
00091
00092
00093
00094
00095
00096
LfsData.
Flags =
LFS_DATA_INIT_FAILED;
00097
00098
00099
00100
00101
00102
LfsData.
NodeTypeCode =
LFS_NTC_DATA;
00103
LfsData.
NodeByteSize =
sizeof(
LFS_DATA );
00104
00105 InitializeListHead( &
LfsData.
LfcbLinks );
00106
00107
00108
00109
00110
00111
ExInitializeFastMutex( &
LfsData.
LfsDataLock );
00112
00113
00114
00115
00116
00117
00118
ExInitializeFastMutex( &
LfsData.
BufferLock );
00119
KeInitializeEvent( &
LfsData.
BufferNotification, NotificationEvent,
TRUE );
00120
LfsData.
Buffer1 =
LfsAllocatePoolNoRaise(
PagedPool,
LFS_BUFFER_SIZE );
00121
00122
if (
LfsData.
Buffer1 ==
NULL) {
00123
00124
return FALSE;
00125 }
00126
00127
LfsData.
Buffer2 =
LfsAllocatePoolNoRaise(
PagedPool,
LFS_BUFFER_SIZE );
00128
00129
00130
00131
00132
00133
if (
LfsData.
Buffer2 ==
NULL) {
00134
00135
LfsFreePool(
LfsData.
Buffer1 );
00136
LfsData.
Buffer1 =
NULL;
00137
return FALSE;
00138 }
00139
00140
00141
00142
00143
00144
ClearFlag(
LfsData.
Flags,
LFS_DATA_INIT_FAILED );
00145
SetFlag(
LfsData.
Flags,
LFS_DATA_INITIALIZED );
00146
00147
00148
00149
00150
00151
00152
KeQuerySystemTime( &CurrentTime );
00153
LfsUsaSeqNumber = (
USHORT) CurrentTime.LowPart;
00154
00155
DebugTrace( -1,
Dbg,
"LfsInitializeLogFileService: Exit -> %01x\n",
TRUE );
00156
00157
return TRUE;
00158 }