summaryrefslogtreecommitdiff
path: root/src/inc/clr/win32.h
blob: a0e00c6321325fbc67628dfd873916ee3f420a69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
//
// clr/win32.h
//
// Provides Win32-specific utility functionality.
//

//

#ifndef clr_win32_h
#define clr_win32_h

#include "winwrap.h"

namespace clr
{
    namespace win32
    {
        // Prevents an HMODULE from being unloaded until process termination.
        inline
        HRESULT PreventModuleUnload(HMODULE hMod)
        {
            if (!WszGetModuleHandleEx(
                GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_PIN,
                reinterpret_cast<LPCTSTR>(hMod),
                &hMod))
            {
                return HRESULT_FROM_GetLastError();
            }

            return S_OK;
        }
    } // namespace win
} // namespace clr

#endif // clr_win32_h