VirtualBox

Changeset 83474 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Mar 28, 2020 4:48:23 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
136713
Message:

VMM/NEM: Added more VERR_NEM_MISSING_KERNEL_API status codes so we can better tell what does wrong.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/NEMR0Native-win.cpp

    r82968 r83474  
    179179    {
    180180        rc = RTR0DbgKrnlInfoQuerySymbol(hKrnlInfo, NULL, "HvlInvokeHypercall", (void **)&g_pfnHvlInvokeHypercall);
     181        if (RT_FAILURE(rc))
     182            rc = VERR_NEM_MISSING_KERNEL_API_1;
    181183        if (RT_SUCCESS(rc))
     184        {
    182185            rc = RTR0DbgKrnlInfoQuerySymbol(hKrnlInfo, "winhvr.sys", "WinHvDepositMemory", (void **)&g_pfnWinHvDepositMemory);
     186            if (RT_FAILURE(rc))
     187                rc = rc == VERR_MODULE_NOT_FOUND ? VERR_NEM_MISSING_KERNEL_API_2 : VERR_NEM_MISSING_KERNEL_API_3;
     188        }
    183189        RTR0DbgKrnlInfoRelease(hKrnlInfo);
    184190        if (RT_SUCCESS(rc))
     
    223229            }
    224230        }
    225         else
    226             rc = VERR_NEM_MISSING_KERNEL_API;
    227231    }
    228232
     
    427431     * Validate.
    428432     */
    429     AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     433    AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    430434
    431435    AssertReturn(cPages > 0, VERR_OUT_OF_RANGE);
     
    534538     * Validate input.
    535539     */
    536     AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     540    AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    537541
    538542    AssertReturn(cPages > 0, VERR_OUT_OF_RANGE);
     
    617621    HV_INPUT_SET_VP_REGISTERS *pInput = (HV_INPUT_SET_VP_REGISTERS *)pGVCpu->nemr0.s.HypercallData.pbPage;
    618622    AssertPtrReturn(pInput, VERR_INTERNAL_ERROR_3);
    619     AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     623    AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    620624
    621625    pInput->PartitionId = pGVM->nemr0.s.idHvPartition;
     
    13011305    {
    13021306        PGVMCPU pGVCpu = &pGVM->aCpus[idCpu];
    1303         AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     1307        AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    13041308
    13051309        /*
     
    13331337    HV_INPUT_GET_VP_REGISTERS *pInput = (HV_INPUT_GET_VP_REGISTERS *)pGVCpu->nemr0.s.HypercallData.pbPage;
    13341338    AssertPtrReturn(pInput, VERR_INTERNAL_ERROR_3);
    1335     AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     1339    AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    13361340    Assert(pCtx == &pGVCpu->cpum.GstCtx);
    13371341
     
    22182222    {
    22192223        PGVMCPU pGVCpu = &pGVM->aCpus[idCpu];
    2220         AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     2224        AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    22212225
    22222226        /*
     
    22502254    HV_INPUT_GET_VP_REGISTERS *pInput = (HV_INPUT_GET_VP_REGISTERS *)pGVCpu->nemr0.s.HypercallData.pbPage;
    22512255    AssertPtrReturn(pInput, VERR_INTERNAL_ERROR_3);
    2252     AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     2256    AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    22532257
    22542258    pInput->PartitionId = pGVM->nemr0.s.idHvPartition;
     
    23002304    {
    23012305        PGVMCPU pGVCpu = &pGVM->aCpus[idCpu];
    2302         AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     2306        AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    23032307
    23042308        /*
     
    23292333NEM_TMPL_STATIC int nemR0WinResumeCpuTickOnAll(PGVM pGVM, PGVMCPU pGVCpu, uint64_t uPausedTscValue)
    23302334{
    2331     AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     2335    AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    23322336
    23332337    /*
     
    24082412    {
    24092413        PGVMCPU pGVCpu = &pGVM->aCpus[idCpu];
    2410         AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     2414        AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    24112415
    24122416        /*
     
    24582462    if (RT_SUCCESS(rc))
    24592463    {
    2460         AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     2464        AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    24612465
    24622466        PNEMR0HYPERCALLDATA pHypercallData = idCpu != NIL_VMCPUID
     
    25262530    if (RT_SUCCESS(rc))
    25272531    {
    2528         AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API);
     2532        AssertReturn(g_pfnHvlInvokeHypercall, VERR_NEM_MISSING_KERNEL_API_1);
    25292533
    25302534        PGVMCPU pGVCpu = &pGVM->aCpus[idCpu];
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