os/kernelhwsrv/kerneltest/f32test/plugins/version_2beta/trace/t_tracehook.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of the License "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// f32test\plugins\trace\t_tracehook.cpp
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
#include "t_tracehook.h"
sl@0
    19
#include <f32pluginutils.h>
sl@0
    20
sl@0
    21
_LIT(KTracePluginName, "A test plugin which logs all file server messages");
sl@0
    22
sl@0
    23
sl@0
    24
TPtrC GetFunctionName(TInt aFunction)
sl@0
    25
//
sl@0
    26
// Print number of alloc fails to complete a given function
sl@0
    27
//
sl@0
    28
	{
sl@0
    29
	switch (aFunction)
sl@0
    30
		{
sl@0
    31
		case EFsAddFileSystem: return _L("EFsAddFileSystem");
sl@0
    32
		case EFsRemoveFileSystem: return _L("EFsRemoveFileSystem");
sl@0
    33
		case EFsMountFileSystem: return _L("EFsMountFileSystem");
sl@0
    34
		case EFsNotifyChange: return _L("EFsNotifyChange");
sl@0
    35
		case EFsNotifyChangeCancel: return _L("EFsNotifyChangeCancel");
sl@0
    36
		case EFsDriveList: return _L("EFsDriveList");
sl@0
    37
		case EFsDrive: return _L("EFsDrive");
sl@0
    38
		case EFsVolume: return _L("EFsVolume");
sl@0
    39
		case EFsSetVolume: return _L("EFsSetVolume");
sl@0
    40
		case EFsSubst: return _L("EFsSubst");
sl@0
    41
		case EFsSetSubst: return _L("EFsSetSubst");
sl@0
    42
		case EFsRealName: return _L("EFsRealName");
sl@0
    43
		case EFsDefaultPath: return _L("EFsDefaultPath");
sl@0
    44
		case EFsSetDefaultPath: return _L("EFsSetDefaultPath");
sl@0
    45
		case EFsSessionPath: return _L("EFsSessionPath");
sl@0
    46
		case EFsSetSessionPath: return _L("EFsSetSessionPath");
sl@0
    47
		case EFsMkDir: return _L("EFsMkDir");
sl@0
    48
		case EFsRmDir: return _L("EFsRmDir");
sl@0
    49
		case EFsParse: return _L("EFsParse");
sl@0
    50
		case EFsDelete: return _L("EFsDelete");
sl@0
    51
		case EFsRename: return _L("EFsRename");
sl@0
    52
		case EFsReplace: return _L("EFsReplace");
sl@0
    53
		case EFsEntry: return _L("EFsEntry");
sl@0
    54
		case EFsSetEntry: return _L("EFsSetEntry");
sl@0
    55
		case EFsGetDriveName: return _L("EFsGetDriveName");
sl@0
    56
		case EFsSetDriveName: return _L("EFsSetDriveName");
sl@0
    57
		case EFsFormatSubClose: return _L("EFsFormatSubClose");
sl@0
    58
		case EFsDirSubClose: return _L("EFsDirSubClose");
sl@0
    59
		case EFsFileSubClose: return _L("EFsFileSubClose");
sl@0
    60
		case EFsRawSubClose: return _L("EFsRawSubClose");
sl@0
    61
		case EFsFileOpen: return _L("EFsFileOpen");
sl@0
    62
		case EFsFileCreate: return _L("EFsFileCreate");
sl@0
    63
		case EFsFileReplace: return _L("EFsFileReplace");
sl@0
    64
		case EFsFileTemp: return _L("EFsFileTemp");
sl@0
    65
		case EFsFileRead: return _L("EFsFileRead");
sl@0
    66
		case EFsFileWrite: return _L("EFsFileWrite");
sl@0
    67
		case EFsFileLock: return _L("EFsFileLock");
sl@0
    68
		case EFsFileUnLock: return _L("EFsFileUnLock");
sl@0
    69
		case EFsFileSeek: return _L("EFsFileSeek");
sl@0
    70
		case EFsFileFlush: return _L("EFsFileFlush");
sl@0
    71
		case EFsFileSize: return _L("EFsFileSize");
sl@0
    72
		case EFsFileSetSize: return _L("EFsFileSetSize");
sl@0
    73
		case EFsFileAtt: return _L("EFsFileAtt");
sl@0
    74
		case EFsFileSetAtt: return _L("EFsFileSetAtt");
sl@0
    75
		case EFsFileModified: return _L("EFsFileModified");
sl@0
    76
		case EFsFileSetModified: return _L("EFsFileSetModified");
sl@0
    77
		case EFsFileSet: return _L("EFsFileSet");
sl@0
    78
		case EFsFileChangeMode: return _L("EFsFileChangeMode");
sl@0
    79
		case EFsFileRename: return _L("EFsFileRename");
sl@0
    80
		case EFsDirOpen: return _L("EFsDirOpen");
sl@0
    81
		case EFsDirReadOne: return _L("EFsDirReadOne");
sl@0
    82
		case EFsDirReadPacked: return _L("EFsDirReadPacked");
sl@0
    83
		case EFsFormatOpen: return _L("EFsFormatOpen");
sl@0
    84
		case EFsFormatNext: return _L("EFsFormatNext");
sl@0
    85
		case EFsRawDiskOpen: return _L("EFsRawDiskOpen");
sl@0
    86
		case EFsRawDiskRead: return _L("EFsRawDiskRead");
sl@0
    87
		case EFsRawDiskWrite: return _L("EFsRawDiskWrite");
sl@0
    88
		case EFsResourceCountMarkStart: return _L("EFsResourceCountMarkStart");
sl@0
    89
		case EFsResourceCountMarkEnd: return _L("EFsResourceCountMarkEnd");
sl@0
    90
		case EFsResourceCount: return _L("EFsResourceCount");
sl@0
    91
		case EFsCheckDisk: return _L("EFsCheckDisk");
sl@0
    92
		case EFsGetShortName: return _L("EFsGetShortName");
sl@0
    93
		case EFsGetLongName: return _L("EFsGetLongName");
sl@0
    94
		case EFsIsFileOpen: return _L("EFsIsFileOpen");
sl@0
    95
		case EFsListOpenFiles: return _L("EFsListOpenFiles");
sl@0
    96
		case EFsGetNotifyUser: return _L("EFsGetNotifyUser");
sl@0
    97
		case EFsSetNotifyUser: return _L("EFsSetNotifyUser");
sl@0
    98
		case EFsIsFileInRom: return _L("EFsIsFileInRom");
sl@0
    99
		case EFsIsValidName: return _L("EFsIsValidName");
sl@0
   100
		case EFsDebugFunction: return _L("EFsDebugFunction");
sl@0
   101
		case EFsReadFileSection: return _L("EFsReadFileSection");
sl@0
   102
		case EFsNotifyChangeEx: return _L("EFsNotifyChangeEx");
sl@0
   103
		case EFsNotifyChangeCancelEx: return _L("EFsNotifyChangeCancelEx");
sl@0
   104
		case EFsDismountFileSystem: return _L("EFsDismountFileSystem");
sl@0
   105
		case EFsFileSystemName: return _L("EFsFileSystemName");
sl@0
   106
		case EFsScanDrive: return _L("EFsScanDrive");
sl@0
   107
		case EFsControlIo: return _L("EFsControlIo");
sl@0
   108
		case EFsLockDrive: return _L("EFsLockDrive");
sl@0
   109
		case EFsUnlockDrive: return _L("EFsUnlockDrive");
sl@0
   110
		case EFsClearPassword: return _L("EFsClearPassword");
sl@0
   111
		case EFsNotifyDiskSpace: return _L("EFsNotifyDiskSpace");
sl@0
   112
		case EFsNotifyDiskSpaceCancel: return _L("EFsNotifyDiskSpaceCancel");
sl@0
   113
		case EFsFileDrive: return _L("EFsFileDrive");
sl@0
   114
		case EFsRemountDrive: return _L("EFsRemountDrive");
sl@0
   115
		case EFsMountFileSystemScan: return _L("EFsMountFileSystemScan");
sl@0
   116
		case EFsSessionToPrivate: return _L("EFsSessionToPrivate");
sl@0
   117
		case EFsPrivatePath: return _L("EFsPrivatePath");
sl@0
   118
		case EFsCreatePrivatePath: return _L("EFsCreatePrivatePath");
sl@0
   119
		case EFsAddExtension: return _L("EFsAddExtension");
sl@0
   120
		case EFsMountExtension: return _L("EFsMountExtension");
sl@0
   121
		case EFsDismountExtension: return _L("EFsDismountExtension");
sl@0
   122
		case EFsRemoveExtension: return _L("EFsRemoveExtension");
sl@0
   123
		case EFsExtensionName: return _L("EFsExtensionName");
sl@0
   124
		case EFsStartupInitComplete: return _L("EFsStartupInitComplete");
sl@0
   125
		case EFsSetLocalDriveMapping: return _L("EFsSetLocalDriveMapping");
sl@0
   126
		case EFsFinaliseDrive: return _L("EFsFinaliseDrive");
sl@0
   127
		case EFsFileDuplicate: return _L("EFsFileDuplicate");
sl@0
   128
		case EFsFileAdopt: return _L("EFsFileAdopt");
sl@0
   129
		case EFsSwapFileSystem: return _L("EFsSwapFileSystem");
sl@0
   130
		case EFsErasePassword: return _L("EFsErasePassword");
sl@0
   131
		case EFsReserveDriveSpace: return _L("EFsReserveDriveSpace");
sl@0
   132
		case EFsGetReserveAccess: return _L("EFsGetReserveAccess");
sl@0
   133
		case EFsReleaseReserveAccess: return _L("EFsReleaseReserveAccess");
sl@0
   134
		case EFsFileName: return _L("EFsFileName");
sl@0
   135
		case EFsGetMediaSerialNumber: return _L("EFsGetMediaSerialNumber");
sl@0
   136
		case EFsFileFullName: return _L("EFsFileFullName");
sl@0
   137
		case EFsAddPlugin: return _L("EFsAddPlugin");
sl@0
   138
		case EFsRemovePlugin: return _L("EFsRemovePlugin");
sl@0
   139
		case EFsMountPlugin: return _L("EFsMountPlugin");
sl@0
   140
		case EFsDismountPlugin: return _L("EFsDismountPlugin");
sl@0
   141
		case EFsPluginName: return _L("EFsPluginName");
sl@0
   142
		case EFsPluginOpen: return _L("EFsPluginOpen");
sl@0
   143
		case EFsPluginSubClose: return _L("EFsPluginSubClose");
sl@0
   144
		case EFsPluginDoRequest: return _L("EFsPluginDoRequest");
sl@0
   145
		case EFsPluginDoControl: return _L("EFsPluginDoControl");
sl@0
   146
		case EFsPluginDoCancel: return _L("EFsPluginDoCancel");
sl@0
   147
		case EFsNotifyDismount: return _L("EFsNotifyDismount");
sl@0
   148
		case EFsNotifyDismountCancel: return _L("EFsNotifyDismountCancel");
sl@0
   149
		case EFsAllowDismount: return _L("EFsAllowDismount");
sl@0
   150
		case EFsSetStartupConfiguration: return _L("EFsSetStartupConfiguration");
sl@0
   151
		case EFsFileReadCancel: return _L("EFsFileReadCancel");
sl@0
   152
		case EFsAddCompositeMount: return _L("EFsAddCompositeMount");
sl@0
   153
		case EFsSetSessionFlags: return _L("EFsSetSessionFlags");
sl@0
   154
		case EFsSetSystemDrive: return _L("EFsSetSystemDrive");
sl@0
   155
		case EFsBlockMap: return _L("EFsBlockMap");
sl@0
   156
		case EFsUnclamp: return _L("EFsUnclamp");
sl@0
   157
		case EFsFileClamp: return _L("EFsFileClamp");
sl@0
   158
		case EFsQueryVolumeInfoExt: return _L("EFsQueryVolumeInfoExt");
sl@0
   159
		case EFsInitialisePropertiesFile: return _L("EFsInitialisePropertiesFile");
sl@0
   160
		case EFsFileWriteDirty: return _L("EFsFileWriteDirty");
sl@0
   161
		case EFsSynchroniseDriveThread: return _L("EFsSynchroniseDriveThread");
sl@0
   162
		default:
sl@0
   163
			return _L("Error unknown function");
sl@0
   164
		}
sl@0
   165
	}
sl@0
   166
/**
sl@0
   167
Leaving New function for the plugin
sl@0
   168
@internalComponent
sl@0
   169
*/
sl@0
   170
CTestTraceHook* CTestTraceHook::NewL()
sl@0
   171
	{
sl@0
   172
	return new(ELeave) CTestTraceHook;
sl@0
   173
	}
sl@0
   174
sl@0
   175
sl@0
   176
/**
sl@0
   177
Constructor for the plugin
sl@0
   178
@internalComponent
sl@0
   179
*/
sl@0
   180
CTestTraceHook::CTestTraceHook()
sl@0
   181
	{
sl@0
   182
	}
sl@0
   183
sl@0
   184
sl@0
   185
/**
sl@0
   186
The destructor for the test trace plugin hook. 
sl@0
   187
@internalComponent
sl@0
   188
*/
sl@0
   189
CTestTraceHook::~CTestTraceHook()
sl@0
   190
	{
sl@0
   191
	iFs.Close();
sl@0
   192
	}
sl@0
   193
sl@0
   194
/**
sl@0
   195
Initialise the trace plugin.
sl@0
   196
@internalComponent
sl@0
   197
*/
sl@0
   198
void CTestTraceHook::InitialiseL()
sl@0
   199
	{
sl@0
   200
	User::LeaveIfError(RegisterIntercept(EFsAddFileSystem				,	EPrePostIntercept));
sl@0
   201
	User::LeaveIfError(RegisterIntercept(EFsRemoveFileSystem			,	EPrePostIntercept));
sl@0
   202
	User::LeaveIfError(RegisterIntercept(EFsMountFileSystem				,	EPrePostIntercept));
sl@0
   203
	User::LeaveIfError(RegisterIntercept(EFsNotifyChange				,	EPrePostIntercept));
sl@0
   204
	User::LeaveIfError(RegisterIntercept(EFsNotifyChangeCancel			,	EPrePostIntercept));
sl@0
   205
	User::LeaveIfError(RegisterIntercept(EFsDriveList					,	EPrePostIntercept));
sl@0
   206
	User::LeaveIfError(RegisterIntercept(EFsDrive						,	EPrePostIntercept));
sl@0
   207
	User::LeaveIfError(RegisterIntercept(EFsVolume						,	EPrePostIntercept));
sl@0
   208
	User::LeaveIfError(RegisterIntercept(EFsSetVolume					,	EPrePostIntercept));
sl@0
   209
	User::LeaveIfError(RegisterIntercept(EFsSubst						,	EPrePostIntercept));
sl@0
   210
	User::LeaveIfError(RegisterIntercept(EFsSetSubst					,	EPrePostIntercept));
sl@0
   211
	User::LeaveIfError(RegisterIntercept(EFsRealName					,	EPrePostIntercept));
sl@0
   212
	User::LeaveIfError(RegisterIntercept(EFsDefaultPath					,	EPrePostIntercept));
sl@0
   213
	User::LeaveIfError(RegisterIntercept(EFsSetDefaultPath				,	EPrePostIntercept));
sl@0
   214
	User::LeaveIfError(RegisterIntercept(EFsSessionPath					,	EPrePostIntercept));
sl@0
   215
	User::LeaveIfError(RegisterIntercept(EFsSetSessionPath				,	EPrePostIntercept));
sl@0
   216
	User::LeaveIfError(RegisterIntercept(EFsMkDir						,	EPrePostIntercept));
sl@0
   217
	User::LeaveIfError(RegisterIntercept(EFsRmDir						,	EPrePostIntercept));
sl@0
   218
	User::LeaveIfError(RegisterIntercept(EFsParse						,	EPrePostIntercept));
sl@0
   219
	User::LeaveIfError(RegisterIntercept(EFsDelete						,	EPrePostIntercept));
sl@0
   220
	User::LeaveIfError(RegisterIntercept(EFsRename						,	EPrePostIntercept));
sl@0
   221
	User::LeaveIfError(RegisterIntercept(EFsReplace						,	EPrePostIntercept));
sl@0
   222
	User::LeaveIfError(RegisterIntercept(EFsEntry						,	EPrePostIntercept));
sl@0
   223
	User::LeaveIfError(RegisterIntercept(EFsSetEntry					,	EPrePostIntercept));
sl@0
   224
	User::LeaveIfError(RegisterIntercept(EFsGetDriveName				,	EPrePostIntercept));
sl@0
   225
	User::LeaveIfError(RegisterIntercept(EFsSetDriveName				,	EPrePostIntercept));
sl@0
   226
	User::LeaveIfError(RegisterIntercept(EFsFormatSubClose				,	EPrePostIntercept));
sl@0
   227
	User::LeaveIfError(RegisterIntercept(EFsDirSubClose					,	EPrePostIntercept));
sl@0
   228
	User::LeaveIfError(RegisterIntercept(EFsFileSubClose				,	EPrePostIntercept));
sl@0
   229
	User::LeaveIfError(RegisterIntercept(EFsRawSubClose					,	EPrePostIntercept));
sl@0
   230
	User::LeaveIfError(RegisterIntercept(EFsFileOpen					,	EPrePostIntercept));
sl@0
   231
	User::LeaveIfError(RegisterIntercept(EFsFileCreate					,	EPrePostIntercept));
sl@0
   232
	User::LeaveIfError(RegisterIntercept(EFsFileReplace					,	EPrePostIntercept));
sl@0
   233
	User::LeaveIfError(RegisterIntercept(EFsFileTemp					,	EPrePostIntercept));
sl@0
   234
	User::LeaveIfError(RegisterIntercept(EFsFileRead					,	EPrePostIntercept));
sl@0
   235
	User::LeaveIfError(RegisterIntercept(EFsFileWrite					,	EPrePostIntercept));
sl@0
   236
	User::LeaveIfError(RegisterIntercept(EFsFileLock					,	EPrePostIntercept));
sl@0
   237
	User::LeaveIfError(RegisterIntercept(EFsFileUnLock					,	EPrePostIntercept));
sl@0
   238
	User::LeaveIfError(RegisterIntercept(EFsFileSeek					,	EPrePostIntercept));
sl@0
   239
	User::LeaveIfError(RegisterIntercept(EFsFileFlush					,	EPrePostIntercept));
sl@0
   240
	User::LeaveIfError(RegisterIntercept(EFsFileSize					,	EPrePostIntercept));
sl@0
   241
	User::LeaveIfError(RegisterIntercept(EFsFileSetSize					,	EPrePostIntercept));
sl@0
   242
	User::LeaveIfError(RegisterIntercept(EFsFileAtt						,	EPrePostIntercept));
sl@0
   243
	User::LeaveIfError(RegisterIntercept(EFsFileSetAtt					,	EPrePostIntercept));
sl@0
   244
	User::LeaveIfError(RegisterIntercept(EFsFileModified				,	EPrePostIntercept));
sl@0
   245
	User::LeaveIfError(RegisterIntercept(EFsFileSetModified				,	EPrePostIntercept));
sl@0
   246
	User::LeaveIfError(RegisterIntercept(EFsFileSet						,	EPrePostIntercept));
sl@0
   247
	User::LeaveIfError(RegisterIntercept(EFsFileChangeMode				,	EPrePostIntercept));
sl@0
   248
	User::LeaveIfError(RegisterIntercept(EFsFileRename					,	EPrePostIntercept));
sl@0
   249
	User::LeaveIfError(RegisterIntercept(EFsDirOpen						,	EPrePostIntercept));
sl@0
   250
	User::LeaveIfError(RegisterIntercept(EFsDirReadOne					,	EPrePostIntercept));
sl@0
   251
	User::LeaveIfError(RegisterIntercept(EFsDirReadPacked				,	EPrePostIntercept));
sl@0
   252
	User::LeaveIfError(RegisterIntercept(EFsFormatOpen					,	EPrePostIntercept));
sl@0
   253
	User::LeaveIfError(RegisterIntercept(EFsFormatNext					,	EPrePostIntercept));
sl@0
   254
	User::LeaveIfError(RegisterIntercept(EFsRawDiskOpen					,	EPrePostIntercept));
sl@0
   255
	User::LeaveIfError(RegisterIntercept(EFsRawDiskRead					,	EPrePostIntercept));
sl@0
   256
	User::LeaveIfError(RegisterIntercept(EFsRawDiskWrite				,	EPrePostIntercept));
sl@0
   257
	User::LeaveIfError(RegisterIntercept(EFsResourceCountMarkStart		,	EPrePostIntercept));
sl@0
   258
	User::LeaveIfError(RegisterIntercept(EFsResourceCountMarkEnd		,	EPrePostIntercept));
sl@0
   259
	User::LeaveIfError(RegisterIntercept(EFsResourceCount				,	EPrePostIntercept));
sl@0
   260
	User::LeaveIfError(RegisterIntercept(EFsCheckDisk					,	EPrePostIntercept));
sl@0
   261
	User::LeaveIfError(RegisterIntercept(EFsGetShortName				,	EPrePostIntercept));
sl@0
   262
	User::LeaveIfError(RegisterIntercept(EFsGetLongName					,	EPrePostIntercept));
sl@0
   263
	User::LeaveIfError(RegisterIntercept(EFsIsFileOpen					,	EPrePostIntercept));
sl@0
   264
	User::LeaveIfError(RegisterIntercept(EFsListOpenFiles				,	EPrePostIntercept));
sl@0
   265
	User::LeaveIfError(RegisterIntercept(EFsGetNotifyUser				,	EPrePostIntercept));
sl@0
   266
	User::LeaveIfError(RegisterIntercept(EFsSetNotifyUser				,	EPrePostIntercept));
sl@0
   267
	User::LeaveIfError(RegisterIntercept(EFsIsFileInRom					,	EPrePostIntercept));
sl@0
   268
	User::LeaveIfError(RegisterIntercept(EFsIsValidName					,	EPrePostIntercept));
sl@0
   269
	User::LeaveIfError(RegisterIntercept(EFsDebugFunction				,	EPrePostIntercept));
sl@0
   270
	User::LeaveIfError(RegisterIntercept(EFsReadFileSection				,	EPrePostIntercept));
sl@0
   271
	User::LeaveIfError(RegisterIntercept(EFsNotifyChangeEx				,	EPrePostIntercept));
sl@0
   272
	User::LeaveIfError(RegisterIntercept(EFsNotifyChangeCancelEx		,	EPrePostIntercept));
sl@0
   273
	User::LeaveIfError(RegisterIntercept(EFsDismountFileSystem			,	EPrePostIntercept));
sl@0
   274
	User::LeaveIfError(RegisterIntercept(EFsFileSystemName				,	EPrePostIntercept));
sl@0
   275
	User::LeaveIfError(RegisterIntercept(EFsScanDrive					,	EPrePostIntercept));
sl@0
   276
	User::LeaveIfError(RegisterIntercept(EFsControlIo					,	EPrePostIntercept));
sl@0
   277
	User::LeaveIfError(RegisterIntercept(EFsLockDrive					,	EPrePostIntercept));
sl@0
   278
	User::LeaveIfError(RegisterIntercept(EFsUnlockDrive					,	EPrePostIntercept));
sl@0
   279
	User::LeaveIfError(RegisterIntercept(EFsClearPassword				,	EPrePostIntercept));
sl@0
   280
	User::LeaveIfError(RegisterIntercept(EFsNotifyDiskSpace				,	EPrePostIntercept));
sl@0
   281
	User::LeaveIfError(RegisterIntercept(EFsNotifyDiskSpaceCancel		,	EPrePostIntercept));
sl@0
   282
	User::LeaveIfError(RegisterIntercept(EFsFileDrive					,	EPrePostIntercept));
sl@0
   283
	User::LeaveIfError(RegisterIntercept(EFsRemountDrive				,	EPrePostIntercept));
sl@0
   284
	User::LeaveIfError(RegisterIntercept(EFsMountFileSystemScan			,	EPrePostIntercept));
sl@0
   285
	User::LeaveIfError(RegisterIntercept(EFsSessionToPrivate			,	EPrePostIntercept));
sl@0
   286
	User::LeaveIfError(RegisterIntercept(EFsPrivatePath					,	EPrePostIntercept));
sl@0
   287
	User::LeaveIfError(RegisterIntercept(EFsCreatePrivatePath			,	EPrePostIntercept));
sl@0
   288
	User::LeaveIfError(RegisterIntercept(EFsAddExtension				,	EPrePostIntercept));
sl@0
   289
	User::LeaveIfError(RegisterIntercept(EFsMountExtension				,	EPrePostIntercept));
sl@0
   290
	User::LeaveIfError(RegisterIntercept(EFsDismountExtension			,	EPrePostIntercept));
sl@0
   291
	User::LeaveIfError(RegisterIntercept(EFsRemoveExtension				,	EPrePostIntercept));
sl@0
   292
	User::LeaveIfError(RegisterIntercept(EFsExtensionName				,	EPrePostIntercept));
sl@0
   293
	User::LeaveIfError(RegisterIntercept(EFsStartupInitComplete			,	EPrePostIntercept));
sl@0
   294
	User::LeaveIfError(RegisterIntercept(EFsSetLocalDriveMapping		,	EPrePostIntercept));
sl@0
   295
	User::LeaveIfError(RegisterIntercept(EFsFinaliseDrive				,	EPrePostIntercept));
sl@0
   296
	User::LeaveIfError(RegisterIntercept(EFsFileDuplicate				,	EPrePostIntercept));
sl@0
   297
	User::LeaveIfError(RegisterIntercept(EFsFileAdopt					,	EPrePostIntercept));
sl@0
   298
	User::LeaveIfError(RegisterIntercept(EFsSwapFileSystem				,	EPrePostIntercept));
sl@0
   299
	User::LeaveIfError(RegisterIntercept(EFsErasePassword				,	EPrePostIntercept));
sl@0
   300
	User::LeaveIfError(RegisterIntercept(EFsReserveDriveSpace			,	EPrePostIntercept));
sl@0
   301
	User::LeaveIfError(RegisterIntercept(EFsGetReserveAccess			,	EPrePostIntercept));
sl@0
   302
	User::LeaveIfError(RegisterIntercept(EFsReleaseReserveAccess		,	EPrePostIntercept));
sl@0
   303
	User::LeaveIfError(RegisterIntercept(EFsFileName					,	EPrePostIntercept));
sl@0
   304
	User::LeaveIfError(RegisterIntercept(EFsGetMediaSerialNumber		,	EPrePostIntercept));
sl@0
   305
	User::LeaveIfError(RegisterIntercept(EFsFileFullName				,	EPrePostIntercept));
sl@0
   306
	User::LeaveIfError(RegisterIntercept(EFsAddPlugin					,	EPrePostIntercept));
sl@0
   307
	User::LeaveIfError(RegisterIntercept(EFsRemovePlugin				,	EPrePostIntercept));
sl@0
   308
	User::LeaveIfError(RegisterIntercept(EFsMountPlugin					,	EPrePostIntercept));
sl@0
   309
	User::LeaveIfError(RegisterIntercept(EFsPluginName					,	EPrePostIntercept));
sl@0
   310
	User::LeaveIfError(RegisterIntercept(EFsPluginOpen					,	EPrePostIntercept));
sl@0
   311
	User::LeaveIfError(RegisterIntercept(EFsPluginSubClose				,	EPrePostIntercept));
sl@0
   312
	User::LeaveIfError(RegisterIntercept(EFsPluginDoRequest				,	EPrePostIntercept));
sl@0
   313
	User::LeaveIfError(RegisterIntercept(EFsPluginDoControl				,	EPrePostIntercept));
sl@0
   314
	User::LeaveIfError(RegisterIntercept(EFsPluginDoCancel				,	EPrePostIntercept));
sl@0
   315
	User::LeaveIfError(RegisterIntercept(EFsNotifyDismount				,	EPrePostIntercept));
sl@0
   316
	User::LeaveIfError(RegisterIntercept(EFsNotifyDismountCancel		,	EPrePostIntercept));
sl@0
   317
	User::LeaveIfError(RegisterIntercept(EFsAllowDismount				,	EPrePostIntercept));
sl@0
   318
	User::LeaveIfError(RegisterIntercept(EFsSetStartupConfiguration		,	EPrePostIntercept));
sl@0
   319
	User::LeaveIfError(RegisterIntercept(EFsFileReadCancel				,	EPrePostIntercept));
sl@0
   320
	User::LeaveIfError(RegisterIntercept(EFsAddCompositeMount			,	EPrePostIntercept));
sl@0
   321
	User::LeaveIfError(RegisterIntercept(EFsSetSessionFlags				,	EPrePostIntercept));
sl@0
   322
	User::LeaveIfError(RegisterIntercept(EFsSetSystemDrive				,	EPrePostIntercept));
sl@0
   323
	User::LeaveIfError(RegisterIntercept(EFsBlockMap					,	EPrePostIntercept));
sl@0
   324
	User::LeaveIfError(RegisterIntercept(EFsUnclamp						,	EPrePostIntercept));
sl@0
   325
	User::LeaveIfError(RegisterIntercept(EFsFileClamp					,	EPrePostIntercept));
sl@0
   326
	User::LeaveIfError(RegisterIntercept(EFsQueryVolumeInfoExt			,	EPrePostIntercept));
sl@0
   327
	User::LeaveIfError(RegisterIntercept(EFsInitialisePropertiesFile	,	EPrePostIntercept));
sl@0
   328
	User::LeaveIfError(RegisterIntercept(EFsFileWriteDirty				,	EPrePostIntercept));
sl@0
   329
	User::LeaveIfError(RegisterIntercept(EFsSynchroniseDriveThread		,	EPrePostIntercept));
sl@0
   330
sl@0
   331
sl@0
   332
sl@0
   333
	User::LeaveIfError(iFs.Connect());
sl@0
   334
	}
sl@0
   335
sl@0
   336
/**
sl@0
   337
@internalComponent
sl@0
   338
*/
sl@0
   339
TInt CTestTraceHook::DoRequestL(TFsPluginRequest& aRequest)
sl@0
   340
	{
sl@0
   341
	TInt err = KErrNone;
sl@0
   342
sl@0
   343
	TInt function = aRequest.Function();
sl@0
   344
	
sl@0
   345
	iDrvNumber = aRequest.DriveNumber();
sl@0
   346
sl@0
   347
	TPtrC functionName = GetFunctionName(function);
sl@0
   348
	
sl@0
   349
sl@0
   350
	if (!aRequest.IsPostOperation())
sl@0
   351
		{
sl@0
   352
		iPreIntercepts++;
sl@0
   353
		TFileName name;
sl@0
   354
sl@0
   355
		TInt nameRet = GetName(&aRequest, name);
sl@0
   356
		if (nameRet == KErrNotSupported)
sl@0
   357
			nameRet = GetPath(&aRequest, name);
sl@0
   358
sl@0
   359
		TFileName newName;
sl@0
   360
		TInt newNameRet = GetNewName(&aRequest, newName);
sl@0
   361
sl@0
   362
		TInt len;
sl@0
   363
		TInt pos;
sl@0
   364
		TInt fileAccessRet = GetFileAccessInfo(&aRequest, len, pos);
sl@0
   365
sl@0
   366
		if (newNameRet == KErrNone)
sl@0
   367
			RDebug::Print(_L(">%S\t(%S,%S)"), &functionName, &name, &newName);
sl@0
   368
		else if (fileAccessRet == KErrNone)
sl@0
   369
			RDebug::Print(_L(">%S\t%08X@%08X\t(%S)"), &functionName, len, pos, &name);
sl@0
   370
		else if (nameRet == KErrNone)
sl@0
   371
			RDebug::Print(_L(">%S\t(%S)"), &functionName, &name);
sl@0
   372
		else
sl@0
   373
			RDebug::Print(_L(">%S"), &functionName);
sl@0
   374
		}
sl@0
   375
	else
sl@0
   376
		{
sl@0
   377
		iPostIntercepts++;
sl@0
   378
		
sl@0
   379
		// we should never see any internal file caching requests
sl@0
   380
		ASSERT(function != EFsFileWriteDirty);
sl@0
   381
sl@0
   382
		// for EFsFileSubClose, check we can read the file name & use the request's message handle
sl@0
   383
		if (function == EFsFileSubClose)
sl@0
   384
			{
sl@0
   385
			TFileName fileName;
sl@0
   386
#ifdef _DEBUG
sl@0
   387
	        TInt r = 
sl@0
   388
#endif
sl@0
   389
			GetName( &aRequest, fileName);
sl@0
   390
			ASSERT(r == KErrNone);
sl@0
   391
			// get process id (uses message handle)
sl@0
   392
			TUid processId = aRequest.Message().Identity();
sl@0
   393
            RDebug::Print(_L("<%S\t(%S), PID %X"),&functionName, &fileName, processId.iUid);
sl@0
   394
			}
sl@0
   395
		else
sl@0
   396
			{
sl@0
   397
			RDebug::Print(_L("<%S"), &functionName);
sl@0
   398
			}
sl@0
   399
		}
sl@0
   400
sl@0
   401
	return err;
sl@0
   402
	}
sl@0
   403
sl@0
   404
sl@0
   405
sl@0
   406
sl@0
   407
/**
sl@0
   408
@internalComponent
sl@0
   409
*/
sl@0
   410
TInt CTestTraceHook::TracePluginName(TDes& aName)
sl@0
   411
	{
sl@0
   412
	aName = KTracePluginName;
sl@0
   413
	return KErrNone;
sl@0
   414
	}
sl@0
   415
sl@0
   416
sl@0
   417
sl@0
   418
sl@0
   419
//factory functions
sl@0
   420
sl@0
   421
class CTraceHookFactory : public CFsPluginFactory
sl@0
   422
	{
sl@0
   423
public:
sl@0
   424
	CTraceHookFactory();
sl@0
   425
	virtual TInt Install();			
sl@0
   426
	virtual CFsPlugin* NewPluginL();
sl@0
   427
	virtual CFsPlugin* NewPluginConnL();
sl@0
   428
	virtual TInt UniquePosition();
sl@0
   429
	};
sl@0
   430
sl@0
   431
/**
sl@0
   432
Constructor for the plugin factory
sl@0
   433
@internalComponent
sl@0
   434
*/
sl@0
   435
CTraceHookFactory::CTraceHookFactory()
sl@0
   436
	{
sl@0
   437
	}
sl@0
   438
sl@0
   439
/**
sl@0
   440
Install function for the plugin factory
sl@0
   441
@internalComponent
sl@0
   442
*/
sl@0
   443
TInt CTraceHookFactory::Install()
sl@0
   444
	{
sl@0
   445
	iSupportedDrives = KPluginAutoAttach;
sl@0
   446
sl@0
   447
	_LIT(KTraceHookName,"TraceHook");
sl@0
   448
	return(SetName(&KTraceHookName));
sl@0
   449
	}
sl@0
   450
sl@0
   451
/**
sl@0
   452
@internalComponent
sl@0
   453
*/
sl@0
   454
TInt CTraceHookFactory::UniquePosition()
sl@0
   455
	{
sl@0
   456
	return(0x1EC);
sl@0
   457
	}
sl@0
   458
sl@0
   459
/**
sl@0
   460
Plugin factory function
sl@0
   461
@internalComponent
sl@0
   462
*/
sl@0
   463
CFsPlugin* CTraceHookFactory::NewPluginL()
sl@0
   464
sl@0
   465
	{
sl@0
   466
	return CTestTraceHook::NewL();
sl@0
   467
	}
sl@0
   468
sl@0
   469
/**
sl@0
   470
Plugin factory function
sl@0
   471
@internalComponent
sl@0
   472
*/
sl@0
   473
CFsPlugin* CTraceHookFactory::NewPluginConnL()
sl@0
   474
sl@0
   475
	{
sl@0
   476
	return CTestTraceHook::NewL();
sl@0
   477
	}
sl@0
   478
sl@0
   479
/**
sl@0
   480
Create a new Plugin
sl@0
   481
@internalComponent
sl@0
   482
*/
sl@0
   483
extern "C" {
sl@0
   484
sl@0
   485
EXPORT_C CFsPluginFactory* CreateFileSystem()
sl@0
   486
	{
sl@0
   487
	return(new CTraceHookFactory());
sl@0
   488
	}
sl@0
   489
}
sl@0
   490