VirtualBox

Changeset 19975 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 24, 2009 7:44:58 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47677
Message:

initterm-r0drv-nt.cpp: Proper Vista64 test.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/nt/initterm-r0drv-nt.cpp

    r19971 r19975  
    9292    ULONG MinorVersion = 0;
    9393    ULONG BuildNumber  = 0;
    94     PsGetVersion(&MajorVersion, &MinorVersion, &BuildNumber, NULL);
     94    BOOLEAN fChecked = PsGetVersion(&MajorVersion, &MinorVersion, &BuildNumber, NULL);
    9595
    9696    KIRQL OldIrql;
     
    136136            g_offrtNtPbDpcQueueDepth = 0x1f00 + 0x18;
    137137        }
    138         /** @todo proper detection! */
    139         else if (pbPrcb[0x3375] <= 1)
     138        else if (   BuildNumber == 6000                         /* Vista/AMD64 */
     139                 && !memcmp(&pbPrcb[0x38bc], &u.szVendor[0], 4*3))
    140140        {
    141141            g_offrtNtPbQuantumEnd    = 0x3375;
    142142            g_cbrtNtPbQuantumEnd     = 1;
    143             g_offrtNtPbDpcQueueDepth = 0;
     143            g_offrtNtPbDpcQueueDepth = 0x3300 + 0x18;
    144144        }
    145145
     
    148148#endif
    149149    }
    150     __except(EXCEPTION_EXECUTE_HANDLER)
     150    __except(EXCEPTION_EXECUTE_HANDLER) /** @todo this handler doesn't seem to work... */
    151151    {
    152152        g_offrtNtPbQuantumEnd    = 0;
     
    159159#ifndef IN_GUEST /** @todo fix above for all Nt versions. */
    160160    if (!g_offrtNtPbQuantumEnd && !g_offrtNtPbDpcQueueDepth)
    161         DbgPrint("IPRT: Neither _KPRCB::QuantumEnd nor _KPRCB::DpcQueueDepth was not found!\n");
     161        DbgPrint("IPRT: Neither _KPRCB::QuantumEnd nor _KPRCB::DpcQueueDepth was not found! Kernel %u.%u %u %s\n",
     162                 MajorVersion, MinorVersion, BuildNumber, fChecked ? "checked" : "free");
     163# ifdef DEBUG
     164    else
     165        DbgPrint("IPRT: _KPRCB:{.QuantumEnd=%x/%d, .DpcQueueDepth=%x/%d} Kernel %ul.%ul %ul %s\n",
     166                 g_offrtNtPbQuantumEnd, g_cbrtNtPbQuantumEnd, g_offrtNtPbDpcQueueDepth,
     167                 MajorVersion, MinorVersion, BuildNumber, fChecked ? "checked" : "free");
     168# endif
    162169#endif
    163170
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette