Marshal.GetIUnknownForObject(Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí rozhraní IUnknown ze spravovaného objektu.
public:
static IntPtr GetIUnknownForObject(System::Object ^ o);
[System.Security.SecurityCritical]
public static IntPtr GetIUnknownForObject (object o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetIUnknownForObject (object o);
public static IntPtr GetIUnknownForObject (object o);
[<System.Security.SecurityCritical>]
static member GetIUnknownForObject : obj -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetIUnknownForObject : obj -> nativeint
static member GetIUnknownForObject : obj -> nativeint
Public Shared Function GetIUnknownForObject (o As Object) As IntPtr
Parametry
- o
- Object
Objekt, jehož IUnknown
rozhraní je požadováno.
Návraty
nativeint
Ukazatel IUnknown
parametru o
.
- Atributy
Příklady
Následující příklad ukazuje, jak načíst IUnknown rozhraní pro spravovaný objekt pomocí GetIUnknownForObject metody .
using System;
using System.Runtime.InteropServices;
class Program
{
static void Run()
{
// Create an int object
int obj = 1;
Console.WriteLine("Calling Marshal.GetIUnknownForObject...");
// Get the IUnKnown pointer for the Integer object
IntPtr pointer = Marshal.GetIUnknownForObject(obj);
Console.WriteLine("Calling Marshal.Release...");
// Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer);
}
static void Main(string[] args)
{
Run();
}
}
Imports System.Runtime.InteropServices
Module Program
Sub Run()
' Dim an Integer object
Dim IntegerObject As Integer = 1
' Dim a pointer
Dim pointer As IntPtr
Console.WriteLine("Calling Marshal.GetIUnknownForObject...")
' Get the IUnKnown pointer for the Integer object
pointer = Marshal.GetIUnknownForObject(IntegerObject)
Console.WriteLine("Calling Marshal.Release...")
' Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer)
End Sub
Sub Main(ByVal args() As String)
Run()
End Sub
End Module
Poznámky
Ve spravovaném kódu zřídka pracujete přímo s rozhraním IUnknown
. Je však užitečné při volání metody, GetIUnknownForObject která zveřejňuje parametr objektu COM jako IntPtr typ nebo s vlastním zařazováním. Volání objektu pomocí této metody způsobí zvýšení počtu odkazů na ukazatel rozhraní před vrácením ukazatele. Po dokončení práce s ukazatelem vždy použijte Marshal.Release ke snížení počtu odkazů. Tato metoda poskytuje opačné funkce Marshal.GetObjectForIUnknown metody.
Tuto metodu můžete použít také u spravovaného objektu k získání ukazatele rozhraní na obálku volatelného modelu COM pro objekt.
Platí pro
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro