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'da 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ü. ondalık değerini yerine COM para birimi türü olarak |
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 ile I4U4 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. |
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. .NET 5'te WinRT için yerleşik destek kaldırıldı. Geçici çözüm için bkz. Eski yerleşik desteklenen türler . |
I1 | 3 | 1 baytlık imzalı tamsayı. Boole değerini 1 bayt, C stiline |
I2 | 5 | 2 baytlık imzalı tamsayı. |
I4 | 7 | 4 baytlık imzalı tamsayı. |
I8 | 9 | 8 baytlık imzalı tamsayı. |
IDispatch | 26 | COM |
IInspectable | 46 | Windows Çalışma Zamanı arabirim işaretçisi. Bu üyeyi Object veri türünde kullanabilirsiniz. .NET 5'te WinRT için yerleşik destek kaldırıldı. |
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. |
IUnknown | 25 | COM |
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 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. 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 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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin