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 +