kerneltest/e32test/device/t_tldd.cpp
changeset 300 1d28c8722707
parent 293 0659d0e1a03c
equal deleted inserted replaced
293:0659d0e1a03c 300:1d28c8722707
    52 #include <e32def.h>
    52 #include <e32def.h>
    53 #include <e32def_private.h>
    53 #include <e32def_private.h>
    54 #include "d_ldd.h"
    54 #include "d_ldd.h"
    55 
    55 
    56 _LIT(KLddFileName, "D_LDD.LDD");
    56 _LIT(KLddFileName, "D_LDD.LDD");
    57 _LIT(KLddFileNameBadUid, "D_LDDNS.LDD");
    57 _LIT(KLddFullNameBadUid, "Z:\\SYS\\BIN\\D_LDDNS.LDD");
    58 
    58 
    59 #ifdef __EPOC32__
    59 #ifdef __EPOC32__
    60 _LIT(KLddFileNameRam, "D_LDD_RAM.LDD");
    60 _LIT(KLddFileNameRam, "D_LDD_RAM.LDD");
    61 #endif
    61 #endif
    62 
    62 
   313 	COMPLETE_POST_BOOT_SYSTEM_TASKS();
   313 	COMPLETE_POST_BOOT_SYSTEM_TASKS();
   314 	TInt r;
   314 	TInt r;
   315 	test.Title();
   315 	test.Title();
   316 	test.Start(_L("Test device driver loading and unloading"));
   316 	test.Start(_L("Test device driver loading and unloading"));
   317 
   317 
       
   318 	// Turn off evil lazy dll unloading
       
   319 	RLoader l;
       
   320 	test(l.Connect() == KErrNone);
       
   321 	test(l.CancelLazyDllUnload() == KErrNone);
       
   322 	l.Close();
       
   323 
       
   324     test.Next(_L("Check that a PDD or DLL cannot be loaded as an LDD"));
       
   325 	RLibrary lib;
       
   326 	RLibrary::TInfoV2 info;
       
   327 	TPckg<RLibrary::TInfoV2> infoPkg(info);
       
   328 	r = RLibrary::GetInfo(KLddFullNameBadUid, infoPkg);
       
   329 	test.Printf(_L("RLibrary::GetInfo(%S) returned %d\n"), &KLddFullNameBadUid, r);
       
   330 	if (r == KErrNone)
       
   331 		{
       
   332 		const TUidType uids (info.iUids);
       
   333 		test.Printf(_L("Info shows UIDs 0x%x, 0x%x, 0x%x\n"), uids[0], uids[1], uids[2]);
       
   334 		r = lib.Load(KLddFullNameBadUid, uids);
       
   335 		test.Printf(_L("RLibrary::Load(%S, (uids)) returned %d\n"), &KLddFullNameBadUid, r);
       
   336 		}
       
   337 	else
       
   338 		{
       
   339 		r = lib.Load(KLddFullNameBadUid);
       
   340 		test.Printf(_L("RLibrary::Load(%S) returned %d\n"), &KLddFullNameBadUid, r);
       
   341 		}
       
   342 	if (r >= 0)
       
   343 		{
       
   344 		TFileName libname (lib.FileName());
       
   345 		TUidType ids2 (lib.Type());
       
   346 		test.Printf(_L("Loaded %S as a DLL, UIDs 0x%x, 0x%x, 0x%x\n"), &libname, ids2[0], ids2[1], ids2[2]);
       
   347 		lib.Close();
       
   348 		}
       
   349 
       
   350 	r = User::LoadLogicalDevice(KLddFullNameBadUid);
       
   351 	test.Printf(_L("RLibrary::LoadLogicalDevice(%S) returned %d\n"), &KLddFullNameBadUid, r);
       
   352 	test(r == KErrNotSupported);	// This "LDD" is not valid (wrong UID2)
       
   353 
   318 	DoTest(KLddFileName);
   354 	DoTest(KLddFileName);
   319 #ifdef __EPOC32__
   355 #ifdef __EPOC32__
   320 	DoTest(KLddFileNameRam);
   356 	DoTest(KLddFileNameRam);
   321 	DoTest2(KLddFileNameRam);
   357 	DoTest2(KLddFileNameRam);
   322 #endif
   358 #endif
   323 
   359 
   324 	r=User::LoadLogicalDevice(KLddFileNameBadUid);
       
   325 	test(r==KErrNotSupported);
       
   326 
       
   327     test.End();
   360     test.End();
   328 	return(KErrNone);
   361 	return(KErrNone);
   329     }
   362     }
   330 
   363