305 |
298 |
306 NKern::ThreadEnterCS(); |
299 NKern::ThreadEnterCS(); |
307 |
300 |
308 // First, locate the specific DObject in question. Cast the handle, but don't use the object... |
301 // First, locate the specific DObject in question. Cast the handle, but don't use the object... |
309 DObject* handleAsObject = (DObject*) params.iHandle; |
302 DObject* handleAsObject = (DObject*) params.iHandle; |
310 handleAsObject = CheckIfObjectIsInContainer( params.iType, handleAsObject ); |
303 handleAsObject = CheckedOpen(params.iType, handleAsObject); |
311 if ( handleAsObject != NULL ) |
304 if ( handleAsObject != NULL ) |
312 { |
305 { |
313 // We found the right object. First get generic info. |
306 // We found the right object. First get generic info. |
314 handleAsObject->FullName( params.iName ); |
307 handleAsObject->FullName( params.iName ); |
315 handleAsObject->Name( params.iNameDetail ); |
308 handleAsObject->Name( params.iNameDetail ); |
316 |
309 |
317 NKern::LockSystem(); |
310 // Using threadAddaption to fetch generic info. |
318 r = handleAsObject->Open(); |
311 // Implementations of following get functions are actually in DMemSpyDriverOSAdaptionDObject |
319 NKern::UnlockSystem(); |
312 // so it does not matter what adaption to use for generic info. |
320 // |
313 DMemSpyDriverOSAdaptionDThread& threadAddaption = OSAdaption().DThread(); |
321 if ( r == KErrNone ) |
314 params.iAccessCount = threadAddaption.GetAccessCount( *handleAsObject ); |
322 { |
315 params.iUniqueID = threadAddaption.GetUniqueID( *handleAsObject ); |
323 // Using threadAddaption to fetch generic info. |
316 params.iProtection = threadAddaption.GetProtection( *handleAsObject ); |
324 // Implementations of following get functions are actually in DMemSpyDriverOSAdaptionDObject |
317 params.iAddressOfKernelOwner = threadAddaption.GetAddressOfKernelOwner( *handleAsObject ); |
325 // so it does not matter what adaption to use for generic info. |
|
326 DMemSpyDriverOSAdaptionDThread& threadAddaption = OSAdaption().DThread(); |
|
327 params.iAccessCount = threadAddaption.GetAccessCount( *handleAsObject ); |
|
328 params.iUniqueID = threadAddaption.GetUniqueID( *handleAsObject ); |
|
329 params.iProtection = threadAddaption.GetProtection( *handleAsObject ); |
|
330 params.iAddressOfKernelOwner = threadAddaption.GetAddressOfKernelOwner( *handleAsObject ); |
|
331 // |
|
332 handleAsObject->Close( NULL ); |
|
333 } |
|
334 |
318 |
335 // Get type-specific info. |
319 // Get type-specific info. |
336 if ( params.iType == EMemSpyDriverContainerTypeThread ) |
320 if ( params.iType == EMemSpyDriverContainerTypeThread ) |
337 { |
321 { |
338 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeThread" )); |
322 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeThread" )); |
339 |
323 |
340 DThread* object = (DThread*) handleAsObject; |
324 DThread* object = (DThread*) handleAsObject; |
341 NKern::LockSystem(); |
325 DMemSpyDriverOSAdaptionDThread& threadAdaption = OSAdaption().DThread(); |
342 r = object->Open(); |
326 // |
343 NKern::UnlockSystem(); |
327 params.iId = threadAdaption.GetId( *object ); |
344 // |
328 params.iPriority = threadAdaption.GetPriority( *object ); |
345 if ( r == KErrNone ) |
329 params.iAddressOfOwningProcess = threadAdaption.GetAddressOfOwningProcess( *object ); |
|
330 threadAdaption.GetNameOfOwningProcess( *object, params.iNameOfOwner ); |
|
331 } |
|
332 else if ( params.iType == EMemSpyDriverContainerTypeProcess ) |
|
333 { |
|
334 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeProcess" )); |
|
335 |
|
336 DProcess* object = (DProcess*) handleAsObject; |
|
337 DMemSpyDriverOSAdaptionDProcess& processAdaption = OSAdaption().DProcess(); |
|
338 // |
|
339 params.iId = processAdaption.GetId( *object ); |
|
340 // |
|
341 params.iPriority = processAdaption.GetPriority( *object ); |
|
342 params.iAddressOfOwningProcess = processAdaption.GetAddressOfOwningProcess( *object ); |
|
343 params.iCreatorId = processAdaption.GetCreatorId( *object ); |
|
344 params.iSecurityZone = processAdaption.GetSecurityZone( *object ); |
|
345 params.iAttributes = processAdaption.GetAttributes( *object ); |
|
346 params.iAddressOfDataBssStackChunk = processAdaption.GetAddressOfDataBssStackChunk( *object ); |
|
347 } |
|
348 else if ( params.iType == EMemSpyDriverContainerTypeChunk ) |
|
349 { |
|
350 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeChunk" )); |
|
351 |
|
352 DChunk* object = (DChunk*) handleAsObject; |
|
353 DMemSpyDriverOSAdaptionDChunk& ca = OSAdaption().DChunk(); |
|
354 // |
|
355 params.iSize = ca.GetSize( *object ); |
|
356 params.iId = ca.GetOwningProcessId( *object ); |
|
357 params.iAddressOfOwningProcess = ca.GetAddressOfOwningProcess( *object ); |
|
358 params.iMaxSize = ca.GetMaxSize( *object ); |
|
359 params.iBottom = ca.GetBottom( *object ); |
|
360 params.iTop = ca.GetTop( *object ); |
|
361 params.iAttributes = ca.GetAttributes( *object ); |
|
362 params.iStartPos = ca.GetStartPos( *object ); |
|
363 params.iControllingOwner = ca.GetControllingOwnerId( *object ); |
|
364 params.iRestrictions = ca.GetRestrictions( *object ); |
|
365 params.iMapAttr = ca.GetMapAttr( *object ); |
|
366 params.iChunkType = ca.GetType( *object ); |
|
367 ca.GetNameOfOwningProcess( *object, params.iNameOfOwner ); |
|
368 } |
|
369 else if ( params.iType == EMemSpyDriverContainerTypeLibrary ) |
|
370 { |
|
371 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeLibrary" )); |
|
372 |
|
373 Kern::AccessCode(); |
|
374 // |
|
375 DLibrary* object = (DLibrary*) handleAsObject; |
|
376 DMemSpyDriverOSAdaptionDCodeSeg& csa = OSAdaption().DCodeSeg(); |
|
377 DCodeSeg* codeSeg = csa.GetCodeSeg( *object ); |
|
378 params.iAddressOfCodeSeg = (TUint8*)codeSeg; |
|
379 params.iMapCount = csa.GetMapCount( *object ); |
|
380 params.iState = csa.GetState( *object ); |
|
381 // |
|
382 if ( codeSeg ) |
346 { |
383 { |
347 DMemSpyDriverOSAdaptionDThread& threadAdaption = OSAdaption().DThread(); |
384 params.iSize = csa.GetSize( *codeSeg ); |
348 // |
|
349 params.iId = threadAdaption.GetId( *object ); |
|
350 params.iPriority = threadAdaption.GetPriority( *object ); |
|
351 params.iAddressOfOwningProcess = threadAdaption.GetAddressOfOwningProcess( *object ); |
|
352 threadAdaption.GetNameOfOwningProcess( *object, params.iNameOfOwner ); |
|
353 // |
|
354 object->Close( NULL ); |
|
355 } |
385 } |
356 } |
386 else |
357 else if ( params.iType == EMemSpyDriverContainerTypeProcess ) |
|
358 { |
|
359 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeProcess" )); |
|
360 |
|
361 DProcess* object = (DProcess*) handleAsObject; |
|
362 NKern::LockSystem(); |
|
363 r = object->Open(); |
|
364 NKern::UnlockSystem(); |
|
365 // |
|
366 if ( r == KErrNone ) |
|
367 { |
387 { |
368 DMemSpyDriverOSAdaptionDProcess& processAdaption = OSAdaption().DProcess(); |
388 r = KErrNotFound; |
369 // |
|
370 params.iId = processAdaption.GetId( *object ); |
|
371 // |
|
372 params.iPriority = processAdaption.GetPriority( *object ); |
|
373 params.iAddressOfOwningProcess = processAdaption.GetAddressOfOwningProcess( *object ); |
|
374 params.iCreatorId = processAdaption.GetCreatorId( *object ); |
|
375 params.iSecurityZone = processAdaption.GetSecurityZone( *object ); |
|
376 params.iAttributes = processAdaption.GetAttributes( *object ); |
|
377 params.iAddressOfDataBssStackChunk = processAdaption.GetAddressOfDataBssStackChunk( *object ); |
|
378 // |
|
379 object->Close( NULL ); |
|
380 } |
389 } |
381 } |
|
382 else if ( params.iType == EMemSpyDriverContainerTypeChunk ) |
|
383 { |
|
384 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeChunk" )); |
|
385 |
|
386 DChunk* object = (DChunk*) handleAsObject; |
|
387 NKern::LockSystem(); |
|
388 r = object->Open(); |
|
389 NKern::UnlockSystem(); |
|
390 // |
|
391 if ( r == KErrNone ) |
|
392 { |
|
393 DMemSpyDriverOSAdaptionDChunk& ca = OSAdaption().DChunk(); |
|
394 // |
|
395 params.iSize = ca.GetSize( *object ); |
|
396 params.iId = ca.GetOwningProcessId( *object ); |
|
397 params.iAddressOfOwningProcess = ca.GetAddressOfOwningProcess( *object ); |
|
398 params.iMaxSize = ca.GetMaxSize( *object ); |
|
399 params.iBottom = ca.GetBottom( *object ); |
|
400 params.iTop = ca.GetTop( *object ); |
|
401 params.iAttributes = ca.GetAttributes( *object ); |
|
402 params.iStartPos = ca.GetStartPos( *object ); |
|
403 params.iControllingOwner = ca.GetControllingOwnerId( *object ); |
|
404 params.iRestrictions = ca.GetRestrictions( *object ); |
|
405 params.iMapAttr = ca.GetMapAttr( *object ); |
|
406 params.iChunkType = ca.GetType( *object ); |
|
407 ca.GetNameOfOwningProcess( *object, params.iNameOfOwner ); |
|
408 // |
|
409 object->Close( NULL ); |
|
410 } |
|
411 } |
|
412 else if ( params.iType == EMemSpyDriverContainerTypeLibrary ) |
|
413 { |
|
414 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeLibrary" )); |
|
415 |
|
416 Kern::AccessCode(); |
|
417 // |
|
418 DLibrary* object = (DLibrary*) handleAsObject; |
|
419 NKern::LockSystem(); |
|
420 r = object->Open(); |
|
421 NKern::UnlockSystem(); |
|
422 // |
|
423 if ( r == KErrNone ) |
|
424 { |
|
425 DMemSpyDriverOSAdaptionDCodeSeg& csa = OSAdaption().DCodeSeg(); |
|
426 DCodeSeg* codeSeg = csa.GetCodeSeg( *object ); |
|
427 params.iAddressOfCodeSeg = (TUint8*)codeSeg; |
|
428 params.iMapCount = csa.GetMapCount( *object ); |
|
429 params.iState = csa.GetState( *object ); |
|
430 // |
|
431 if ( codeSeg ) |
|
432 { |
|
433 params.iSize = csa.GetSize( *codeSeg ); |
|
434 } |
|
435 else |
|
436 { |
|
437 r = KErrNotFound; |
|
438 } |
|
439 // |
|
440 object->Close( NULL ); |
|
441 } |
|
442 // |
390 // |
443 Kern::EndAccessCode(); |
391 Kern::EndAccessCode(); |
444 } |
392 } |
445 else if ( params.iType == EMemSpyDriverContainerTypeSemaphore ) |
393 else if ( params.iType == EMemSpyDriverContainerTypeSemaphore ) |
446 { |
394 { |
447 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeSemaphore" )); |
395 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeSemaphore" )); |
448 |
396 |
449 DSemaphore* object = (DSemaphore*) handleAsObject; |
397 DSemaphore* object = (DSemaphore*) handleAsObject; |
450 NKern::LockSystem(); |
398 DMemSpyDriverOSAdaptionDSemaphore& sa = OSAdaption().DSemaphore(); |
451 r = object->Open(); |
399 params.iCount = sa.GetCount( *object ); |
452 NKern::UnlockSystem(); |
400 params.iResetting = sa.GetResetting( *object ); |
453 // |
|
454 if ( r == KErrNone ) |
|
455 { |
|
456 DMemSpyDriverOSAdaptionDSemaphore& sa = OSAdaption().DSemaphore(); |
|
457 params.iCount = sa.GetCount( *object ); |
|
458 params.iResetting = sa.GetResetting( *object ); |
|
459 // |
|
460 object->Close( NULL ); |
|
461 } |
|
462 } |
401 } |
463 else if ( params.iType == EMemSpyDriverContainerTypeMutex ) |
402 else if ( params.iType == EMemSpyDriverContainerTypeMutex ) |
464 { |
403 { |
465 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeMutex" )); |
404 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeMutex" )); |
466 |
405 |
467 DMutex* object = (DMutex*) handleAsObject; |
406 DMutex* object = (DMutex*) handleAsObject; |
468 NKern::LockSystem(); |
407 DMemSpyDriverOSAdaptionDMutex& ma = OSAdaption().DMutex(); |
469 r = object->Open(); |
408 // |
470 NKern::UnlockSystem(); |
409 params.iCount = ma.GetHoldCount( *object ); |
471 // |
410 params.iWaitCount = ma.GetWaitCount( *object ); |
472 if ( r == KErrNone ) |
411 params.iResetting = ma.GetResetting( *object ); |
473 { |
412 params.iOrder = ma.GetOrder( *object ); |
474 DMemSpyDriverOSAdaptionDMutex& ma = OSAdaption().DMutex(); |
|
475 // |
|
476 params.iCount = ma.GetHoldCount( *object ); |
|
477 params.iWaitCount = ma.GetWaitCount( *object ); |
|
478 params.iResetting = ma.GetResetting( *object ); |
|
479 params.iOrder = ma.GetOrder( *object ); |
|
480 // |
|
481 object->Close( NULL ); |
|
482 } |
|
483 } |
413 } |
484 else if ( params.iType == EMemSpyDriverContainerTypeTimer ) |
414 else if ( params.iType == EMemSpyDriverContainerTypeTimer ) |
485 { |
415 { |
486 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeTimer" )); |
416 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeTimer" )); |
487 |
417 |
488 // Get timer properties |
418 // Get timer properties |
489 DTimer* object = (DTimer*) handleAsObject; |
419 DTimer* object = (DTimer*) handleAsObject; |
490 NKern::LockSystem(); |
420 DMemSpyDriverOSAdaptionDTimer& ta = OSAdaption().DTimer(); |
491 r = object->Open(); |
421 // |
492 NKern::UnlockSystem(); |
422 params.iTimerType = MapToMemSpyTimerType( ta.GetType( *object ) ); |
493 // |
423 params.iTimerState = MapToMemSpyTimerState( ta.GetState( *object ) ); |
494 if ( r == KErrNone ) |
424 } |
|
425 else if ( params.iType == EMemSpyDriverContainerTypeServer ) |
|
426 { |
|
427 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeServer" )); |
|
428 |
|
429 DServer* object = (DServer*) handleAsObject; |
|
430 DMemSpyDriverOSAdaptionDServer& sa = OSAdaption().DServer(); |
|
431 // |
|
432 params.iCount = sa.GetSessionCount( *object ); |
|
433 params.iId = sa.GetOwningThreadId( *object ); |
|
434 params.iSessionType = sa.GetSessionType( *object ); |
|
435 params.iAddressOfOwningThread = sa.GetAddressOfOwningThread( *object ); |
|
436 sa.GetNameOfOwningThread( *object, params.iNameOfOwner ); |
|
437 } |
|
438 else if ( params.iType == EMemSpyDriverContainerTypeSession ) |
|
439 { |
|
440 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeSession" )); |
|
441 |
|
442 DSession* object = (DSession*) handleAsObject; |
|
443 DMemSpyDriverOSAdaptionDServer& serverAdaption = OSAdaption().DServer(); |
|
444 DMemSpyDriverOSAdaptionDSession& sessionAdaption = OSAdaption().DSession(); |
|
445 |
|
446 params.iName.Zero(); |
|
447 |
|
448 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - getting session type..." )); |
|
449 params.iSessionType = sessionAdaption.GetSessionType( *object ); |
|
450 params.iAddressOfServer = sessionAdaption.GetAddressOfServer( *object ); |
|
451 params.iTotalAccessCount = sessionAdaption.GetTotalAccessCount( *object ); |
|
452 params.iSvrSessionType = sessionAdaption.GetSessionType( *object ); |
|
453 params.iMsgCount = sessionAdaption.GetMsgCount( *object ); |
|
454 params.iMsgLimit = sessionAdaption.GetMsgLimit( *object ); |
|
455 |
|
456 // Its more useful in this instance, if the name object |
|
457 // points to the server which the session is connected to |
|
458 // (rather than displaying a process-local name). |
|
459 DServer* server = (DServer*)CheckedOpen(EMemSpyDriverContainerTypeServer, sessionAdaption.GetServer( *object )); |
|
460 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - getting full name, server: 0x%08x", server )); |
|
461 // |
|
462 if ( server ) |
495 { |
463 { |
496 DMemSpyDriverOSAdaptionDTimer& ta = OSAdaption().DTimer(); |
464 server->FullName( params.iName ); |
497 // |
465 |
498 params.iTimerType = MapToMemSpyTimerType( ta.GetType( *object ) ); |
466 // Continue as normal for other items |
499 params.iTimerState = MapToMemSpyTimerState( ta.GetState( *object ) ); |
467 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - server: 0x%08x, server->iOwningThread: 0x%08x", server, server->iOwningThread )); |
500 // |
468 DThread* owningThread = serverAdaption.GetOwningThread( *server ); |
501 object->Close( NULL ); |
469 if ( owningThread ) |
|
470 { |
|
471 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - getting server thread id..." )); |
|
472 params.iId = serverAdaption.GetOwningThreadId( *server ); |
|
473 } |
|
474 |
|
475 server->Close(NULL); |
502 } |
476 } |
503 } |
477 } |
504 else if ( params.iType == EMemSpyDriverContainerTypeServer ) |
|
505 { |
|
506 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeServer" )); |
|
507 |
|
508 DServer* object = (DServer*) handleAsObject; |
|
509 NKern::LockSystem(); |
|
510 r = object->Open(); |
|
511 NKern::UnlockSystem(); |
|
512 // |
|
513 if ( r == KErrNone ) |
|
514 { |
|
515 DMemSpyDriverOSAdaptionDServer& sa = OSAdaption().DServer(); |
|
516 // |
|
517 params.iCount = sa.GetSessionCount( *object ); |
|
518 params.iId = sa.GetOwningThreadId( *object ); |
|
519 params.iSessionType = sa.GetSessionType( *object ); |
|
520 params.iAddressOfOwningThread = sa.GetAddressOfOwningThread( *object ); |
|
521 sa.GetNameOfOwningThread( *object, params.iNameOfOwner ); |
|
522 // |
|
523 object->Close( NULL ); |
|
524 } |
|
525 } |
|
526 else if ( params.iType == EMemSpyDriverContainerTypeSession ) |
|
527 { |
|
528 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeSession" )); |
|
529 |
|
530 DSession* object = (DSession*) handleAsObject; |
|
531 NKern::LockSystem(); |
|
532 r = object->Open(); |
|
533 NKern::UnlockSystem(); |
|
534 // |
|
535 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - open error: %d", r )); |
|
536 if ( r == KErrNone ) |
|
537 { |
|
538 DMemSpyDriverOSAdaptionDServer& serverAdaption = OSAdaption().DServer(); |
|
539 DMemSpyDriverOSAdaptionDSession& sessionAdaption = OSAdaption().DSession(); |
|
540 |
|
541 params.iName.Zero(); |
|
542 |
|
543 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - getting session type..." )); |
|
544 params.iSessionType = sessionAdaption.GetSessionType( *object ); |
|
545 params.iAddressOfServer = sessionAdaption.GetAddressOfServer( *object ); |
|
546 params.iTotalAccessCount = sessionAdaption.GetTotalAccessCount( *object ); |
|
547 params.iSvrSessionType = sessionAdaption.GetSessionType( *object ); |
|
548 params.iMsgCount = sessionAdaption.GetMsgCount( *object ); |
|
549 params.iMsgLimit = sessionAdaption.GetMsgLimit( *object ); |
|
550 |
|
551 // Its more useful in this instance, if the name object |
|
552 // points to the server which the session is connected to |
|
553 // (rather than displaying a process-local name). |
|
554 DServer* server = sessionAdaption.GetServer( *object ); |
|
555 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - getting full name, server: 0x%08x", server )); |
|
556 // |
|
557 if ( server ) |
|
558 { |
|
559 NKern::LockSystem(); |
|
560 r = server->Open(); |
|
561 NKern::UnlockSystem(); |
|
562 |
|
563 if ( r == KErrNone ) |
|
564 { |
|
565 server->FullName( params.iName ); |
|
566 |
|
567 // Continue as normal for other items |
|
568 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - server: 0x%08x, server->iOwningThread: 0x%08x", server, server->iOwningThread )); |
|
569 DThread* owningThread = serverAdaption.GetOwningThread( *server ); |
|
570 if ( owningThread ) |
|
571 { |
|
572 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - getting server thread id..." )); |
|
573 params.iId = serverAdaption.GetOwningThreadId( *server ); |
|
574 } |
|
575 |
|
576 server->Close( NULL ); |
|
577 } |
|
578 } |
|
579 |
|
580 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - closing session object..." )); |
|
581 object->Close( NULL ); |
|
582 } |
|
583 } |
|
584 else if ( params.iType == EMemSpyDriverContainerTypeLogicalDevice ) |
478 else if ( params.iType == EMemSpyDriverContainerTypeLogicalDevice ) |
585 { |
479 { |
586 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeLogicalDevice" )); |
480 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeLogicalDevice" )); |
587 |
481 |
588 DLogicalDevice* object = (DLogicalDevice*) handleAsObject; |
482 DLogicalDevice* object = (DLogicalDevice*) handleAsObject; |
589 NKern::LockSystem(); |
483 DMemSpyDriverOSAdaptionDLogicalDevice& lda = OSAdaption().DLogicalDevice(); |
590 r = object->Open(); |
484 params.iOpenChannels = lda.GetOpenChannels( *object ); |
591 NKern::UnlockSystem(); |
485 params.iVersion = lda.GetVersion( *object ); |
592 // |
486 params.iParseMask = lda.GetParseMask( *object ); |
593 if ( r == KErrNone ) |
487 params.iUnitsMask = lda.GetUnitsMask( *object ); |
594 { |
|
595 DMemSpyDriverOSAdaptionDLogicalDevice& lda = OSAdaption().DLogicalDevice(); |
|
596 params.iOpenChannels = lda.GetOpenChannels( *object ); |
|
597 params.iVersion = lda.GetVersion( *object ); |
|
598 params.iParseMask = lda.GetParseMask( *object ); |
|
599 params.iUnitsMask = lda.GetUnitsMask( *object ); |
|
600 // |
|
601 object->Close( NULL ); |
|
602 } |
|
603 } |
488 } |
604 else if ( params.iType == EMemSpyDriverContainerTypePhysicalDevice ) |
489 else if ( params.iType == EMemSpyDriverContainerTypePhysicalDevice ) |
605 { |
490 { |
606 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypePhysicalDevice" )); |
491 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypePhysicalDevice" )); |
607 |
492 |
608 DPhysicalDevice* object = (DPhysicalDevice*) handleAsObject; |
493 DPhysicalDevice* object = (DPhysicalDevice*) handleAsObject; |
609 NKern::LockSystem(); |
494 DMemSpyDriverOSAdaptionDPhysicalDevice& pda = OSAdaption().DPhysicalDevice(); |
610 r = object->Open(); |
495 params.iVersion = pda.GetVersion( *object ); |
611 NKern::UnlockSystem(); |
496 params.iUnitsMask = pda.GetUnitsMask( *object ); |
612 // |
497 params.iAddressOfCodeSeg = pda.GetAddressOfCodeSeg( *object ); |
613 if ( r == KErrNone ) |
|
614 { |
|
615 DMemSpyDriverOSAdaptionDPhysicalDevice& pda = OSAdaption().DPhysicalDevice(); |
|
616 params.iVersion = pda.GetVersion( *object ); |
|
617 params.iUnitsMask = pda.GetUnitsMask( *object ); |
|
618 params.iAddressOfCodeSeg = pda.GetAddressOfCodeSeg( *object ); |
|
619 // |
|
620 object->Close( NULL ); |
|
621 } |
|
622 } |
498 } |
623 else if ( params.iType == EMemSpyDriverContainerTypeLogicalChannel ) |
499 else if ( params.iType == EMemSpyDriverContainerTypeLogicalChannel ) |
624 { |
500 { |
625 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeLogicalChannel" )); |
501 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeLogicalChannel" )); |
626 } |
502 } |
627 else if ( params.iType == EMemSpyDriverContainerTypeChangeNotifier ) |
503 else if ( params.iType == EMemSpyDriverContainerTypeChangeNotifier ) |
628 { |
504 { |
629 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeChangeNotifier" )); |
505 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeChangeNotifier" )); |
630 |
506 |
631 DChangeNotifier* object = (DChangeNotifier*) handleAsObject; |
507 DChangeNotifier* object = (DChangeNotifier*) handleAsObject; |
632 NKern::LockSystem(); |
508 DMemSpyDriverOSAdaptionDChangeNotifier& cna = OSAdaption().DChangeNotifier(); |
633 r = object->Open(); |
509 params.iChanges = cna.GetChanges( *object ); |
634 NKern::UnlockSystem(); |
510 params.iAddressOfOwningThread = cna.GetAddressOfOwningThread( *object ); |
635 // |
511 cna.GetNameOfOwningThread( *object, params.iNameOfOwner ); |
636 if ( r == KErrNone ) |
|
637 { |
|
638 DMemSpyDriverOSAdaptionDChangeNotifier& cna = OSAdaption().DChangeNotifier(); |
|
639 params.iChanges = cna.GetChanges( *object ); |
|
640 params.iAddressOfOwningThread = cna.GetAddressOfOwningThread( *object ); |
|
641 cna.GetNameOfOwningThread( *object, params.iNameOfOwner ); |
|
642 // |
|
643 object->Close( NULL ); |
|
644 } |
|
645 } |
512 } |
646 else if ( params.iType == EMemSpyDriverContainerTypeUndertaker ) |
513 else if ( params.iType == EMemSpyDriverContainerTypeUndertaker ) |
647 { |
514 { |
648 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeUndertaker" )); |
515 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeUndertaker" )); |
649 |
516 |
650 DUndertaker* object = (DUndertaker*) handleAsObject; |
517 DUndertaker* object = (DUndertaker*) handleAsObject; |
651 NKern::LockSystem(); |
518 DMemSpyDriverOSAdaptionDUndertaker& uta = OSAdaption().DUndertaker(); |
652 r = object->Open(); |
519 params.iAddressOfOwningThread = uta.GetAddressOfOwningThread( *object ); |
653 NKern::UnlockSystem(); |
520 uta.GetNameOfOwningThread( *object, params.iNameOfOwner ); |
654 // |
|
655 if ( r == KErrNone ) |
|
656 { |
|
657 DMemSpyDriverOSAdaptionDUndertaker& uta = OSAdaption().DUndertaker(); |
|
658 params.iAddressOfOwningThread = uta.GetAddressOfOwningThread( *object ); |
|
659 uta.GetNameOfOwningThread( *object, params.iNameOfOwner ); |
|
660 // |
|
661 object->Close( NULL ); |
|
662 } |
|
663 } |
521 } |
664 else if ( params.iType == EMemSpyDriverContainerTypeMsgQueue ) |
522 else if ( params.iType == EMemSpyDriverContainerTypeMsgQueue ) |
665 { |
523 { |
666 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeMsgQueue" )); |
524 TRACE( Kern::Printf("DMemSpyDriverLogChanContainers::GetGenericHandleInfo() - EMemSpyDriverContainerTypeMsgQueue" )); |
667 } |
525 } |