UnmanagedType Sabit listesi

Tanım

Yönetilmeyen koda parametrelerin veya alanların nasıl hazırlanacağını tanımlar.Identifies how to marshal parameters or fields to unmanaged code.

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

Uzunluğu ön eki olan tek bayt olan ANSI karakter dizesi.An ANSI character string that is a length-prefixed single byte. Bu üyeyi String veri türü üzerinde kullanabilirsiniz.You can use this member on the String data type.

AsAny 40

Çalışma zamanında bir nesnenin türünü belirleyen ve nesneyi bu tür olarak sıraladığında dinamik bir tür.A dynamic type that determines the type of an object at run time and marshals the object as that type. Bu üye yalnızca platform çağırma yöntemleri için geçerlidir.This member is valid for platform invoke methods only.

Bool 2

4 baytlık Boole değeri ( true ! = 0, false = 0).A 4-byte Boolean value (true != 0, false = 0). Bu, Win32 BOOL türüdür.This is the Win32 BOOL type.

BStr 19

Uzunluğu önekli çift bayt olan Unicode karakter dizesi.A Unicode character string that is a length-prefixed double byte. Bu üyeyi, veri türü üzerinde COM ' da varsayılan dize olan bu üyeyi kullanabilirsiniz String .You can use this member, which is the default string in COM, on the String data type.

ByValArray 30

ValueÖzelliği olarak ayarlandığında ByValArray , SizeConst alanı dizideki öğelerin sayısını belirtecek şekilde ayarlanmalıdır.When the Value property is set to ByValArray, the SizeConst field must be set to indicate the number of elements in the array. ArraySubTypeAlan, isteğe bağlı olarak UnmanagedType dize türleri arasında ayrım yapmak gerektiğinde dizi öğelerinin dizisini içerebilir.The ArraySubType field can optionally contain the UnmanagedType of the array elements when it is necessary to differentiate among string types. Bunu UnmanagedType yalnızca öğeleri bir yapıda alan olarak görünen bir dizide kullanabilirsiniz.You can use this UnmanagedType only on an array that whose elements appear as fields in a structure.

ByValTStr 23

Bir yapı içinde görüntülenen satır içi, sabit uzunlukta karakter dizileri için kullanılır.Used for in-line, fixed-length character arrays that appear within a structure. ByValTStr türler, bir yapı içinde C stili, sabit boyutlu dizeler gibi davranır (örneğin, char s [5]).ByValTStr types behave like C-style, fixed-size strings inside a structure (for example, char s[5]). İle kullanılan karakter türü, ByValTStr CharSet StructLayoutAttribute kapsayan yapıya uygulanan özniteliğin bağımsız değişkenine göre belirlenir.The character type used with ByValTStr is determined by the CharSet argument of the StructLayoutAttribute attribute applied to the containing structure. SizeConstDizinin boyutunu belirtmek için her zaman alanı kullanın.Always use the SizeConst field to indicate the size of the array.

Currency 15

Para birimi türü.A currency type. Decimal, Bir olarak değil, BIR com para birimi türü olarak ondalık değeri sıralamak için kullanılır Decimal .Used on a Decimal to marshal the decimal value as a COM currency type instead of as a Decimal.

CustomMarshaler 44

Veya alanı ile kullanıldığında özel sıralayıcı sınıfını belirtir MarshalType MarshalTypeRef .Specifies the custom marshaler class when used with the MarshalType or MarshalTypeRef field. Bu MarshalCookie alan, özel sıralayıcı 'ya ek bilgi geçirmek için kullanılabilir.The MarshalCookie field can be used to pass additional information to the custom marshaler. Bu üyeyi herhangi bir başvuru türü için kullanabilirsiniz.You can use this member on any reference type. Bu üye yalnızca parametreler ve dönüş değerleri için geçerlidir.This member is valid for parameters and return values only. Alanlar üzerinde kullanılamaz.It cannot be used on fields.

Error 45

Bir veya ile ilişkili yerel bir tür I4 U4 ve parametrenin, dışarıya aktarılmış tür KITAPLıĞıNDA bir hresult olarak verilmesine neden olur.A native type that is associated with an I4 or an U4 and that causes the parameter to be exported as an HRESULT in the exported type library.

FunctionPtr 38

C stili işlev işaretçisi olarak kullanılabilecek bir tamsayı.An integer that can be used as a C-style function pointer. Bu üyeyi Delegate bir veri türü veya bir öğesinden devralan bir tür üzerinde kullanabilirsiniz Delegate .You can use this member on a Delegate data type or on a type that inherits from a Delegate.

