68fce2926ac031f46c25460569296f66620e9d52vboxsync * IPRT R0 Testcase - Debug kernel information.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * Copyright (C) 2012 Oracle Corporation
68fce2926ac031f46c25460569296f66620e9d52vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
68fce2926ac031f46c25460569296f66620e9d52vboxsync * available from http://www.virtualbox.org. This file is free software;
68fce2926ac031f46c25460569296f66620e9d52vboxsync * you can redistribute it and/or modify it under the terms of the GNU
68fce2926ac031f46c25460569296f66620e9d52vboxsync * General Public License (GPL) as published by the Free Software
68fce2926ac031f46c25460569296f66620e9d52vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * The contents of this file may alternatively be used under the terms
68fce2926ac031f46c25460569296f66620e9d52vboxsync * of the Common Development and Distribution License Version 1.0
68fce2926ac031f46c25460569296f66620e9d52vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * VirtualBox OSE distribution, in which case the provisions of the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * CDDL are applicable instead of those of the GPL.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * You may elect to license modified versions of this file under the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * terms and conditions of either the GPL or the CDDL or both.
68fce2926ac031f46c25460569296f66620e9d52vboxsync/*******************************************************************************
68fce2926ac031f46c25460569296f66620e9d52vboxsync* Header Files *
68fce2926ac031f46c25460569296f66620e9d52vboxsync*******************************************************************************/
68fce2926ac031f46c25460569296f66620e9d52vboxsync * Service request callback function.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * @returns VBox status code.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * @param pSession The caller's session.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * @param u64Arg 64-bit integer argument.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * @param pReqHdr The request header. Input / Output. Optional.
68fce2926ac031f46c25460569296f66620e9d52vboxsyncDECLEXPORT(int) TSTR0DbgKrnlInfoSrvReqHandler(PSUPDRVSESSION pSession, uint32_t uOperation,
68fce2926ac031f46c25460569296f66620e9d52vboxsync * The big switch.
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTStrPrintf(pszErr, cchErr, "!42failure42%1024s", "");
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoOpen(&hKrnlInfo, 1), VERR_INVALID_PARAMETER);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoOpen(NULL, 0), VERR_INVALID_PARAMETER);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoOpen(&hKrnlInfo, 0), VINF_SUCCESS);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoQueryMember(NULL, "Test", "Test", &offMemb), VERR_INVALID_HANDLE);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoQueryMember(hKrnlInfo, NULL, "Test", &offMemb), VERR_INVALID_PARAMETER);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoQueryMember(hKrnlInfo, "Test", NULL, &offMemb), VERR_INVALID_PARAMETER);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoQueryMember(hKrnlInfo, "Test", "Test", NULL), VERR_INVALID_PARAMETER);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoQuerySymbol(NULL, "Test", "Test", &pvSymbol), VERR_INVALID_HANDLE);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoQuerySymbol(hKrnlInfo, "TestModule", "Test", &pvSymbol), VERR_MODULE_NOT_FOUND);
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTR0TESTR0_CHECK_RC_BREAK(RTR0DbgKrnlInfoQuerySymbol(hKrnlInfo, NULL, NULL, &pvSymbol), VERR_INVALID_PARAMETER);
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** @todo check member retreival based on target platform. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** @todo check symbol lookups based on target platform. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync RTStrPrintf(pszErr, cchErr, "!Unknown test #%d", uOperation);
68fce2926ac031f46c25460569296f66620e9d52vboxsync /* The error indicator is the '!' in the message buffer. */