os/kernelhwsrv/kerneltest/f32test/plugins/version_2beta/trace/t_tracehook.cpp
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/kernelhwsrv/kerneltest/f32test/plugins/version_2beta/trace/t_tracehook.cpp	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,490 @@
     1.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +// All rights reserved.
     1.6 +// This component and the accompanying materials are made available
     1.7 +// under the terms of the License "Eclipse Public License v1.0"
     1.8 +// which accompanies this distribution, and is available
     1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.10 +//
    1.11 +// Initial Contributors:
    1.12 +// Nokia Corporation - initial contribution.
    1.13 +//
    1.14 +// Contributors:
    1.15 +//
    1.16 +// Description:
    1.17 +// f32test\plugins\trace\t_tracehook.cpp
    1.18 +// 
    1.19 +//
    1.20 +
    1.21 +#include "t_tracehook.h"
    1.22 +#include <f32pluginutils.h>
    1.23 +
    1.24 +_LIT(KTracePluginName, "A test plugin which logs all file server messages");
    1.25 +
    1.26 +
    1.27 +TPtrC GetFunctionName(TInt aFunction)
    1.28 +//
    1.29 +// Print number of alloc fails to complete a given function
    1.30 +//
    1.31 +	{
    1.32 +	switch (aFunction)
    1.33 +		{
    1.34 +		case EFsAddFileSystem: return _L("EFsAddFileSystem");
    1.35 +		case EFsRemoveFileSystem: return _L("EFsRemoveFileSystem");
    1.36 +		case EFsMountFileSystem: return _L("EFsMountFileSystem");
    1.37 +		case EFsNotifyChange: return _L("EFsNotifyChange");
    1.38 +		case EFsNotifyChangeCancel: return _L("EFsNotifyChangeCancel");
    1.39 +		case EFsDriveList: return _L("EFsDriveList");
    1.40 +		case EFsDrive: return _L("EFsDrive");
    1.41 +		case EFsVolume: return _L("EFsVolume");
    1.42 +		case EFsSetVolume: return _L("EFsSetVolume");
    1.43 +		case EFsSubst: return _L("EFsSubst");
    1.44 +		case EFsSetSubst: return _L("EFsSetSubst");
    1.45 +		case EFsRealName: return _L("EFsRealName");
    1.46 +		case EFsDefaultPath: return _L("EFsDefaultPath");
    1.47 +		case EFsSetDefaultPath: return _L("EFsSetDefaultPath");
    1.48 +		case EFsSessionPath: return _L("EFsSessionPath");
    1.49 +		case EFsSetSessionPath: return _L("EFsSetSessionPath");
    1.50 +		case EFsMkDir: return _L("EFsMkDir");
    1.51 +		case EFsRmDir: return _L("EFsRmDir");
    1.52 +		case EFsParse: return _L("EFsParse");
    1.53 +		case EFsDelete: return _L("EFsDelete");
    1.54 +		case EFsRename: return _L("EFsRename");
    1.55 +		case EFsReplace: return _L("EFsReplace");
    1.56 +		case EFsEntry: return _L("EFsEntry");
    1.57 +		case EFsSetEntry: return _L("EFsSetEntry");
    1.58 +		case EFsGetDriveName: return _L("EFsGetDriveName");
    1.59 +		case EFsSetDriveName: return _L("EFsSetDriveName");
    1.60 +		case EFsFormatSubClose: return _L("EFsFormatSubClose");
    1.61 +		case EFsDirSubClose: return _L("EFsDirSubClose");
    1.62 +		case EFsFileSubClose: return _L("EFsFileSubClose");
    1.63 +		case EFsRawSubClose: return _L("EFsRawSubClose");
    1.64 +		case EFsFileOpen: return _L("EFsFileOpen");
    1.65 +		case EFsFileCreate: return _L("EFsFileCreate");
    1.66 +		case EFsFileReplace: return _L("EFsFileReplace");
    1.67 +		case EFsFileTemp: return _L("EFsFileTemp");
    1.68 +		case EFsFileRead: return _L("EFsFileRead");
    1.69 +		case EFsFileWrite: return _L("EFsFileWrite");
    1.70 +		case EFsFileLock: return _L("EFsFileLock");
    1.71 +		case EFsFileUnLock: return _L("EFsFileUnLock");
    1.72 +		case EFsFileSeek: return _L("EFsFileSeek");
    1.73 +		case EFsFileFlush: return _L("EFsFileFlush");
    1.74 +		case EFsFileSize: return _L("EFsFileSize");
    1.75 +		case EFsFileSetSize: return _L("EFsFileSetSize");
    1.76 +		case EFsFileAtt: return _L("EFsFileAtt");
    1.77 +		case EFsFileSetAtt: return _L("EFsFileSetAtt");
    1.78 +		case EFsFileModified: return _L("EFsFileModified");
    1.79 +		case EFsFileSetModified: return _L("EFsFileSetModified");
    1.80 +		case EFsFileSet: return _L("EFsFileSet");
    1.81 +		case EFsFileChangeMode: return _L("EFsFileChangeMode");
    1.82 +		case EFsFileRename: return _L("EFsFileRename");
    1.83 +		case EFsDirOpen: return _L("EFsDirOpen");
    1.84 +		case EFsDirReadOne: return _L("EFsDirReadOne");
    1.85 +		case EFsDirReadPacked: return _L("EFsDirReadPacked");
    1.86 +		case EFsFormatOpen: return _L("EFsFormatOpen");
    1.87 +		case EFsFormatNext: return _L("EFsFormatNext");
    1.88 +		case EFsRawDiskOpen: return _L("EFsRawDiskOpen");
    1.89 +		case EFsRawDiskRead: return _L("EFsRawDiskRead");
    1.90 +		case EFsRawDiskWrite: return _L("EFsRawDiskWrite");
    1.91 +		case EFsResourceCountMarkStart: return _L("EFsResourceCountMarkStart");
    1.92 +		case EFsResourceCountMarkEnd: return _L("EFsResourceCountMarkEnd");
    1.93 +		case EFsResourceCount: return _L("EFsResourceCount");
    1.94 +		case EFsCheckDisk: return _L("EFsCheckDisk");
    1.95 +		case EFsGetShortName: return _L("EFsGetShortName");
    1.96 +		case EFsGetLongName: return _L("EFsGetLongName");
    1.97 +		case EFsIsFileOpen: return _L("EFsIsFileOpen");
    1.98 +		case EFsListOpenFiles: return _L("EFsListOpenFiles");
    1.99 +		case EFsGetNotifyUser: return _L("EFsGetNotifyUser");
   1.100 +		case EFsSetNotifyUser: return _L("EFsSetNotifyUser");
   1.101 +		case EFsIsFileInRom: return _L("EFsIsFileInRom");
   1.102 +		case EFsIsValidName: return _L("EFsIsValidName");
   1.103 +		case EFsDebugFunction: return _L("EFsDebugFunction");
   1.104 +		case EFsReadFileSection: return _L("EFsReadFileSection");
   1.105 +		case EFsNotifyChangeEx: return _L("EFsNotifyChangeEx");
   1.106 +		case EFsNotifyChangeCancelEx: return _L("EFsNotifyChangeCancelEx");
   1.107 +		case EFsDismountFileSystem: return _L("EFsDismountFileSystem");
   1.108 +		case EFsFileSystemName: return _L("EFsFileSystemName");
   1.109 +		case EFsScanDrive: return _L("EFsScanDrive");
   1.110 +		case EFsControlIo: return _L("EFsControlIo");
   1.111 +		case EFsLockDrive: return _L("EFsLockDrive");
   1.112 +		case EFsUnlockDrive: return _L("EFsUnlockDrive");
   1.113 +		case EFsClearPassword: return _L("EFsClearPassword");
   1.114 +		case EFsNotifyDiskSpace: return _L("EFsNotifyDiskSpace");
   1.115 +		case EFsNotifyDiskSpaceCancel: return _L("EFsNotifyDiskSpaceCancel");
   1.116 +		case EFsFileDrive: return _L("EFsFileDrive");
   1.117 +		case EFsRemountDrive: return _L("EFsRemountDrive");
   1.118 +		case EFsMountFileSystemScan: return _L("EFsMountFileSystemScan");
   1.119 +		case EFsSessionToPrivate: return _L("EFsSessionToPrivate");
   1.120 +		case EFsPrivatePath: return _L("EFsPrivatePath");
   1.121 +		case EFsCreatePrivatePath: return _L("EFsCreatePrivatePath");
   1.122 +		case EFsAddExtension: return _L("EFsAddExtension");
   1.123 +		case EFsMountExtension: return _L("EFsMountExtension");
   1.124 +		case EFsDismountExtension: return _L("EFsDismountExtension");
   1.125 +		case EFsRemoveExtension: return _L("EFsRemoveExtension");
   1.126 +		case EFsExtensionName: return _L("EFsExtensionName");
   1.127 +		case EFsStartupInitComplete: return _L("EFsStartupInitComplete");
   1.128 +		case EFsSetLocalDriveMapping: return _L("EFsSetLocalDriveMapping");
   1.129 +		case EFsFinaliseDrive: return _L("EFsFinaliseDrive");
   1.130 +		case EFsFileDuplicate: return _L("EFsFileDuplicate");
   1.131 +		case EFsFileAdopt: return _L("EFsFileAdopt");
   1.132 +		case EFsSwapFileSystem: return _L("EFsSwapFileSystem");
   1.133 +		case EFsErasePassword: return _L("EFsErasePassword");
   1.134 +		case EFsReserveDriveSpace: return _L("EFsReserveDriveSpace");
   1.135 +		case EFsGetReserveAccess: return _L("EFsGetReserveAccess");
   1.136 +		case EFsReleaseReserveAccess: return _L("EFsReleaseReserveAccess");
   1.137 +		case EFsFileName: return _L("EFsFileName");
   1.138 +		case EFsGetMediaSerialNumber: return _L("EFsGetMediaSerialNumber");
   1.139 +		case EFsFileFullName: return _L("EFsFileFullName");
   1.140 +		case EFsAddPlugin: return _L("EFsAddPlugin");
   1.141 +		case EFsRemovePlugin: return _L("EFsRemovePlugin");
   1.142 +		case EFsMountPlugin: return _L("EFsMountPlugin");
   1.143 +		case EFsDismountPlugin: return _L("EFsDismountPlugin");
   1.144 +		case EFsPluginName: return _L("EFsPluginName");
   1.145 +		case EFsPluginOpen: return _L("EFsPluginOpen");
   1.146 +		case EFsPluginSubClose: return _L("EFsPluginSubClose");
   1.147 +		case EFsPluginDoRequest: return _L("EFsPluginDoRequest");
   1.148 +		case EFsPluginDoControl: return _L("EFsPluginDoControl");
   1.149 +		case EFsPluginDoCancel: return _L("EFsPluginDoCancel");
   1.150 +		case EFsNotifyDismount: return _L("EFsNotifyDismount");
   1.151 +		case EFsNotifyDismountCancel: return _L("EFsNotifyDismountCancel");
   1.152 +		case EFsAllowDismount: return _L("EFsAllowDismount");
   1.153 +		case EFsSetStartupConfiguration: return _L("EFsSetStartupConfiguration");
   1.154 +		case EFsFileReadCancel: return _L("EFsFileReadCancel");
   1.155 +		case EFsAddCompositeMount: return _L("EFsAddCompositeMount");
   1.156 +		case EFsSetSessionFlags: return _L("EFsSetSessionFlags");
   1.157 +		case EFsSetSystemDrive: return _L("EFsSetSystemDrive");
   1.158 +		case EFsBlockMap: return _L("EFsBlockMap");
   1.159 +		case EFsUnclamp: return _L("EFsUnclamp");
   1.160 +		case EFsFileClamp: return _L("EFsFileClamp");
   1.161 +		case EFsQueryVolumeInfoExt: return _L("EFsQueryVolumeInfoExt");
   1.162 +		case EFsInitialisePropertiesFile: return _L("EFsInitialisePropertiesFile");
   1.163 +		case EFsFileWriteDirty: return _L("EFsFileWriteDirty");
   1.164 +		case EFsSynchroniseDriveThread: return _L("EFsSynchroniseDriveThread");
   1.165 +		default:
   1.166 +			return _L("Error unknown function");
   1.167 +		}
   1.168 +	}
   1.169 +/**
   1.170 +Leaving New function for the plugin
   1.171 +@internalComponent
   1.172 +*/
   1.173 +CTestTraceHook* CTestTraceHook::NewL()
   1.174 +	{
   1.175 +	return new(ELeave) CTestTraceHook;
   1.176 +	}
   1.177 +
   1.178 +
   1.179 +/**
   1.180 +Constructor for the plugin
   1.181 +@internalComponent
   1.182 +*/
   1.183 +CTestTraceHook::CTestTraceHook()
   1.184 +	{
   1.185 +	}
   1.186 +
   1.187 +
   1.188 +/**
   1.189 +The destructor for the test trace plugin hook. 
   1.190 +@internalComponent
   1.191 +*/
   1.192 +CTestTraceHook::~CTestTraceHook()
   1.193 +	{
   1.194 +	iFs.Close();
   1.195 +	}
   1.196 +
   1.197 +/**
   1.198 +Initialise the trace plugin.
   1.199 +@internalComponent
   1.200 +*/
   1.201 +void CTestTraceHook::InitialiseL()
   1.202 +	{
   1.203 +	User::LeaveIfError(RegisterIntercept(EFsAddFileSystem				,	EPrePostIntercept));
   1.204 +	User::LeaveIfError(RegisterIntercept(EFsRemoveFileSystem			,	EPrePostIntercept));
   1.205 +	User::LeaveIfError(RegisterIntercept(EFsMountFileSystem				,	EPrePostIntercept));
   1.206 +	User::LeaveIfError(RegisterIntercept(EFsNotifyChange				,	EPrePostIntercept));
   1.207 +	User::LeaveIfError(RegisterIntercept(EFsNotifyChangeCancel			,	EPrePostIntercept));
   1.208 +	User::LeaveIfError(RegisterIntercept(EFsDriveList					,	EPrePostIntercept));
   1.209 +	User::LeaveIfError(RegisterIntercept(EFsDrive						,	EPrePostIntercept));
   1.210 +	User::LeaveIfError(RegisterIntercept(EFsVolume						,	EPrePostIntercept));
   1.211 +	User::LeaveIfError(RegisterIntercept(EFsSetVolume					,	EPrePostIntercept));
   1.212 +	User::LeaveIfError(RegisterIntercept(EFsSubst						,	EPrePostIntercept));
   1.213 +	User::LeaveIfError(RegisterIntercept(EFsSetSubst					,	EPrePostIntercept));
   1.214 +	User::LeaveIfError(RegisterIntercept(EFsRealName					,	EPrePostIntercept));
   1.215 +	User::LeaveIfError(RegisterIntercept(EFsDefaultPath					,	EPrePostIntercept));
   1.216 +	User::LeaveIfError(RegisterIntercept(EFsSetDefaultPath				,	EPrePostIntercept));
   1.217 +	User::LeaveIfError(RegisterIntercept(EFsSessionPath					,	EPrePostIntercept));
   1.218 +	User::LeaveIfError(RegisterIntercept(EFsSetSessionPath				,	EPrePostIntercept));
   1.219 +	User::LeaveIfError(RegisterIntercept(EFsMkDir						,	EPrePostIntercept));
   1.220 +	User::LeaveIfError(RegisterIntercept(EFsRmDir						,	EPrePostIntercept));
   1.221 +	User::LeaveIfError(RegisterIntercept(EFsParse						,	EPrePostIntercept));
   1.222 +	User::LeaveIfError(RegisterIntercept(EFsDelete						,	EPrePostIntercept));
   1.223 +	User::LeaveIfError(RegisterIntercept(EFsRename						,	EPrePostIntercept));
   1.224 +	User::LeaveIfError(RegisterIntercept(EFsReplace						,	EPrePostIntercept));
   1.225 +	User::LeaveIfError(RegisterIntercept(EFsEntry						,	EPrePostIntercept));
   1.226 +	User::LeaveIfError(RegisterIntercept(EFsSetEntry					,	EPrePostIntercept));
   1.227 +	User::LeaveIfError(RegisterIntercept(EFsGetDriveName				,	EPrePostIntercept));
   1.228 +	User::LeaveIfError(RegisterIntercept(EFsSetDriveName				,	EPrePostIntercept));
   1.229 +	User::LeaveIfError(RegisterIntercept(EFsFormatSubClose				,	EPrePostIntercept));
   1.230 +	User::LeaveIfError(RegisterIntercept(EFsDirSubClose					,	EPrePostIntercept));
   1.231 +	User::LeaveIfError(RegisterIntercept(EFsFileSubClose				,	EPrePostIntercept));
   1.232 +	User::LeaveIfError(RegisterIntercept(EFsRawSubClose					,	EPrePostIntercept));
   1.233 +	User::LeaveIfError(RegisterIntercept(EFsFileOpen					,	EPrePostIntercept));
   1.234 +	User::LeaveIfError(RegisterIntercept(EFsFileCreate					,	EPrePostIntercept));
   1.235 +	User::LeaveIfError(RegisterIntercept(EFsFileReplace					,	EPrePostIntercept));
   1.236 +	User::LeaveIfError(RegisterIntercept(EFsFileTemp					,	EPrePostIntercept));
   1.237 +	User::LeaveIfError(RegisterIntercept(EFsFileRead					,	EPrePostIntercept));
   1.238 +	User::LeaveIfError(RegisterIntercept(EFsFileWrite					,	EPrePostIntercept));
   1.239 +	User::LeaveIfError(RegisterIntercept(EFsFileLock					,	EPrePostIntercept));
   1.240 +	User::LeaveIfError(RegisterIntercept(EFsFileUnLock					,	EPrePostIntercept));
   1.241 +	User::LeaveIfError(RegisterIntercept(EFsFileSeek					,	EPrePostIntercept));
   1.242 +	User::LeaveIfError(RegisterIntercept(EFsFileFlush					,	EPrePostIntercept));
   1.243 +	User::LeaveIfError(RegisterIntercept(EFsFileSize					,	EPrePostIntercept));
   1.244 +	User::LeaveIfError(RegisterIntercept(EFsFileSetSize					,	EPrePostIntercept));
   1.245 +	User::LeaveIfError(RegisterIntercept(EFsFileAtt						,	EPrePostIntercept));
   1.246 +	User::LeaveIfError(RegisterIntercept(EFsFileSetAtt					,	EPrePostIntercept));
   1.247 +	User::LeaveIfError(RegisterIntercept(EFsFileModified				,	EPrePostIntercept));
   1.248 +	User::LeaveIfError(RegisterIntercept(EFsFileSetModified				,	EPrePostIntercept));
   1.249 +	User::LeaveIfError(RegisterIntercept(EFsFileSet						,	EPrePostIntercept));
   1.250 +	User::LeaveIfError(RegisterIntercept(EFsFileChangeMode				,	EPrePostIntercept));
   1.251 +	User::LeaveIfError(RegisterIntercept(EFsFileRename					,	EPrePostIntercept));
   1.252 +	User::LeaveIfError(RegisterIntercept(EFsDirOpen						,	EPrePostIntercept));
   1.253 +	User::LeaveIfError(RegisterIntercept(EFsDirReadOne					,	EPrePostIntercept));
   1.254 +	User::LeaveIfError(RegisterIntercept(EFsDirReadPacked				,	EPrePostIntercept));
   1.255 +	User::LeaveIfError(RegisterIntercept(EFsFormatOpen					,	EPrePostIntercept));
   1.256 +	User::LeaveIfError(RegisterIntercept(EFsFormatNext					,	EPrePostIntercept));
   1.257 +	User::LeaveIfError(RegisterIntercept(EFsRawDiskOpen					,	EPrePostIntercept));
   1.258 +	User::LeaveIfError(RegisterIntercept(EFsRawDiskRead					,	EPrePostIntercept));
   1.259 +	User::LeaveIfError(RegisterIntercept(EFsRawDiskWrite				,	EPrePostIntercept));
   1.260 +	User::LeaveIfError(RegisterIntercept(EFsResourceCountMarkStart		,	EPrePostIntercept));
   1.261 +	User::LeaveIfError(RegisterIntercept(EFsResourceCountMarkEnd		,	EPrePostIntercept));
   1.262 +	User::LeaveIfError(RegisterIntercept(EFsResourceCount				,	EPrePostIntercept));
   1.263 +	User::LeaveIfError(RegisterIntercept(EFsCheckDisk					,	EPrePostIntercept));
   1.264 +	User::LeaveIfError(RegisterIntercept(EFsGetShortName				,	EPrePostIntercept));
   1.265 +	User::LeaveIfError(RegisterIntercept(EFsGetLongName					,	EPrePostIntercept));
   1.266 +	User::LeaveIfError(RegisterIntercept(EFsIsFileOpen					,	EPrePostIntercept));
   1.267 +	User::LeaveIfError(RegisterIntercept(EFsListOpenFiles				,	EPrePostIntercept));
   1.268 +	User::LeaveIfError(RegisterIntercept(EFsGetNotifyUser				,	EPrePostIntercept));
   1.269 +	User::LeaveIfError(RegisterIntercept(EFsSetNotifyUser				,	EPrePostIntercept));
   1.270 +	User::LeaveIfError(RegisterIntercept(EFsIsFileInRom					,	EPrePostIntercept));
   1.271 +	User::LeaveIfError(RegisterIntercept(EFsIsValidName					,	EPrePostIntercept));
   1.272 +	User::LeaveIfError(RegisterIntercept(EFsDebugFunction				,	EPrePostIntercept));
   1.273 +	User::LeaveIfError(RegisterIntercept(EFsReadFileSection				,	EPrePostIntercept));
   1.274 +	User::LeaveIfError(RegisterIntercept(EFsNotifyChangeEx				,	EPrePostIntercept));
   1.275 +	User::LeaveIfError(RegisterIntercept(EFsNotifyChangeCancelEx		,	EPrePostIntercept));
   1.276 +	User::LeaveIfError(RegisterIntercept(EFsDismountFileSystem			,	EPrePostIntercept));
   1.277 +	User::LeaveIfError(RegisterIntercept(EFsFileSystemName				,	EPrePostIntercept));
   1.278 +	User::LeaveIfError(RegisterIntercept(EFsScanDrive					,	EPrePostIntercept));
   1.279 +	User::LeaveIfError(RegisterIntercept(EFsControlIo					,	EPrePostIntercept));
   1.280 +	User::LeaveIfError(RegisterIntercept(EFsLockDrive					,	EPrePostIntercept));
   1.281 +	User::LeaveIfError(RegisterIntercept(EFsUnlockDrive					,	EPrePostIntercept));
   1.282 +	User::LeaveIfError(RegisterIntercept(EFsClearPassword				,	EPrePostIntercept));
   1.283 +	User::LeaveIfError(RegisterIntercept(EFsNotifyDiskSpace				,	EPrePostIntercept));
   1.284 +	User::LeaveIfError(RegisterIntercept(EFsNotifyDiskSpaceCancel		,	EPrePostIntercept));
   1.285 +	User::LeaveIfError(RegisterIntercept(EFsFileDrive					,	EPrePostIntercept));
   1.286 +	User::LeaveIfError(RegisterIntercept(EFsRemountDrive				,	EPrePostIntercept));
   1.287 +	User::LeaveIfError(RegisterIntercept(EFsMountFileSystemScan			,	EPrePostIntercept));
   1.288 +	User::LeaveIfError(RegisterIntercept(EFsSessionToPrivate			,	EPrePostIntercept));
   1.289 +	User::LeaveIfError(RegisterIntercept(EFsPrivatePath					,	EPrePostIntercept));
   1.290 +	User::LeaveIfError(RegisterIntercept(EFsCreatePrivatePath			,	EPrePostIntercept));
   1.291 +	User::LeaveIfError(RegisterIntercept(EFsAddExtension				,	EPrePostIntercept));
   1.292 +	User::LeaveIfError(RegisterIntercept(EFsMountExtension				,	EPrePostIntercept));
   1.293 +	User::LeaveIfError(RegisterIntercept(EFsDismountExtension			,	EPrePostIntercept));
   1.294 +	User::LeaveIfError(RegisterIntercept(EFsRemoveExtension				,	EPrePostIntercept));
   1.295 +	User::LeaveIfError(RegisterIntercept(EFsExtensionName				,	EPrePostIntercept));
   1.296 +	User::LeaveIfError(RegisterIntercept(EFsStartupInitComplete			,	EPrePostIntercept));
   1.297 +	User::LeaveIfError(RegisterIntercept(EFsSetLocalDriveMapping		,	EPrePostIntercept));
   1.298 +	User::LeaveIfError(RegisterIntercept(EFsFinaliseDrive				,	EPrePostIntercept));
   1.299 +	User::LeaveIfError(RegisterIntercept(EFsFileDuplicate				,	EPrePostIntercept));
   1.300 +	User::LeaveIfError(RegisterIntercept(EFsFileAdopt					,	EPrePostIntercept));
   1.301 +	User::LeaveIfError(RegisterIntercept(EFsSwapFileSystem				,	EPrePostIntercept));
   1.302 +	User::LeaveIfError(RegisterIntercept(EFsErasePassword				,	EPrePostIntercept));
   1.303 +	User::LeaveIfError(RegisterIntercept(EFsReserveDriveSpace			,	EPrePostIntercept));
   1.304 +	User::LeaveIfError(RegisterIntercept(EFsGetReserveAccess			,	EPrePostIntercept));
   1.305 +	User::LeaveIfError(RegisterIntercept(EFsReleaseReserveAccess		,	EPrePostIntercept));
   1.306 +	User::LeaveIfError(RegisterIntercept(EFsFileName					,	EPrePostIntercept));
   1.307 +	User::LeaveIfError(RegisterIntercept(EFsGetMediaSerialNumber		,	EPrePostIntercept));
   1.308 +	User::LeaveIfError(RegisterIntercept(EFsFileFullName				,	EPrePostIntercept));
   1.309 +	User::LeaveIfError(RegisterIntercept(EFsAddPlugin					,	EPrePostIntercept));
   1.310 +	User::LeaveIfError(RegisterIntercept(EFsRemovePlugin				,	EPrePostIntercept));
   1.311 +	User::LeaveIfError(RegisterIntercept(EFsMountPlugin					,	EPrePostIntercept));
   1.312 +	User::LeaveIfError(RegisterIntercept(EFsPluginName					,	EPrePostIntercept));
   1.313 +	User::LeaveIfError(RegisterIntercept(EFsPluginOpen					,	EPrePostIntercept));
   1.314 +	User::LeaveIfError(RegisterIntercept(EFsPluginSubClose				,	EPrePostIntercept));
   1.315 +	User::LeaveIfError(RegisterIntercept(EFsPluginDoRequest				,	EPrePostIntercept));
   1.316 +	User::LeaveIfError(RegisterIntercept(EFsPluginDoControl				,	EPrePostIntercept));
   1.317 +	User::LeaveIfError(RegisterIntercept(EFsPluginDoCancel				,	EPrePostIntercept));
   1.318 +	User::LeaveIfError(RegisterIntercept(EFsNotifyDismount				,	EPrePostIntercept));
   1.319 +	User::LeaveIfError(RegisterIntercept(EFsNotifyDismountCancel		,	EPrePostIntercept));
   1.320 +	User::LeaveIfError(RegisterIntercept(EFsAllowDismount				,	EPrePostIntercept));
   1.321 +	User::LeaveIfError(RegisterIntercept(EFsSetStartupConfiguration		,	EPrePostIntercept));
   1.322 +	User::LeaveIfError(RegisterIntercept(EFsFileReadCancel				,	EPrePostIntercept));
   1.323 +	User::LeaveIfError(RegisterIntercept(EFsAddCompositeMount			,	EPrePostIntercept));
   1.324 +	User::LeaveIfError(RegisterIntercept(EFsSetSessionFlags				,	EPrePostIntercept));
   1.325 +	User::LeaveIfError(RegisterIntercept(EFsSetSystemDrive				,	EPrePostIntercept));
   1.326 +	User::LeaveIfError(RegisterIntercept(EFsBlockMap					,	EPrePostIntercept));
   1.327 +	User::LeaveIfError(RegisterIntercept(EFsUnclamp						,	EPrePostIntercept));
   1.328 +	User::LeaveIfError(RegisterIntercept(EFsFileClamp					,	EPrePostIntercept));
   1.329 +	User::LeaveIfError(RegisterIntercept(EFsQueryVolumeInfoExt			,	EPrePostIntercept));
   1.330 +	User::LeaveIfError(RegisterIntercept(EFsInitialisePropertiesFile	,	EPrePostIntercept));
   1.331 +	User::LeaveIfError(RegisterIntercept(EFsFileWriteDirty				,	EPrePostIntercept));
   1.332 +	User::LeaveIfError(RegisterIntercept(EFsSynchroniseDriveThread		,	EPrePostIntercept));
   1.333 +
   1.334 +
   1.335 +
   1.336 +	User::LeaveIfError(iFs.Connect());
   1.337 +	}
   1.338 +
   1.339 +/**
   1.340 +@internalComponent
   1.341 +*/
   1.342 +TInt CTestTraceHook::DoRequestL(TFsPluginRequest& aRequest)
   1.343 +	{
   1.344 +	TInt err = KErrNone;
   1.345 +
   1.346 +	TInt function = aRequest.Function();
   1.347 +	
   1.348 +	iDrvNumber = aRequest.DriveNumber();
   1.349 +
   1.350 +	TPtrC functionName = GetFunctionName(function);
   1.351 +	
   1.352 +
   1.353 +	if (!aRequest.IsPostOperation())
   1.354 +		{
   1.355 +		iPreIntercepts++;
   1.356 +		TFileName name;
   1.357 +
   1.358 +		TInt nameRet = GetName(&aRequest, name);
   1.359 +		if (nameRet == KErrNotSupported)
   1.360 +			nameRet = GetPath(&aRequest, name);
   1.361 +
   1.362 +		TFileName newName;
   1.363 +		TInt newNameRet = GetNewName(&aRequest, newName);
   1.364 +
   1.365 +		TInt len;
   1.366 +		TInt pos;
   1.367 +		TInt fileAccessRet = GetFileAccessInfo(&aRequest, len, pos);
   1.368 +
   1.369 +		if (newNameRet == KErrNone)
   1.370 +			RDebug::Print(_L(">%S\t(%S,%S)"), &functionName, &name, &newName);
   1.371 +		else if (fileAccessRet == KErrNone)
   1.372 +			RDebug::Print(_L(">%S\t%08X@%08X\t(%S)"), &functionName, len, pos, &name);
   1.373 +		else if (nameRet == KErrNone)
   1.374 +			RDebug::Print(_L(">%S\t(%S)"), &functionName, &name);
   1.375 +		else
   1.376 +			RDebug::Print(_L(">%S"), &functionName);
   1.377 +		}
   1.378 +	else
   1.379 +		{
   1.380 +		iPostIntercepts++;
   1.381 +		
   1.382 +		// we should never see any internal file caching requests
   1.383 +		ASSERT(function != EFsFileWriteDirty);
   1.384 +
   1.385 +		// for EFsFileSubClose, check we can read the file name & use the request's message handle
   1.386 +		if (function == EFsFileSubClose)
   1.387 +			{
   1.388 +			TFileName fileName;
   1.389 +#ifdef _DEBUG
   1.390 +	        TInt r = 
   1.391 +#endif
   1.392 +			GetName( &aRequest, fileName);
   1.393 +			ASSERT(r == KErrNone);
   1.394 +			// get process id (uses message handle)
   1.395 +			TUid processId = aRequest.Message().Identity();
   1.396 +            RDebug::Print(_L("<%S\t(%S), PID %X"),&functionName, &fileName, processId.iUid);
   1.397 +			}
   1.398 +		else
   1.399 +			{
   1.400 +			RDebug::Print(_L("<%S"), &functionName);
   1.401 +			}
   1.402 +		}
   1.403 +
   1.404 +	return err;
   1.405 +	}
   1.406 +
   1.407 +
   1.408 +
   1.409 +
   1.410 +/**
   1.411 +@internalComponent
   1.412 +*/
   1.413 +TInt CTestTraceHook::TracePluginName(TDes& aName)
   1.414 +	{
   1.415 +	aName = KTracePluginName;
   1.416 +	return KErrNone;
   1.417 +	}
   1.418 +
   1.419 +
   1.420 +
   1.421 +
   1.422 +//factory functions
   1.423 +
   1.424 +class CTraceHookFactory : public CFsPluginFactory
   1.425 +	{
   1.426 +public:
   1.427 +	CTraceHookFactory();
   1.428 +	virtual TInt Install();			
   1.429 +	virtual CFsPlugin* NewPluginL();
   1.430 +	virtual CFsPlugin* NewPluginConnL();
   1.431 +	virtual TInt UniquePosition();
   1.432 +	};
   1.433 +
   1.434 +/**
   1.435 +Constructor for the plugin factory
   1.436 +@internalComponent
   1.437 +*/
   1.438 +CTraceHookFactory::CTraceHookFactory()
   1.439 +	{
   1.440 +	}
   1.441 +
   1.442 +/**
   1.443 +Install function for the plugin factory
   1.444 +@internalComponent
   1.445 +*/
   1.446 +TInt CTraceHookFactory::Install()
   1.447 +	{
   1.448 +	iSupportedDrives = KPluginAutoAttach;
   1.449 +
   1.450 +	_LIT(KTraceHookName,"TraceHook");
   1.451 +	return(SetName(&KTraceHookName));
   1.452 +	}
   1.453 +
   1.454 +/**
   1.455 +@internalComponent
   1.456 +*/
   1.457 +TInt CTraceHookFactory::UniquePosition()
   1.458 +	{
   1.459 +	return(0x1EC);
   1.460 +	}
   1.461 +
   1.462 +/**
   1.463 +Plugin factory function
   1.464 +@internalComponent
   1.465 +*/
   1.466 +CFsPlugin* CTraceHookFactory::NewPluginL()
   1.467 +
   1.468 +	{
   1.469 +	return CTestTraceHook::NewL();
   1.470 +	}
   1.471 +
   1.472 +/**
   1.473 +Plugin factory function
   1.474 +@internalComponent
   1.475 +*/
   1.476 +CFsPlugin* CTraceHookFactory::NewPluginConnL()
   1.477 +
   1.478 +	{
   1.479 +	return CTestTraceHook::NewL();
   1.480 +	}
   1.481 +
   1.482 +/**
   1.483 +Create a new Plugin
   1.484 +@internalComponent
   1.485 +*/
   1.486 +extern "C" {
   1.487 +
   1.488 +EXPORT_C CFsPluginFactory* CreateFileSystem()
   1.489 +	{
   1.490 +	return(new CTraceHookFactory());
   1.491 +	}
   1.492 +}
   1.493 +