VirtualBox

source: vbox/trunk/include/iprt/krnlmod.h@ 73768

Last change on this file since 73768 was 69174, checked in by vboxsync, 7 years ago

nits

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.3 KB
Line 
1/** @file
2 * IPRT - Kernel module.
3 */
4
5/*
6 * Copyright (C) 2017 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26#ifndef ___iprt_krnlmod_h
27#define ___iprt_krnlmod_h
28
29#include <iprt/cdefs.h>
30#include <iprt/types.h>
31
32
33RT_C_DECLS_BEGIN
34
35/** @defgroup grp_rt_kmod RTKrnlMod - Kernel module/driver userspace side API.
36 * @ingroup grp_rt
37 * @{
38 */
39
40/**
41 * Checks whether the given kernel module was loaded.
42 *
43 * @returns IPRT status code.
44 * @param pszName The driver name to check.
45 * @param pfLoaded Where to store the flag whether the module is loaded on success.
46 */
47RTDECL(int) RTKrnlModQueryLoaded(const char *pszName, bool *pfLoaded);
48
49/**
50 * Returns the kernel module information handle for the given loaded kernel module.
51 *
52 * @returns IPRT status code.
53 * @retval VERR_NOT_FOUND if the kernel driver is not loaded.
54 * @param pszName The driver name.
55 * @param phKrnlModInfo Where to store the handle to the kernel module information record.
56 */
57RTDECL(int) RTKrnlModLoadedQueryInfo(const char *pszName, PRTKRNLMODINFO phKrnlModInfo);
58
59/**
60 * Returns the number of kernel modules loaded on the host system.
61 *
62 * @returns Number of kernel modules loaded.
63 */
64RTDECL(uint32_t) RTKrnlModLoadedGetCount(void);
65
66/**
67 * Returns all loaded kernel modules on the host.
68 *
69 * @returns IPRT status code.
70 * @retval VERR_BUFFER_OVERFLOW if there are not enough entries in the passed handle array.
71 * The required number of entries will be returned in pcEntries.
72 * @param pahKrnlModInfo Where to store the handles to the kernel module information records
73 * on success.
74 * @param cEntriesMax Maximum number of entries fitting in the given array.
75 * @param pcEntries Where to store the number of entries used/required.
76 */
77RTDECL(int) RTKrnlModLoadedQueryInfoAll(PRTKRNLMODINFO pahKrnlModInfo, uint32_t cEntriesMax,
78 uint32_t *pcEntries);
79
80/**
81 * Retains the given kernel module information record handle.
82 *
83 * @returns New reference count.
84 * @param hKrnlModInfo The kernel module information record handle.
85 */
86RTDECL(uint32_t) RTKrnlModInfoRetain(RTKRNLMODINFO hKrnlModInfo);
87
88/**
89 * Releases the given kernel module information record handle.
90 *
91 * @returns New reference count, on 0 the handle is destroyed.
92 * @param hKrnlModInfo The kernel module information record handle.
93 */
94RTDECL(uint32_t) RTKrnlModInfoRelease(RTKRNLMODINFO hKrnlModInfo);
95
96/**
97 * Returns the number of references held onto the kernel module by other
98 * drivers or userspace clients.
99 *
100 * @returns Number of references held on the kernel module.
101 * @param hKrnlModInfo The kernel module information record handle.
102 */
103RTDECL(uint32_t) RTKrnlModInfoGetRefCnt(RTKRNLMODINFO hKrnlModInfo);
104
105/**
106 * Returns the name of the kernel module.
107 *
108 * @returns Pointer to the kernel module name.
109 * @param hKrnlModInfo The kernel module information record handle.
110 */
111RTDECL(const char *) RTKrnlModInfoGetName(RTKRNLMODINFO hKrnlModInfo);
112
113/**
114 * Returns the filepath of the kernel module.
115 *
116 * @returns Pointer to the kernel module path.
117 * @param hKrnlModInfo The kernel module information record handle.
118 */
119RTDECL(const char *) RTKrnlModInfoGetFilePath(RTKRNLMODINFO hKrnlModInfo);
120
121/**
122 * Returns the size of the kernel module.
123 *
124 * @returns Size of the kernel module in bytes.
125 * @param hKrnlModInfo The kernel module information record handle.
126 */
127RTDECL(size_t) RTKrnlModInfoGetSize(RTKRNLMODINFO hKrnlModInfo);
128
129/**
130 * Returns the load address of the kernel module.
131 *
132 * @returns Load address of the kernel module.
133 * @param hKrnlModInfo The kernel module information record handle.
134 */
135RTDECL(RTR0UINTPTR) RTKrnlModInfoGetLoadAddr(RTKRNLMODINFO hKrnlModInfo);
136
137/**
138 * Query the kernel information record for a referencing kernel module of the
139 * given record.
140 *
141 * @returns IPRT status code.
142 * @param hKrnlModInfo The kernel module information record handle.
143 * @param idx Referencing kernel module index (< reference count
144 * as retrieved by RTKrnlModInfoGetRefCnt() ).
145 * @param phKrnlModInfoRef Where to store the handle to the referencing kernel module
146 * information record.
147 */
148RTDECL(int) RTKrnlModInfoQueryRefModInfo(RTKRNLMODINFO hKrnlModInfo, uint32_t idx,
149 PRTKRNLMODINFO phKrnlModInfoRef);
150
151/** @} */
152
153RT_C_DECLS_END
154
155#endif
156
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use