HString 47

Bir Windows Çalışma Zamanı dizesi.A Windows Runtime string. Bu üyeyi String veri türü üzerinde kullanabilirsiniz.You can use this member on the String data type.

I1 3

1 baytlık işaretli tamsayı.A 1-byte signed integer. Bu üyeyi, bir Boole değerini 1 baytlık, C stilinde bool ( true = 1, false = 0) dönüştürmek için kullanabilirsiniz.You can use this member to transform a Boolean value into a 1-byte, C-style bool (true = 1, false = 0).

I2 5

2 baytlık işaretli tamsayı.A 2-byte signed integer.

I4 7

4 baytlık işaretli tamsayı.A 4-byte signed integer.

I8 9

8 baytlık işaretli tamsayı.An 8-byte signed integer.

IDispatch 26

Bir COM IDispatch işaretçisi ( Object Microsoft Visual Basic 6,0).A COM IDispatch pointer (Object in Microsoft Visual Basic 6.0).

IInspectable 46

Windows Çalışma Zamanı arabirim işaretçisi.A Windows Runtime interface pointer. Bu üyeyi Object veri türü üzerinde kullanabilirsiniz.You can use this member on the Object data type.

Interface 28

Bir COM arabirim işaretçisi.A COM interface pointer. GuidArabirim, sınıf meta verilerinden alınır.The Guid of the interface is obtained from the class metadata. Bu üyeyi, bir sınıfa uygularsanız, tam arabirim türü veya varsayılan arabirim türü belirtmek için kullanın.Use this member to specify the exact interface type or the default interface type if you apply it to a class. Bu üye, IUnknown veri türüne uyguladığınız zaman ile aynı davranışı üretir Object .This member produces the same behavior as IUnknown when you apply it to the Object data type.

IUnknown 25

Bir COM IUnknown işaretçisi.A COM IUnknown pointer. Bu üyeyi Object veri türü üzerinde kullanabilirsiniz.You can use this member on the Object data type.

LPArray 42

C stili dizinin ilk öğesine yönelik bir işaretçi.A pointer to the first element of a C-style array. Yönetilmeyenden yönetilmeyen koda sıralama yaparken, dizinin uzunluğu yönetilen dizinin uzunluğuna göre belirlenir.When marshaling from managed to unmanaged code, the length of the array is determined by the length of the managed array. Yönetilmeyenden yönetilen koda sıralama yaparken, dizinin uzunluğu SizeConst ve SizeParamIndex alanlarından belirlenir, isteğe bağlı olarak, dize türlerini ayırt etmek gerektiğinde dizi içindeki öğelerin yönetilmeyen türü gelir.When marshaling from unmanaged to managed code, the length of the array is determined from the SizeConst and SizeParamIndex fields, optionally followed by the unmanaged type of the elements within the array when it is necessary to differentiate among string types.

LPStr 20

Tek baytlık, null ile sonlandırılmış bir ANSI karakter dizesi.A single byte, null-terminated ANSI character string. Bu üyeyi String ve StringBuilder veri türleri üzerinde kullanabilirsiniz.You can use this member on the String and StringBuilder data types.

LPStruct 43

Yönetilen biçimlendirilen sınıfları sıralamak için kullandığınız C stili yapısına yönelik bir işaretçi.A pointer to a C-style structure that you use to marshal managed formatted classes. Bu üye yalnızca platform çağırma yöntemleri için geçerlidir.This member is valid for platform invoke methods only.

LPTStr 22

Unicode karakter dizesi.A Unicode character string. Bu değer, türündeki bir dizenin dışarı aktarılması desteklenmediğinden, yalnızca platform Invoke için desteklenir, ancak COM birlikte çalışma için desteklenmez LPTStr .This value is supported only for platform invoke and not for COM interop, because exporting a string of type LPTStr is not supported.

LPUTF8Str 48

UTF-8 kodlu dizeye yönelik bir işaretçi.A pointer to a UTF-8 encoded string.

LPWStr 21

2 baytlık, null ile sonlandırılmış Unicode karakter dizesi.A 2-byte, null-terminated Unicode character string. LPWStrDize yönetilmeyen işlev kullanılarak oluşturulmadığı takdirde, yönetilmeyen bir dizeyle değeri kullanamazsınız CoTaskMemAlloc .You cannot use the LPWStr value with an unmanaged string unless the string was created by using the unmanaged CoTaskMemAlloc function.

