rem: KPrintF( "    Requested resources:\n" ); ShowResourceGroup( dev->m_Options, res );
context: ShowCards( struct ISAPNPBase* res ){  struct ISAPNP_Card* card;  for( card = (struct ISAPNP_Card*) res->m_Cards.lh_Head;        card->m_Node.ln_Succ != NULL;        card = (struct ISAPNP_Card*) card->m_Node.ln_Succ )  {    struct ISAPNP_Device* dev;    int                   dev_id;    KPrintF( "Card %ld: %s%03lx%lx/%ld ('%s')\n",             card->m_CSN,              card->m_ID.m_Vendor, card->m_ID.m_ProductID, card->m_ID.m_Revision,             card->m_SerialNumber,             card->m_Node.ln_Name != NULL ? card->m_Node.ln_Name : "" );    for( dev = (struct ISAPNP_Device*) card->m_Devices.lh_Head;         dev->m_Node.ln_Succ != NULL;          dev = (struct ISAPNP_Device*) dev->m_Node.ln_Succ )    {      struct ISAPNP_Identifier* id;      struct ISAPNP_Resource*   r;      KPrintF( "  Logical device %ld: ",               dev->m_DeviceNumber );      for( id = (struct ISAPNP_Identifier*) dev->m_IDs.mlh_Head;           id->m_MinNode.mln_Succ != NULL;           id = (struct ISAPNP_Identifier*) id->m_MinNode.mln_Succ )      {        KPrintF( "%s%03lx%lx ", id->m_Vendor, id->m_ProductID, id->m_Revision );      }      if( dev->m_Node.ln_Name != NULL )      {        KPrintF( "('%s')", dev->m_Node.ln_Name );      }      KPrintF( "\n" );      KPrintF( "    Allocated resources:\n" );      if( dev->m_Resources.mlh_Head->mln_Succ != NULL )      {        for( r = (struct ISAPNP_Resource*) dev->m_Resources.mlh_Head;             r->m_MinNode.mln_Succ != NULL;             r = (struct ISAPNP_Resource*) r->m_MinNode.mln_Succ )        {          KPrintF( "      " );          ShowResource( r, res );        }      }      else      {        KPrintF( "      None.\n" );      }      KPrintF( "    Requested resources:\n" );      ShowResourceGroup( dev->m_Options, res );    }  }}