summaryrefslogtreecommitdiff
path: root/src/mscorlib/src/System/Runtime/InteropServices/PInvokeMap.cs
blob: ed289fd14b26a8ac1516faaae04bc0634631bc2d (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
39
40
41
42
43
44
45
46
47
48
49
50
// 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.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// PInvokeMap is an enum that defines the PInvoke attributes.  These
//  values are defined in CorHdr.h.
//
//

using System.Runtime.InteropServices;
using System;

namespace System.Runtime.InteropServices
{
    // This Enum matchs the CorPinvokeMap defined in CorHdr.h
    [Serializable]
    internal enum PInvokeMap
    {
        NoMangle = 0x0001,   // Pinvoke is to use the member name as specified.
        CharSetMask = 0x0006,   // Heuristic used in data type & name mapping.
        CharSetNotSpec = 0x0000,
        CharSetAnsi = 0x0002,
        CharSetUnicode = 0x0004,
        CharSetAuto = 0x0006,

        PinvokeOLE = 0x0020,   // Heuristic: pinvoke will return hresult, with return value becoming the retval param. Not relevant for fields. 
        SupportsLastError = 0x0040,   // Information about target function. Not relevant for fields.

        BestFitMask = 0x0030,
        BestFitEnabled = 0x0010,
        BestFitDisabled = 0x0020,
        BestFitUseAsm = 0x0030,

        ThrowOnUnmappableCharMask = 0x3000,
        ThrowOnUnmappableCharEnabled = 0x1000,
        ThrowOnUnmappableCharDisabled = 0x2000,
        ThrowOnUnmappableCharUseAsm = 0x3000,

        // None of the calling convention flags is relevant for fields.
        CallConvMask = 0x0700,
        CallConvWinapi = 0x0100,   // Pinvoke will use native callconv appropriate to target windows platform.
        CallConvCdecl = 0x0200,
        CallConvStdcall = 0x0300,
        CallConvThiscall = 0x0400,   // In M9, pinvoke will raise exception.
        CallConvFastcall = 0x0500,
    }
}