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

Name Değer Description
Bool 2

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

I1 3

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

U1 4

1 baytlık işaretsiz tamsayı.

I2 5

2 bayt işaretli tamsayı.

U2 6

2 baytlık işaretsiz tamsayı.

I4 7

4 bayt işaretli tamsayı.

U4 8

4 baytlık işaretsiz tamsayı.

I8 9

8 bayt işaretli tamsayı.

U8 10

8 baytlık işaretsiz tamsayı.

R4 11

4 baytlık kayan noktalı sayı.

R8 12

8 baytlık kayan noktalı sayı.

Currency 15

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

BStr 19

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

LPStr 20

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

LPWStr 21

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

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.

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çindeki 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. Dizi boyutunu SizeConst belirtmek için her zaman alanını kullanın.

IUnknown 25

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

IDispatch 26

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

Struct 27

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

Interface 28

COM arabirim işaretçisi. Guid arabiriminin sınıfı meta verilerinden elde edilir. 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.

SafeArray 29

A SafeArray, iliş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.

ByValArray 30

Value özelliği olarak ByValArraySizeConst ayarlandığında, alan dizideki öğe sayısını gösterecek şekilde ayarlanmalıdır. Alan isteğe ArraySubType 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.

SysInt 31

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

SysUInt 32

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

VBByRefStr 34

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

AnsiBStr 35

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

TBStr 36

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

VariantBool 37

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

FunctionPtr 38

C stili işlev işaretçisi olarak kullanılabilecek bir tamsayı. Bu üyeyi bir Delegate veri türünde veya öğesinden devralan bir Delegatetür üzerinde 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.

LPArray 42

C stili bir dizinin ilk öğesinin işaretçisi. Yönetilen koddan yönetilmeyen koda hazırlama sırasında, 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 yapılması gerektiğinde dizi içindeki öğelerin yönetilmeyen türü izler.

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.

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ılmalarına neden olan yerel bir tür.

IInspectable 46

Windows Çalışma Zamanı arabirim işaretçisi. Bu üyeyi Object veri türünde kullanabilirsiniz. winRT için Built-in desteği .NET 5 kaldırıldı.

HString 47

Windows Çalışma Zamanı dizesi. Bu üyeyi String veri türünde kullanabilirsiniz. winRT için Built-in desteği .NET 5 kaldırıldı. Geçici çözüm için bkz. Eski yerleşik desteklenen türler .

LPUTF8Str 48

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

Örnekler

Aşağıdaki kod parçası, yönetilen kaynak kodunda BIR COM bileşeni tarafından uygulanan yönetilmeyen bir arabirimin nasıl bildirildiğini gösterir. System.Runtime.InteropServices.ComImportAttribute özniteliği, 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 üye 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 ç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.