From 64bb1abfdcbd81f7f4b73a87fc9844707ce9657b Mon Sep 17 00:00:00 2001 From: Aaron Robinson Date: Mon, 26 Aug 2024 11:27:35 -0700 Subject: [PATCH 1/2] Update comwrappers-source-generation.md --- .../native-interop/comwrappers-source-generation.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard/native-interop/comwrappers-source-generation.md b/docs/standard/native-interop/comwrappers-source-generation.md index 36139a15861bf..783fe9232730a 100644 --- a/docs/standard/native-interop/comwrappers-source-generation.md +++ b/docs/standard/native-interop/comwrappers-source-generation.md @@ -20,10 +20,10 @@ interface IFoo } [DllImport("MyComObjectProvider.dll")] -static nint GetPointerToComInterface(); +static nint GetPointerToComInterface(); // C definition - IUnknown* GetPointerToComInterface(); [DllImport("MyComObjectProvider.dll")] -static void GivePointerToComInterface(nint comObject); +static void GivePointerToComInterface(nint comObject); // C definition - void GivePointerToComInterface(IUnknown* pUnk); // Use the system to create a Runtime Callable Wrapper to use in managed code nint ptr = GetPointerToComInterface(); @@ -68,10 +68,10 @@ At compile time, the generator creates an implementation of the ComWrappers API, ```csharp [LibraryImport("MyComObjectProvider.dll")] -static nint GetPointerToComInterface(); +static nint GetPointerToComInterface(); // C definition - IUnknown* GetPointerToComInterface(); [LibraryImport("MyComObjectProvider.dll")] -static void GivePointerToComInterface(nint comObject); +static void GivePointerToComInterface(nint comObject); // C definition - void GivePointerToComInterface(IUnknown* pUnk); // Use the ComWrappers API to create a Runtime Callable Wrapper to use in managed code ComWrappers cw = new StrategyBasedComWrappers(); From 013c1d59185b0fc414275ebead5683e7b89b58e3 Mon Sep 17 00:00:00 2001 From: Aaron R Robinson Date: Mon, 26 Aug 2024 11:44:24 -0700 Subject: [PATCH 2/2] Fix source --- .../comwrappers-source-generation.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/standard/native-interop/comwrappers-source-generation.md b/docs/standard/native-interop/comwrappers-source-generation.md index 783fe9232730a..7741008e16d1f 100644 --- a/docs/standard/native-interop/comwrappers-source-generation.md +++ b/docs/standard/native-interop/comwrappers-source-generation.md @@ -19,10 +19,10 @@ interface IFoo void Method(int i); } -[DllImport("MyComObjectProvider.dll")] +[DllImport("MyComObjectProvider")] static nint GetPointerToComInterface(); // C definition - IUnknown* GetPointerToComInterface(); -[DllImport("MyComObjectProvider.dll")] +[DllImport("MyComObjectProvider")] static void GivePointerToComInterface(nint comObject); // C definition - void GivePointerToComInterface(IUnknown* pUnk); // Use the system to create a Runtime Callable Wrapper to use in managed code @@ -67,22 +67,22 @@ internal partial class Foo : IFoo At compile time, the generator creates an implementation of the ComWrappers API, and you can use the type or a custom derived type to consume or expose the COM interface. ```csharp -[LibraryImport("MyComObjectProvider.dll")] -static nint GetPointerToComInterface(); // C definition - IUnknown* GetPointerToComInterface(); +[LibraryImport("MyComObjectProvider")] +private static partial nint GetPointerToComInterface(); // C definition - IUnknown* GetPointerToComInterface(); -[LibraryImport("MyComObjectProvider.dll")] -static void GivePointerToComInterface(nint comObject); // C definition - void GivePointerToComInterface(IUnknown* pUnk); +[LibraryImport("MyComObjectProvider")] +private static partial void GivePointerToComInterface(nint comObject); // C definition - void GivePointerToComInterface(IUnknown* pUnk); // Use the ComWrappers API to create a Runtime Callable Wrapper to use in managed code ComWrappers cw = new StrategyBasedComWrappers(); nint ptr = GetPointerToComInterface(); -IFoo foo = (IFoo)cw.GetOrCreateObjectForComInterface(ptr); +IFoo foo = (IFoo)cw.GetOrCreateObjectForComInstance(ptr, CreateObjectFlags.None); foo.Method(0); ... // Use the system to create a COM Callable Wrapper to pass to unmanaged code ComWrappers cw = new StrategyBasedComWrappers(); Foo foo = new(); -nint ptr = cw.GetOrCreateComInterfaceForObject(foo); +nint ptr = cw.GetOrCreateComInterfaceForObject(foo, CreateComInterfaceFlags.None); GivePointerToComInterface(ptr); ```