First public contribution.
1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // f32test\plugins\trace\t_tracehook.cpp
18 #include "t_tracehook.h"
19 #include <f32pluginutils.h>
21 _LIT(KTracePluginName, "A test plugin which logs all file server messages");
24 TPtrC GetFunctionName(TInt aFunction)
26 // Print number of alloc fails to complete a given function
31 case EFsAddFileSystem: return _L("EFsAddFileSystem");
32 case EFsRemoveFileSystem: return _L("EFsRemoveFileSystem");
33 case EFsMountFileSystem: return _L("EFsMountFileSystem");
34 case EFsNotifyChange: return _L("EFsNotifyChange");
35 case EFsNotifyChangeCancel: return _L("EFsNotifyChangeCancel");
36 case EFsDriveList: return _L("EFsDriveList");
37 case EFsDrive: return _L("EFsDrive");
38 case EFsVolume: return _L("EFsVolume");
39 case EFsSetVolume: return _L("EFsSetVolume");
40 case EFsSubst: return _L("EFsSubst");
41 case EFsSetSubst: return _L("EFsSetSubst");
42 case EFsRealName: return _L("EFsRealName");
43 case EFsDefaultPath: return _L("EFsDefaultPath");
44 case EFsSetDefaultPath: return _L("EFsSetDefaultPath");
45 case EFsSessionPath: return _L("EFsSessionPath");
46 case EFsSetSessionPath: return _L("EFsSetSessionPath");
47 case EFsMkDir: return _L("EFsMkDir");
48 case EFsRmDir: return _L("EFsRmDir");
49 case EFsParse: return _L("EFsParse");
50 case EFsDelete: return _L("EFsDelete");
51 case EFsRename: return _L("EFsRename");
52 case EFsReplace: return _L("EFsReplace");
53 case EFsEntry: return _L("EFsEntry");
54 case EFsSetEntry: return _L("EFsSetEntry");
55 case EFsGetDriveName: return _L("EFsGetDriveName");
56 case EFsSetDriveName: return _L("EFsSetDriveName");
57 case EFsFormatSubClose: return _L("EFsFormatSubClose");
58 case EFsDirSubClose: return _L("EFsDirSubClose");
59 case EFsFileSubClose: return _L("EFsFileSubClose");
60 case EFsRawSubClose: return _L("EFsRawSubClose");
61 case EFsFileOpen: return _L("EFsFileOpen");
62 case EFsFileCreate: return _L("EFsFileCreate");
63 case EFsFileReplace: return _L("EFsFileReplace");
64 case EFsFileTemp: return _L("EFsFileTemp");
65 case EFsFileRead: return _L("EFsFileRead");
66 case EFsFileWrite: return _L("EFsFileWrite");
67 case EFsFileLock: return _L("EFsFileLock");
68 case EFsFileUnLock: return _L("EFsFileUnLock");
69 case EFsFileSeek: return _L("EFsFileSeek");
70 case EFsFileFlush: return _L("EFsFileFlush");
71 case EFsFileSize: return _L("EFsFileSize");
72 case EFsFileSetSize: return _L("EFsFileSetSize");
73 case EFsFileAtt: return _L("EFsFileAtt");
74 case EFsFileSetAtt: return _L("EFsFileSetAtt");
75 case EFsFileModified: return _L("EFsFileModified");
76 case EFsFileSetModified: return _L("EFsFileSetModified");
77 case EFsFileSet: return _L("EFsFileSet");
78 case EFsFileChangeMode: return _L("EFsFileChangeMode");
79 case EFsFileRename: return _L("EFsFileRename");
80 case EFsDirOpen: return _L("EFsDirOpen");
81 case EFsDirReadOne: return _L("EFsDirReadOne");
82 case EFsDirReadPacked: return _L("EFsDirReadPacked");
83 case EFsFormatOpen: return _L("EFsFormatOpen");
84 case EFsFormatNext: return _L("EFsFormatNext");
85 case EFsRawDiskOpen: return _L("EFsRawDiskOpen");
86 case EFsRawDiskRead: return _L("EFsRawDiskRead");
87 case EFsRawDiskWrite: return _L("EFsRawDiskWrite");
88 case EFsResourceCountMarkStart: return _L("EFsResourceCountMarkStart");
89 case EFsResourceCountMarkEnd: return _L("EFsResourceCountMarkEnd");
90 case EFsResourceCount: return _L("EFsResourceCount");
91 case EFsCheckDisk: return _L("EFsCheckDisk");
92 case EFsGetShortName: return _L("EFsGetShortName");
93 case EFsGetLongName: return _L("EFsGetLongName");
94 case EFsIsFileOpen: return _L("EFsIsFileOpen");
95 case EFsListOpenFiles: return _L("EFsListOpenFiles");
96 case EFsGetNotifyUser: return _L("EFsGetNotifyUser");
97 case EFsSetNotifyUser: return _L("EFsSetNotifyUser");
98 case EFsIsFileInRom: return _L("EFsIsFileInRom");
99 case EFsIsValidName: return _L("EFsIsValidName");
100 case EFsDebugFunction: return _L("EFsDebugFunction");
101 case EFsReadFileSection: return _L("EFsReadFileSection");
102 case EFsNotifyChangeEx: return _L("EFsNotifyChangeEx");
103 case EFsNotifyChangeCancelEx: return _L("EFsNotifyChangeCancelEx");
104 case EFsDismountFileSystem: return _L("EFsDismountFileSystem");
105 case EFsFileSystemName: return _L("EFsFileSystemName");
106 case EFsScanDrive: return _L("EFsScanDrive");
107 case EFsControlIo: return _L("EFsControlIo");
108 case EFsLockDrive: return _L("EFsLockDrive");
109 case EFsUnlockDrive: return _L("EFsUnlockDrive");
110 case EFsClearPassword: return _L("EFsClearPassword");
111 case EFsNotifyDiskSpace: return _L("EFsNotifyDiskSpace");
112 case EFsNotifyDiskSpaceCancel: return _L("EFsNotifyDiskSpaceCancel");
113 case EFsFileDrive: return _L("EFsFileDrive");
114 case EFsRemountDrive: return _L("EFsRemountDrive");
115 case EFsMountFileSystemScan: return _L("EFsMountFileSystemScan");
116 case EFsSessionToPrivate: return _L("EFsSessionToPrivate");
117 case EFsPrivatePath: return _L("EFsPrivatePath");
118 case EFsCreatePrivatePath: return _L("EFsCreatePrivatePath");
119 case EFsAddExtension: return _L("EFsAddExtension");
120 case EFsMountExtension: return _L("EFsMountExtension");
121 case EFsDismountExtension: return _L("EFsDismountExtension");
122 case EFsRemoveExtension: return _L("EFsRemoveExtension");
123 case EFsExtensionName: return _L("EFsExtensionName");
124 case EFsStartupInitComplete: return _L("EFsStartupInitComplete");
125 case EFsSetLocalDriveMapping: return _L("EFsSetLocalDriveMapping");
126 case EFsFinaliseDrive: return _L("EFsFinaliseDrive");
127 case EFsFileDuplicate: return _L("EFsFileDuplicate");
128 case EFsFileAdopt: return _L("EFsFileAdopt");
129 case EFsSwapFileSystem: return _L("EFsSwapFileSystem");
130 case EFsErasePassword: return _L("EFsErasePassword");
131 case EFsReserveDriveSpace: return _L("EFsReserveDriveSpace");
132 case EFsGetReserveAccess: return _L("EFsGetReserveAccess");
133 case EFsReleaseReserveAccess: return _L("EFsReleaseReserveAccess");
134 case EFsFileName: return _L("EFsFileName");
135 case EFsGetMediaSerialNumber: return _L("EFsGetMediaSerialNumber");
136 case EFsFileFullName: return _L("EFsFileFullName");
137 case EFsAddPlugin: return _L("EFsAddPlugin");
138 case EFsRemovePlugin: return _L("EFsRemovePlugin");
139 case EFsMountPlugin: return _L("EFsMountPlugin");
140 case EFsDismountPlugin: return _L("EFsDismountPlugin");
141 case EFsPluginName: return _L("EFsPluginName");
142 case EFsPluginOpen: return _L("EFsPluginOpen");
143 case EFsPluginSubClose: return _L("EFsPluginSubClose");
144 case EFsPluginDoRequest: return _L("EFsPluginDoRequest");
145 case EFsPluginDoControl: return _L("EFsPluginDoControl");
146 case EFsPluginDoCancel: return _L("EFsPluginDoCancel");
147 case EFsNotifyDismount: return _L("EFsNotifyDismount");
148 case EFsNotifyDismountCancel: return _L("EFsNotifyDismountCancel");
149 case EFsAllowDismount: return _L("EFsAllowDismount");
150 case EFsSetStartupConfiguration: return _L("EFsSetStartupConfiguration");
151 case EFsFileReadCancel: return _L("EFsFileReadCancel");
152 case EFsAddCompositeMount: return _L("EFsAddCompositeMount");
153 case EFsSetSessionFlags: return _L("EFsSetSessionFlags");
154 case EFsSetSystemDrive: return _L("EFsSetSystemDrive");
155 case EFsBlockMap: return _L("EFsBlockMap");
156 case EFsUnclamp: return _L("EFsUnclamp");
157 case EFsFileClamp: return _L("EFsFileClamp");
158 case EFsQueryVolumeInfoExt: return _L("EFsQueryVolumeInfoExt");
159 case EFsInitialisePropertiesFile: return _L("EFsInitialisePropertiesFile");
160 case EFsFileWriteDirty: return _L("EFsFileWriteDirty");
161 case EFsSynchroniseDriveThread: return _L("EFsSynchroniseDriveThread");
163 return _L("Error unknown function");
167 Leaving New function for the plugin
170 CTestTraceHook* CTestTraceHook::NewL()
172 return new(ELeave) CTestTraceHook;
177 Constructor for the plugin
180 CTestTraceHook::CTestTraceHook()
186 The destructor for the test trace plugin hook.
189 CTestTraceHook::~CTestTraceHook()
195 Initialise the trace plugin.
198 void CTestTraceHook::InitialiseL()
200 User::LeaveIfError(RegisterIntercept(EFsAddFileSystem , EPrePostIntercept));
201 User::LeaveIfError(RegisterIntercept(EFsRemoveFileSystem , EPrePostIntercept));
202 User::LeaveIfError(RegisterIntercept(EFsMountFileSystem , EPrePostIntercept));
203 User::LeaveIfError(RegisterIntercept(EFsNotifyChange , EPrePostIntercept));
204 User::LeaveIfError(RegisterIntercept(EFsNotifyChangeCancel , EPrePostIntercept));
205 User::LeaveIfError(RegisterIntercept(EFsDriveList , EPrePostIntercept));
206 User::LeaveIfError(RegisterIntercept(EFsDrive , EPrePostIntercept));
207 User::LeaveIfError(RegisterIntercept(EFsVolume , EPrePostIntercept));
208 User::LeaveIfError(RegisterIntercept(EFsSetVolume , EPrePostIntercept));
209 User::LeaveIfError(RegisterIntercept(EFsSubst , EPrePostIntercept));
210 User::LeaveIfError(RegisterIntercept(EFsSetSubst , EPrePostIntercept));
211 User::LeaveIfError(RegisterIntercept(EFsRealName , EPrePostIntercept));
212 User::LeaveIfError(RegisterIntercept(EFsDefaultPath , EPrePostIntercept));
213 User::LeaveIfError(RegisterIntercept(EFsSetDefaultPath , EPrePostIntercept));
214 User::LeaveIfError(RegisterIntercept(EFsSessionPath , EPrePostIntercept));
215 User::LeaveIfError(RegisterIntercept(EFsSetSessionPath , EPrePostIntercept));
216 User::LeaveIfError(RegisterIntercept(EFsMkDir , EPrePostIntercept));
217 User::LeaveIfError(RegisterIntercept(EFsRmDir , EPrePostIntercept));
218 User::LeaveIfError(RegisterIntercept(EFsParse , EPrePostIntercept));
219 User::LeaveIfError(RegisterIntercept(EFsDelete , EPrePostIntercept));
220 User::LeaveIfError(RegisterIntercept(EFsRename , EPrePostIntercept));
221 User::LeaveIfError(RegisterIntercept(EFsReplace , EPrePostIntercept));
222 User::LeaveIfError(RegisterIntercept(EFsEntry , EPrePostIntercept));
223 User::LeaveIfError(RegisterIntercept(EFsSetEntry , EPrePostIntercept));
224 User::LeaveIfError(RegisterIntercept(EFsGetDriveName , EPrePostIntercept));
225 User::LeaveIfError(RegisterIntercept(EFsSetDriveName , EPrePostIntercept));
226 User::LeaveIfError(RegisterIntercept(EFsFormatSubClose , EPrePostIntercept));
227 User::LeaveIfError(RegisterIntercept(EFsDirSubClose , EPrePostIntercept));
228 User::LeaveIfError(RegisterIntercept(EFsFileSubClose , EPrePostIntercept));
229 User::LeaveIfError(RegisterIntercept(EFsRawSubClose , EPrePostIntercept));
230 User::LeaveIfError(RegisterIntercept(EFsFileOpen , EPrePostIntercept));
231 User::LeaveIfError(RegisterIntercept(EFsFileCreate , EPrePostIntercept));
232 User::LeaveIfError(RegisterIntercept(EFsFileReplace , EPrePostIntercept));
233 User::LeaveIfError(RegisterIntercept(EFsFileTemp , EPrePostIntercept));
234 User::LeaveIfError(RegisterIntercept(EFsFileRead , EPrePostIntercept));
235 User::LeaveIfError(RegisterIntercept(EFsFileWrite , EPrePostIntercept));
236 User::LeaveIfError(RegisterIntercept(EFsFileLock , EPrePostIntercept));
237 User::LeaveIfError(RegisterIntercept(EFsFileUnLock , EPrePostIntercept));
238 User::LeaveIfError(RegisterIntercept(EFsFileSeek , EPrePostIntercept));
239 User::LeaveIfError(RegisterIntercept(EFsFileFlush , EPrePostIntercept));
240 User::LeaveIfError(RegisterIntercept(EFsFileSize , EPrePostIntercept));
241 User::LeaveIfError(RegisterIntercept(EFsFileSetSize , EPrePostIntercept));
242 User::LeaveIfError(RegisterIntercept(EFsFileAtt , EPrePostIntercept));
243 User::LeaveIfError(RegisterIntercept(EFsFileSetAtt , EPrePostIntercept));
244 User::LeaveIfError(RegisterIntercept(EFsFileModified , EPrePostIntercept));
245 User::LeaveIfError(RegisterIntercept(EFsFileSetModified , EPrePostIntercept));
246 User::LeaveIfError(RegisterIntercept(EFsFileSet , EPrePostIntercept));
247 User::LeaveIfError(RegisterIntercept(EFsFileChangeMode , EPrePostIntercept));
248 User::LeaveIfError(RegisterIntercept(EFsFileRename , EPrePostIntercept));
249 User::LeaveIfError(RegisterIntercept(EFsDirOpen , EPrePostIntercept));
250 User::LeaveIfError(RegisterIntercept(EFsDirReadOne , EPrePostIntercept));
251 User::LeaveIfError(RegisterIntercept(EFsDirReadPacked , EPrePostIntercept));
252 User::LeaveIfError(RegisterIntercept(EFsFormatOpen , EPrePostIntercept));
253 User::LeaveIfError(RegisterIntercept(EFsFormatNext , EPrePostIntercept));
254 User::LeaveIfError(RegisterIntercept(EFsRawDiskOpen , EPrePostIntercept));
255 User::LeaveIfError(RegisterIntercept(EFsRawDiskRead , EPrePostIntercept));
256 User::LeaveIfError(RegisterIntercept(EFsRawDiskWrite , EPrePostIntercept));
257 User::LeaveIfError(RegisterIntercept(EFsResourceCountMarkStart , EPrePostIntercept));
258 User::LeaveIfError(RegisterIntercept(EFsResourceCountMarkEnd , EPrePostIntercept));
259 User::LeaveIfError(RegisterIntercept(EFsResourceCount , EPrePostIntercept));
260 User::LeaveIfError(RegisterIntercept(EFsCheckDisk , EPrePostIntercept));
261 User::LeaveIfError(RegisterIntercept(EFsGetShortName , EPrePostIntercept));
262 User::LeaveIfError(RegisterIntercept(EFsGetLongName , EPrePostIntercept));
263 User::LeaveIfError(RegisterIntercept(EFsIsFileOpen , EPrePostIntercept));
264 User::LeaveIfError(RegisterIntercept(EFsListOpenFiles , EPrePostIntercept));
265 User::LeaveIfError(RegisterIntercept(EFsGetNotifyUser , EPrePostIntercept));
266 User::LeaveIfError(RegisterIntercept(EFsSetNotifyUser , EPrePostIntercept));
267 User::LeaveIfError(RegisterIntercept(EFsIsFileInRom , EPrePostIntercept));
268 User::LeaveIfError(RegisterIntercept(EFsIsValidName , EPrePostIntercept));
269 User::LeaveIfError(RegisterIntercept(EFsDebugFunction , EPrePostIntercept));
270 User::LeaveIfError(RegisterIntercept(EFsReadFileSection , EPrePostIntercept));
271 User::LeaveIfError(RegisterIntercept(EFsNotifyChangeEx , EPrePostIntercept));
272 User::LeaveIfError(RegisterIntercept(EFsNotifyChangeCancelEx , EPrePostIntercept));
273 User::LeaveIfError(RegisterIntercept(EFsDismountFileSystem , EPrePostIntercept));
274 User::LeaveIfError(RegisterIntercept(EFsFileSystemName , EPrePostIntercept));
275 User::LeaveIfError(RegisterIntercept(EFsScanDrive , EPrePostIntercept));
276 User::LeaveIfError(RegisterIntercept(EFsControlIo , EPrePostIntercept));
277 User::LeaveIfError(RegisterIntercept(EFsLockDrive , EPrePostIntercept));
278 User::LeaveIfError(RegisterIntercept(EFsUnlockDrive , EPrePostIntercept));
279 User::LeaveIfError(RegisterIntercept(EFsClearPassword , EPrePostIntercept));
280 User::LeaveIfError(RegisterIntercept(EFsNotifyDiskSpace , EPrePostIntercept));
281 User::LeaveIfError(RegisterIntercept(EFsNotifyDiskSpaceCancel , EPrePostIntercept));
282 User::LeaveIfError(RegisterIntercept(EFsFileDrive , EPrePostIntercept));
283 User::LeaveIfError(RegisterIntercept(EFsRemountDrive , EPrePostIntercept));
284 User::LeaveIfError(RegisterIntercept(EFsMountFileSystemScan , EPrePostIntercept));
285 User::LeaveIfError(RegisterIntercept(EFsSessionToPrivate , EPrePostIntercept));
286 User::LeaveIfError(RegisterIntercept(EFsPrivatePath , EPrePostIntercept));
287 User::LeaveIfError(RegisterIntercept(EFsCreatePrivatePath , EPrePostIntercept));
288 User::LeaveIfError(RegisterIntercept(EFsAddExtension , EPrePostIntercept));
289 User::LeaveIfError(RegisterIntercept(EFsMountExtension , EPrePostIntercept));
290 User::LeaveIfError(RegisterIntercept(EFsDismountExtension , EPrePostIntercept));
291 User::LeaveIfError(RegisterIntercept(EFsRemoveExtension , EPrePostIntercept));
292 User::LeaveIfError(RegisterIntercept(EFsExtensionName , EPrePostIntercept));
293 User::LeaveIfError(RegisterIntercept(EFsStartupInitComplete , EPrePostIntercept));
294 User::LeaveIfError(RegisterIntercept(EFsSetLocalDriveMapping , EPrePostIntercept));
295 User::LeaveIfError(RegisterIntercept(EFsFinaliseDrive , EPrePostIntercept));
296 User::LeaveIfError(RegisterIntercept(EFsFileDuplicate , EPrePostIntercept));
297 User::LeaveIfError(RegisterIntercept(EFsFileAdopt , EPrePostIntercept));
298 User::LeaveIfError(RegisterIntercept(EFsSwapFileSystem , EPrePostIntercept));
299 User::LeaveIfError(RegisterIntercept(EFsErasePassword , EPrePostIntercept));
300 User::LeaveIfError(RegisterIntercept(EFsReserveDriveSpace , EPrePostIntercept));
301 User::LeaveIfError(RegisterIntercept(EFsGetReserveAccess , EPrePostIntercept));
302 User::LeaveIfError(RegisterIntercept(EFsReleaseReserveAccess , EPrePostIntercept));
303 User::LeaveIfError(RegisterIntercept(EFsFileName , EPrePostIntercept));
304 User::LeaveIfError(RegisterIntercept(EFsGetMediaSerialNumber , EPrePostIntercept));
305 User::LeaveIfError(RegisterIntercept(EFsFileFullName , EPrePostIntercept));
306 User::LeaveIfError(RegisterIntercept(EFsAddPlugin , EPrePostIntercept));
307 User::LeaveIfError(RegisterIntercept(EFsRemovePlugin , EPrePostIntercept));
308 User::LeaveIfError(RegisterIntercept(EFsMountPlugin , EPrePostIntercept));
309 User::LeaveIfError(RegisterIntercept(EFsPluginName , EPrePostIntercept));
310 User::LeaveIfError(RegisterIntercept(EFsPluginOpen , EPrePostIntercept));
311 User::LeaveIfError(RegisterIntercept(EFsPluginSubClose , EPrePostIntercept));
312 User::LeaveIfError(RegisterIntercept(EFsPluginDoRequest , EPrePostIntercept));
313 User::LeaveIfError(RegisterIntercept(EFsPluginDoControl , EPrePostIntercept));
314 User::LeaveIfError(RegisterIntercept(EFsPluginDoCancel , EPrePostIntercept));
315 User::LeaveIfError(RegisterIntercept(EFsNotifyDismount , EPrePostIntercept));
316 User::LeaveIfError(RegisterIntercept(EFsNotifyDismountCancel , EPrePostIntercept));
317 User::LeaveIfError(RegisterIntercept(EFsAllowDismount , EPrePostIntercept));
318 User::LeaveIfError(RegisterIntercept(EFsSetStartupConfiguration , EPrePostIntercept));
319 User::LeaveIfError(RegisterIntercept(EFsFileReadCancel , EPrePostIntercept));
320 User::LeaveIfError(RegisterIntercept(EFsAddCompositeMount , EPrePostIntercept));
321 User::LeaveIfError(RegisterIntercept(EFsSetSessionFlags , EPrePostIntercept));
322 User::LeaveIfError(RegisterIntercept(EFsSetSystemDrive , EPrePostIntercept));
323 User::LeaveIfError(RegisterIntercept(EFsBlockMap , EPrePostIntercept));
324 User::LeaveIfError(RegisterIntercept(EFsUnclamp , EPrePostIntercept));
325 User::LeaveIfError(RegisterIntercept(EFsFileClamp , EPrePostIntercept));
326 User::LeaveIfError(RegisterIntercept(EFsQueryVolumeInfoExt , EPrePostIntercept));
327 User::LeaveIfError(RegisterIntercept(EFsInitialisePropertiesFile , EPrePostIntercept));
328 User::LeaveIfError(RegisterIntercept(EFsFileWriteDirty , EPrePostIntercept));
329 User::LeaveIfError(RegisterIntercept(EFsSynchroniseDriveThread , EPrePostIntercept));
333 User::LeaveIfError(iFs.Connect());
339 TInt CTestTraceHook::DoRequestL(TFsPluginRequest& aRequest)
343 TInt function = aRequest.Function();
345 iDrvNumber = aRequest.DriveNumber();
347 TPtrC functionName = GetFunctionName(function);
350 if (!aRequest.IsPostOperation())
355 TInt nameRet = GetName(&aRequest, name);
356 if (nameRet == KErrNotSupported)
357 nameRet = GetPath(&aRequest, name);
360 TInt newNameRet = GetNewName(&aRequest, newName);
364 TInt fileAccessRet = GetFileAccessInfo(&aRequest, len, pos);
366 if (newNameRet == KErrNone)
367 RDebug::Print(_L(">%S\t(%S,%S)"), &functionName, &name, &newName);
368 else if (fileAccessRet == KErrNone)
369 RDebug::Print(_L(">%S\t%08X@%08X\t(%S)"), &functionName, len, pos, &name);
370 else if (nameRet == KErrNone)
371 RDebug::Print(_L(">%S\t(%S)"), &functionName, &name);
373 RDebug::Print(_L(">%S"), &functionName);
379 // we should never see any internal file caching requests
380 ASSERT(function != EFsFileWriteDirty);
382 // for EFsFileSubClose, check we can read the file name & use the request's message handle
383 if (function == EFsFileSubClose)
389 GetName( &aRequest, fileName);
390 ASSERT(r == KErrNone);
391 // get process id (uses message handle)
392 TUid processId = aRequest.Message().Identity();
393 RDebug::Print(_L("<%S\t(%S), PID %X"),&functionName, &fileName, processId.iUid);
397 RDebug::Print(_L("<%S"), &functionName);
410 TInt CTestTraceHook::TracePluginName(TDes& aName)
412 aName = KTracePluginName;
421 class CTraceHookFactory : public CFsPluginFactory
425 virtual TInt Install();
426 virtual CFsPlugin* NewPluginL();
427 virtual CFsPlugin* NewPluginConnL();
428 virtual TInt UniquePosition();
432 Constructor for the plugin factory
435 CTraceHookFactory::CTraceHookFactory()
440 Install function for the plugin factory
443 TInt CTraceHookFactory::Install()
445 iSupportedDrives = KPluginAutoAttach;
447 _LIT(KTraceHookName,"TraceHook");
448 return(SetName(&KTraceHookName));
454 TInt CTraceHookFactory::UniquePosition()
460 Plugin factory function
463 CFsPlugin* CTraceHookFactory::NewPluginL()
466 return CTestTraceHook::NewL();
470 Plugin factory function
473 CFsPlugin* CTraceHookFactory::NewPluginConnL()
476 return CTestTraceHook::NewL();
485 EXPORT_C CFsPluginFactory* CreateFileSystem()
487 return(new CTraceHookFactory());