UnmanagedType Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- Ö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 ( |
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 |
ByValTStr | 23 | Bir yapı içinde görünen satır içi, sabit uzunlukta karakter dizileri için kullanılır.
|
Currency | 15 | Para birimi türü.
Decimal ondalık değerini yerine COM para birimi türü olarak sıralamak için üzerinde |
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 |
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 |
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 |
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 |
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 |
R4 | 11 | 4 baytlık kayan noktalı sayı. |
R8 | 12 | 8 baytlık kayan noktalı sayı. |
SafeArray | 29 |
|
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 |
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ü ( |
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.