Sunday, May 12, 2013

AttachedDevice和NextDevice

VOID DetachSomeDevFromTargetDriver(PDRIVER_OBJECT pOwnerDrvObject)
{
PDEVICE_OBJECT pDevObj,pNextDev;

if (pOwnerDrvObject)
{
   //取第一个设备
   pNextDev=pOwnerDrvObject->DeviceObject;
   do
   {
    pDevObj=pNextDev;
   
while(pDevObj->AttachedDevice)
    {

     if (IsSomeDevice(pDevObj->AttachedDevice))
     {
      DbgPrint("Detaching Device:0x%08X\n",pDevObj->AttachedDevice);
      IoDetachDevice(pDevObj);     }
     else
     {
      pDevObj=pDevObj->AttachedDevice;//若不是,取上一层设备
     }
    }
    pNextDev=pNextDev->NextDevice;
   } while(pNextDev);
}
}

No comments:

Post a Comment