Marshal.GetObjectForIUnknown(IntPtr) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan instans jenis yang mewakili objek COM dengan penunjuk ke antarmuka IUnknown-nya .
public:
static System::Object ^ GetObjectForIUnknown(IntPtr pUnk);
[System.Security.SecurityCritical]
public static object GetObjectForIUnknown (IntPtr pUnk);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object GetObjectForIUnknown (IntPtr pUnk);
public static object GetObjectForIUnknown (IntPtr pUnk);
[<System.Security.SecurityCritical>]
static member GetObjectForIUnknown : nativeint -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObjectForIUnknown : nativeint -> obj
static member GetObjectForIUnknown : nativeint -> obj
Public Shared Function GetObjectForIUnknown (pUnk As IntPtr) As Object
Parameter
- pUnk
-
IntPtr
nativeint
Penunjuk ke IUnknown
antarmuka.
Mengembalikan
Objek yang mewakili objek COM tidak terkelola yang ditentukan.
- Atribut
Pengecualian
pUnk
adalah Zero.
Keterangan
Metode ini membungkus IUnknown
dalam objek terkelola. Ini memiliki efek meningkatkan jumlah referensi komponen COM. Jumlah referensi akan dikurangi ketika runtime melakukan pengumpulan sampah pada objek terkelola yang mewakili objek COM.
Parameter pUnk
mewakili IUnknown
penunjuk antarmuka; namun, karena semua antarmuka COM berasal secara langsung atau tidak langsung dari IUnknown
, Anda dapat meneruskan antarmuka COM apa pun ke metode ini. Objek yang dikembalikan oleh GetObjectForIUnknown adalah Runtime Callable Wrapper, yang dikelola runtime bahasa umum seperti halnya objek terkelola lainnya. Jenis pembungkus ini sering kali merupakan jenis dasar System.__ComObject
, yang merupakan jenis tersembunyi yang digunakan ketika jenis pembungkus ambigu. Anda masih dapat melakukan panggilan terlambat ke jenis dasar seperti itu selama objek COM mengimplementasikan antarmuka IDispatch . Demikian juga, Anda dapat mentransmisikan objek yang dikembalikan ke antarmuka COM yang sesuai.
Agar objek dibungkus dengan jenis kelas terkelola tertentu (dan bukan jenis pembungkus generik), Anda harus mematuhi persyaratan berikut:
Terapkan antarmuka IProvideClassInfo untuk objek COM.
Daftarkan rakitan yang berisi dengan Regasm.exe (Alat Pendaftaran Rakitan).
Atau, Anda dapat menghindari persyaratan ini dan masih mendapatkan objek yang dibungkus dengan jenis kelas terkelola tertentu dengan menggunakan Marshal.GetTypedObjectForIUnknown metode .