UnmanagedType Sabit listesi

Tanım

Parametrelerin veya alanların yönetilmeyen koda nasıl sıralanmış olduğunu tanımlar.

public enum class UnmanagedType
public enum UnmanagedType
[System.Serializable]
public enum UnmanagedType
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum UnmanagedType
type UnmanagedType = 
[<System.Serializable>]
type UnmanagedType = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type UnmanagedType = 
Public Enum UnmanagedType
Devralma
UnmanagedType
Öznitelikler

Alanlar

AnsiBStr 35

Uzunluk ön ekli tek bayt olan ansi karakter dizesi. Bu üyeyi String veri türünde kullanabilirsiniz.

AsAny 40

Çalışma zamanında bir nesnenin türünü belirleyen ve nesneyi bu tür olarak sıralayan dinamik bir tür. Bu üye yalnızca platform çağırma yöntemleri için geçerlidir.

Bool 2

4 baytlık Boole değeri (true != 0, false = 0). Bu Win32 BOOL türüdür.

BStr 19

Uzunluk ön eki çift bayt olan unicode karakter dizesi. COM'daki String varsayılan dize olan bu üyeyi veri türünde kullanabilirsiniz.

ByValArray 30

Value özelliği olarak ByValArraySizeConst ayarlandığında, alan dizideki öğe sayısını gösterecek şekilde ayarlanmalıdır. Alan ArraySubType isteğe bağlı olarak dize türleri arasında ayrım yapmak gerektiğinde dizi öğelerini içerebilir UnmanagedType . Bunu UnmanagedType yalnızca öğeleri bir yapıda alan olarak görünen bir dizide kullanabilirsiniz.

ByValTStr 23

Bir yapı içinde görünen satır içi, sabit uzunlukta karakter dizileri için kullanılır. ByValTStr türler, bir yapı içinde C stili, sabit boyutlu dizeler gibi davranır (örneğin, char s[5]). ile ByValTStr kullanılan karakter türü, içeren yapıya uygulanan özniteliğin StructLayoutAttribute bağımsız değişkeni tarafından CharSet belirlenir. Dizinin boyutunu belirtmek için her zaman alanını kullanın SizeConst .

Currency 15

Para birimi türü. Decimal ondalık değerini yerine COM para birimi türü olarak sıralamak için üzerinde Decimalkullanılır.

CustomMarshaler 44

veya MarshalTypeRef alanıyla kullanıldığında özel sıralayıcı sınıfını MarshalType belirtir. alanı MarshalCookie , özel sıralayıcıya ek bilgi geçirmek için kullanılabilir. Bu üyeyi herhangi bir başvuru türünde kullanabilirsiniz. Bu üye yalnızca parametreler ve dönüş değerleri için geçerlidir. Alanlarda kullanılamaz.

Error 45

veya U4 ile I4 ilişkilendirilmiş ve parametresinin dışarı aktarılan tür kitaplığında HRESULT olarak dışarı aktarılmasına neden olan yerel tür.

FunctionPtr 38

C stili işlev işaretçisi olarak kullanılabilecek bir tamsayı. Bu üyeyi bir Delegate veri türünde veya öğesinden Delegatedevralan bir tür üzerinde kullanabilirsiniz.

HString 47

Bir Windows Çalışma Zamanı dizesi. Bu üyeyi String veri türünde kullanabilirsiniz. WinRT için yerleşik destek .NET 5'te kaldırıldı. Geçici çözüm için bkz. Önceden yerleşik olarak desteklenen türler .

I1 3

1 bayt işaretli tamsayı. Bir Boole değerini 1 bayt, C stiline bool (true = 1, false = 0) dönüştürmek için bu üyeyi kullanabilirsiniz.

I2 5

2 bayt işaretli bir tamsayı.

I4 7

4 bayt işaretli bir tamsayı.

I8 9

8 bayt işaretli bir tamsayı.

IDispatch 26

COM IDispatch işaretçisi (Object Microsoft Visual Basic 6.0'da).

IInspectable 46

Windows Çalışma Zamanı arabirim işaretçisi. Bu üyeyi Object veri türünde kullanabilirsiniz. WinRT için yerleşik destek .NET 5'te kaldırıldı.

Interface 28

COM arabirim işaretçisi. Guid arabiriminin türü sınıf meta verilerinden alınır. Bir sınıfa uygularsanız tam arabirim türünü veya varsayılan arabirim türünü belirtmek için bu üyeyi kullanın. Bu üye, veri türüne uyguladığınız davranışla Object aynı davranışı IUnknown üretir.

IUnknown 25

COM IUnknown işaretçisi. Bu üyeyi Object veri türünde kullanabilirsiniz.

LPArray 42

C stili bir dizinin ilk öğesinin işaretçisi. Yönetilen koddan yönetilmeyen koda sıralama yapılırken, dizinin uzunluğu yönetilen dizinin uzunluğuna göre belirlenir. Yönetilmeyen koddan yönetilen koda sıralanırken, dizinin uzunluğu ve SizeParamIndex alanlarından belirlenir SizeConst ve isteğe bağlı olarak dize türleri arasında ayrım yapmak gerektiğinde dizideki öğelerin yönetilmeyen türü izler.

LPStr 20

Tek baytlık, null olarak sonlandırılan ANSI karakter dizesi. Bu üyeyi String ve StringBuilder veri türlerinde kullanabilirsiniz.

LPStruct 43

Yönetilen biçimlendirilmiş sınıfları sıralamak için kullandığınız C stili bir yapıya işaretçi. Bu üye yalnızca platform çağırma yöntemleri için geçerlidir.

LPTStr 22

Unicode karakter dizesi. Bu değer yalnızca platform çağrısı için desteklenir ve COM birlikte çalışma için desteklenmez, çünkü tür LPTStr dizesini dışarı aktarma desteklenmez.

LPUTF8Str 48

UTF-8 ile kodlanmış bir dizenin işaretçisi.

LPWStr 21

2 baytlık, null olarak sonlandırılan Unicode karakter dizesi. Dize yönetilmeyen CoTaskMemAlloc işlev kullanılarak oluşturulmadığı sürece değeri yönetilmeyen bir dizeyle kullanamazsınızLPWStr.

R4 11

4 baytlık kayan noktalı sayı.

R8 12

8 baytlık kayan noktalı sayı.

SafeArray 29

SafeArrayİlişkili dizi verilerinin türünü, derecesini ve sınırlarını taşıyan, kendini açıklayan bir dizidir. Varsayılan öğe türünü geçersiz kılmak için bu üyeyi SafeArraySubType alanıyla birlikte kullanabilirsiniz.

Struct 27

Yönetilen biçimlendirilmiş sınıfları ve değer türlerini sıralamak için kullanılan VARIANT.

SysInt 31

Platforma bağımlı, imzalı bir tamsayı: 32 bit Windows'ta 4 bayt, 64 bit Windows'ta 8 bayt.

SysUInt 32

Platforma bağımlı, işaretsiz tamsayı: 32 bit Windows'ta 4 bayt, 64 bit Windows'ta 8 bayt.

TBStr 36

Uzunluk ön ekli, Unicode char dizesi. Bu BSTR benzeri üyeyi nadiren kullanırsınız.

U1 4

1 baytlık işaretsiz tamsayı.

U2 6

2 baytlık işaretsiz tamsayı.

U4 8

4 baytlık işaretsiz tamsayı.

U8 10

8 baytlık işaretsiz tamsayı.

VariantBool 37

2 baytlık, OLE tanımlı VARIANT_BOOL türü (true = -1, false = 0).

VBByRefStr 34

Visual Basic'in yönetilmeyen koddaki bir dizeyi değiştirmesini ve sonuçların yönetilen koda yansıtılmasını sağlayan bir değer. Bu değer yalnızca platform çağırma için desteklenir.

Örnekler

Aşağıdaki kod parçası, yönetilen kaynak kodunda BIR COM bileşeni tarafından uygulanan yönetilmeyen bir arabirimin nasıl bildirileceğini gösterir. özniteliği, System.Runtime.InteropServices.ComImportAttribute arabirimin IMyStorage COM tarafından kullanılmak üzere geri dışarı aktarılmasını engeller. (COM istemcileri mevcut COM bileşenini doğrudan kullanmalıdır.) Bu örnekte, MarshalAsAttribute özgün COM arabirimi tarafından kullanılan türleri temsil eden birkaç UnmanagedType üyeyi belirtir.

using namespace System;
using namespace System::Runtime::InteropServices;

// If you do not have a type library for an interface
// you can redeclare it using ComImportAttribute.
// This is how the interface would look in an idl file.
//[
//object,
//uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
//dual, helpstring("IMyStorage Interface"),
//pointer_default(unique)
//]
//interface IMyStorage : IDispatch
//{
// [id(1)]
// HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
// [id(2)]
// HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
// [id(3)]
// HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
// [id(4), propget]
// HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
//};
// This is the managed declaration.

[ComImport]
[Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")]
interface class IMyStorage
{
   [DispId(1)]
   Object^ GetItem( [In,MarshalAs(UnmanagedType::BStr)]String^ bstrName );

   //[return : MarshalAs(UnmanagedType::Interface)]

   [DispId(2)]
   void GetItems( [In,MarshalAs(UnmanagedType::BStr)]String^ bstrLocation, [Out,MarshalAs(UnmanagedType::SafeArray,
   SafeArraySubType=VarEnum::VT_VARIANT)]array<Object^>^Items );

   [DispId(3)]
   void GetItemDescriptions( [In]String^ bstrLocation, [In,Out,MarshalAs(UnmanagedType::SafeArray)]array<Object^>^varDescriptions );

   property bool IsEmpty 
   {
      [DispId(4)]
      [returnvalue:MarshalAs(UnmanagedType::VariantBool)]
      bool get();
   }
};
using System;
using System.Runtime.InteropServices;

namespace MyModule
{
    // If you do not have a type library for an interface
    // you can redeclare it using ComImportAttribute.

    // This is how the interface would look in an idl file.

    //[
    //object,
    //uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
    //dual,	helpstring("IMyStorage Interface"),
    //pointer_default(unique)
    //]
    //interface IMyStorage : IDispatch
    //{
    //	[id(1)]
    //	HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
    //	[id(2)]
    //	HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
    //	[id(3)]
    //	HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
    //	[id(4), propget]
    //	HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
    //};

    // This is the managed declaration.

    [ComImport]
    [Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")]
    public interface IMyStorage
    {
        [DispId(1)]
        [return: MarshalAs(UnmanagedType.Interface)]
        object GetItem([In, MarshalAs(UnmanagedType.BStr)] String bstrName);

        [DispId(2)]
        void GetItems([In, MarshalAs(UnmanagedType.BStr)] String bstrLocation,
            [Out, MarshalAs( UnmanagedType.SafeArray,
                      SafeArraySubType = VarEnum.VT_VARIANT )] out Object[] Items);

        [DispId(3)]
        void GetItemDescriptions([In] String bstrLocation,
            [In, Out, MarshalAs(UnmanagedType.SafeArray)] ref Object[] varDescriptions);

        bool IsEmpty
        {
            [DispId(4)]
            [return: MarshalAs(UnmanagedType.VariantBool)]
            get;
        }
    }
}
Imports System.Runtime.InteropServices

Module MyModule
    ' If you do not have a type library for an interface
    ' you can redeclare it using ComImportAttribute.

    ' This is how the interface would look in an idl file.

    '[
    'object,
    'uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
    'dual,	helpstring("IMyStorage Interface"),
    'pointer_default(unique)
    ']
    'interface IMyStorage : IDispatch
    '{
    '	[id(1)]
    '	HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
    '	[id(2)]
    '	HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
    '	[id(3)]
    '	HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
    '	[id(4), propget]
    '	HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
    '};

    ' This is the managed declaration.

    <ComImport(), Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")> _
    Public Interface IMyStorage
        <DispId(1)> _
        Function GetItem(<InAttribute(), MarshalAs(UnmanagedType.BStr)> ByVal bstrName As String) _
           As <MarshalAs(UnmanagedType.Interface)> Object

        <DispId(2)> _
        Function GetItems(<InAttribute(), MarshalAs(UnmanagedType.BStr)> ByVal bstrLocation As String, _
           <OutAttribute(), MarshalAs(UnmanagedType.SafeArray, SafeArraySubType := VarEnum.VT_VARIANT)> _
                                      ByVal Items() As Object)

        <DispId(3)> _
        Function GetItemDescriptions(<InAttribute()> ByVal bstrLocation As String, _
           <InAttribute(), OutAttribute(), _
                      MarshalAs(UnmanagedType.SafeArray)> ByRef varDescriptions() As Object)

        <DispId(4)> _
        ReadOnly Property IsEmpty(<MarshalAs(UnmanagedType.VariantBool)> ByVal bEmpty As Boolean)

    End Interface
End Module

Açıklamalar

UnmanagedType Yönetilmeyen kodla birlikte çalışma sırasında türlerin System.Runtime.InteropServices.MarshalAsAttribute nasıl sıralanacağını belirtmek için özniteliğiyle numaralandırmayı kullanın. Basit değer türlerini (I1, I2, I4, I8, R4, R8, U2, U4 ve U8), .NET Framework'te kullanılamayan yönetilmeyen türleri ve çeşitli türleri kullanarak kodu sıralamak için bu numaralandırmayı kullanabilirsiniz.

Daha fazla bilgi için bkz. Yönetilmeyen Kodla Birlikte Çalışma.

Şunlara uygulanır

Ayrıca bkz.