R4 11

4 baytlık kayan noktalı sayı.A 4-byte floating-point number.

R8 12

8 baytlık kayan noktalı sayı.An 8-byte floating-point number.

SafeArray 29

SafeArrayİlişkili dizi verilerinin türünü, derecesini ve sınırlarını taşıyan kendi kendine betimleyen bir dizi.A SafeArray, which is a self-describing array that carries the type, rank, and bounds of the associated array data. SafeArraySubTypeVarsayılan öğe türünü geçersiz kılmak için bu üyeyi alanla birlikte kullanabilirsiniz.You can use this member with the SafeArraySubType field to override the default element type.

Struct 27

Yönetilen biçimlendirilen sınıfları ve değer türlerini sıralamak için kullanılan bir varyant.A VARIANT, which is used to marshal managed formatted classes and value types.

SysInt 31

Platforma bağımlı, işaretli bir tamsayı: 32 bit Windows için 4 bayt, 64 bit Windows üzerinde 8 bayt.A platform-dependent, signed integer: 4 bytes on 32-bit Windows, 8 bytes on 64-bit Windows.

SysUInt 32

Platforma bağımlı, işaretsiz bir tamsayı: 32 bit Windows için 4 bayt, 64 bit Windows üzerinde 8 bayt.A platform-dependent, unsigned integer: 4 bytes on 32-bit Windows, 8 bytes on 64-bit Windows.

TBStr 36

Length önekli, Unicode char dizesi.A length-prefixed, Unicode char string. Bu BSTR benzeri üyeyi nadiren kullanırsınız.You rarely use this BSTR-like member.

U1 4

1 baytlık işaretsiz tamsayı.A 1-byte unsigned integer.

U2 6

2 baytlık işaretsiz bir tamsayı.A 2-byte unsigned integer.

U4 8

4 baytlık işaretsiz tamsayı.A 4-byte unsigned integer.

U8 10

8 baytlık işaretsiz bir tamsayı.An 8-byte unsigned integer.

VariantBool 37

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

VBByRefStr 34

Visual Basic yönetilmeyen koddaki bir dizeyi değiştirmesini ve sonuçların yönetilen koda yansıtılmasını sağlayan bir değer.A value that enables Visual Basic to change a string in unmanaged code and have the results reflected in managed code. Bu değer yalnızca platform çağırma için desteklenir.This value is only supported for platform invoke.

Örnekler

Aşağıdaki kod parçası, bir COM bileşeni tarafından uygulanan yönetilmeyen bir arabirim olan yönetilen kaynak kodu 'nda nasıl bildirimi yapılacağını gösterir.The following code fragment demonstrates how to declare, in managed source code, an unmanaged interface implemented by a COM component. System.Runtime.InteropServices.ComImportAttributeÖzniteliği, IMyStorage arabirimin com tarafından kullanılmak üzere geri verilmesini önler.The System.Runtime.InteropServices.ComImportAttribute attribute prevents the IMyStorage interface from being exported back for use by COM. (COM istemcilerinin mevcut COM bileşenini doğrudan kullanması gerekir.) Bu örnekte, MarshalAsAttribute UnmanagedType özgün com arabirimi tarafından kullanılan türleri temsil eden çeşitli üyeleri belirtir.(COM clients should use the existing COM component directly.) In this example, MarshalAsAttribute specifies several UnmanagedType members, which represent the types used by the original COM interface.

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 System.Runtime.InteropServices.MarshalAsAttribute Yönetilmeyen kod ile birlikte çalışma sırasında türlerin nasıl sıralanmasını belirtmek için, sabit listesini özniteliğiyle birlikte kullanın.Use the UnmanagedType enumeration with the System.Runtime.InteropServices.MarshalAsAttribute attribute to specify how types are marshaled during interoperation with unmanaged code. Bu numaralandırmayı basit değer türlerini (I1, I2, I4, I8, R4, R8, U2, U4 ve U8) kullanarak kodu sıralamak, .NET Framework kullanılamayan yönetilmeyen türleri ve çeşitli çeşitli türleri kullanmak için kullanabilirsiniz.You can use this enumeration to marshal code using simple value types (I1, I2, I4, I8, R4, R8, U2, U4, and U8), unmanaged types that are unavailable in the .NET Framework, and various miscellaneous types.

Daha fazla bilgi için bkz. yönetilmeyen kodla birlikte çalışma.For more information, see Interoperating with Unmanaged Code.

Şunlara uygulanır

Ayrıca bkz.