Remove outdated warning

This commit is contained in:
david-swift 2025-02-08 13:14:04 +01:00
parent 3e3d5a0270
commit f5745817ec
12 changed files with 442 additions and 560 deletions

View File

@ -1,54 +0,0 @@
client:
name: basic
file-system: device-agnostic
tools: {}
targets:
"CWinRT-debug.dylib": ["<CWinRT-debug.dylib>"]
"CWinRT-debug.module": ["<CWinRT-debug.module>"]
"PackageStructure": ["<PackageStructure>"]
"main": ["<CWinRT-debug.dylib>","<CWinRT-debug.module>"]
"test": ["<CWinRT-debug.dylib>","<CWinRT-debug.module>"]
default: "main"
nodes:
"C:\\dev\\browser\\swift-cwinrt\\Sources\\CWinRT/":
is-directory-structure: true
content-exclusion-patterns: [".git",".build"]
commands:
"<CWinRT-debug.dylib>":
tool: phony
inputs: ["C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.dll"]
outputs: ["<CWinRT-debug.dylib>"]
"<CWinRT-debug.module>":
tool: phony
inputs: ["C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.o"]
outputs: ["<CWinRT-debug.module>"]
"C.CWinRT-debug.dylib":
tool: shell
inputs: ["C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.o","C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.product\\Objects.LinkFileList"]
outputs: ["C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.dll"]
description: "Linking C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.dll"
args: ["C:\\Users\\skirb\\AppData\\Local\\Programs\\Swift\\Toolchains\\0.0.0+Asserts\\usr\\bin\\swiftc.exe","-L","C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug","-o","C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.dll","-module-name","CWinRT","-emit-library","@C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.product\\Objects.LinkFileList","-runtime-compatibility-version","none","-target","x86_64-unknown-windows-msvc","-nostartfiles","-sdk","C:\\Users\\skirb\\AppData\\Local\\Programs\\Swift\\Platforms\\0.0.0\\Windows.platform\\Developer\\SDKs\\Windows.sdk","-libc","MD","-I","C:\\Users\\skirb\\AppData\\Local\\Programs\\Swift\\Platforms\\0.0.0\\Windows.platform\\Developer\\Library\\XCTest-development\\usr\\lib\\swift\\windows","-I","C:\\Users\\skirb\\AppData\\Local\\Programs\\Swift\\Platforms\\0.0.0\\Windows.platform\\Developer\\Library\\XCTest-development\\usr\\lib\\swift\\windows\\x86_64","-L","C:\\Users\\skirb\\AppData\\Local\\Programs\\Swift\\Platforms\\0.0.0\\Windows.platform\\Developer\\Library\\XCTest-development\\usr\\lib\\swift\\windows\\x86_64","-use-ld=lld","-g","-use-ld=lld","-Xlinker","-debug:dwarf","-Xlinker","-debug:dwarf"]
"C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.o":
tool: clang
inputs: ["C:\\dev\\browser\\swift-cwinrt\\Sources\\CWinRT\\shim.c"]
outputs: ["C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.o"]
description: "Compiling CWinRT shim.c"
args: ["C:\\Users\\skirb\\AppData\\Local\\Programs\\Swift\\Toolchains\\0.0.0+Asserts\\usr\\bin\\clang.exe","-target","x86_64-unknown-windows-msvc","-O0","-DSWIFT_PACKAGE=1","-DDEBUG=1","-fblocks","-I","C:\\dev\\browser\\swift-cwinrt\\Sources\\CWinRT\\include","-D_MT","-D_DLL","-Xclang","--dependent-lib=msvcrt","-gdwarf","-MD","-MT","dependencies","-MF","C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.d","-c","C:\\dev\\browser\\swift-cwinrt\\Sources\\CWinRT\\shim.c","-o","C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.o"]
deps: "C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.d"
"C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.product\\Objects.LinkFileList":
tool: write-auxiliary-file
inputs: ["<link-file-list>","C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.o"]
outputs: ["C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.product\\Objects.LinkFileList"]
description: "Write auxiliary file C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.product\\Objects.LinkFileList"
"PackageStructure":
tool: package-structure-tool
inputs: ["C:\\dev\\browser\\swift-cwinrt\\Sources\\CWinRT/","C:\\dev\\browser\\swift-cwinrt\\Package.swift","C:\\dev\\browser\\swift-cwinrt\\Package.resolved"]
outputs: ["<PackageStructure>"]
description: "Planning build"
allow-missing-inputs: true

View File

@ -1,11 +0,0 @@
{
"object" : {
"artifacts" : [
],
"dependencies" : [
]
},
"version" : 6
}

View File

@ -1,55 +0,0 @@
{
"builtTestProducts" : [
],
"copyCommands" : {
},
"explicitTargetDependencyImportCheckingMode" : {
"none" : {
}
},
"generatedSourceTargetSet" : [
],
"pluginDescriptions" : [
],
"swiftCommands" : {
},
"swiftFrontendCommands" : {
},
"swiftTargetScanArgs" : {
},
"targetDependencyMap" : {
"CWinRT" : [
]
},
"testDiscoveryCommands" : {
},
"testEntryPointCommands" : {
},
"writeCommands" : {
"C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.product\\Objects.LinkFileList" : {
"alwaysOutOfDate" : false,
"inputs" : [
{
"kind" : "virtual",
"name" : "<link-file-list>"
},
{
"kind" : "file",
"name" : "C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.build\\shim.c.o"
}
],
"outputFilePath" : "C:\\dev\\browser\\swift-cwinrt\\.build\\x86_64-unknown-windows-msvc\\debug\\CWinRT.product\\Objects.LinkFileList"
}
}
}

3
.gitignore vendored
View File

@ -55,3 +55,6 @@ dkms.conf
.generated
swift-winrt.rsp
Package.resolved
# Swift
/.build

View File

@ -1,7 +1,6 @@
# swift-cwinrt
> [!WARNING]
> This project contains an outdated snapshot of a subset of WinRT projections generated with [swift-winrt](https://github.com/thebrowsercompany/swift-winrt), provided for illustration purposes. To use WinRT APIs in your Swift project, we recommend using [swift-winrt](https://github.com/thebrowsercompany/swift-winrt) directly to generate your own projections.
This is based on [thebrowsercompany/swift-cwinrt](https://github.com/thebrowsercompany/swift-cwinrt).
C API definition used by Swift Language bindings.

View File

@ -1,237 +1,237 @@
// Works around limitations of Swift's C++ Interop when exposing the Windows.h GUID type to Swift.
#pragma once
typedef struct GUID_Workaround {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID_Workaround;
typedef GUID_Workaround CLSID_Workaround;
typedef GUID_Workaround IID_Workaround;
typedef GUID_Workaround UUID_Workaround;
// Functions depending on workaround types
typedef struct IUnknown_Workaround IUnknown_Workaround;
typedef struct IInspectable_Workaround IInspectable_Workaround;
typedef struct IMarshal_Workaround IMarshal_Workaround;
#include <combaseapi.h>
inline HRESULT CoCreateInstance_Workaround(
const CLSID_Workaround* rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
const IID_Workaround* riid,
LPVOID* ppv) {
#ifdef __cplusplus
return CoCreateInstance(*(CLSID*)rclsid, pUnkOuter, dwClsContext, *(IID*)riid, ppv);
#else
return CoCreateInstance((REFCLSID)rclsid, pUnkOuter, dwClsContext, (REFIID)riid, ppv);
#endif
}
inline HRESULT CoCreateFreeThreadedMarshaler_Workaround(IUnknown_Workaround* pUnkOuter, IUnknown_Workaround** ppunkMarshal) {
return CoCreateFreeThreadedMarshaler((IUnknown*)pUnkOuter, (IUnknown**)ppunkMarshal);
}
inline int StringFromGUID2_Workaround(const GUID_Workaround* rguid, LPOLESTR lpsz, int cchMax) {
#ifdef __cplusplus
return StringFromGUID2(*(GUID*)rguid, lpsz, cchMax);
#else
return StringFromGUID2((REFGUID)rguid, lpsz, cchMax);
#endif
}
#include <rpc.h>
inline RPC_STATUS UuidFromStringA_Workaround(RPC_CSTR StringUuid, UUID_Workaround* Uuid) {
return UuidFromStringA(StringUuid, (UUID*)Uuid);
}
#include <roapi.h>
inline HRESULT RoActivateInstance_Workaround(
HSTRING activatableClassId,
IInspectable_Workaround** instance) {
return RoActivateInstance(activatableClassId, (IInspectable**)instance);
}
inline HRESULT RoGetActivationFactory_Workaround(
HSTRING activatableClassId,
const IID_Workaround* iid,
void** factory) {
#ifdef __cplusplus
return RoGetActivationFactory(activatableClassId, *(IID*)iid, factory);
#else
return RoGetActivationFactory(activatableClassId, (REFIID)iid, factory);
#endif
}
//-------------------------------------------------------------------------------------------------
// Begin the great lie
// Everything below will unknowingly use Xxx_Workaround.
// For example, uses of GUID will be redirected to GUID_Workaround.
//-------------------------------------------------------------------------------------------------
// Preemptively include headers before swapping out the IID type
// This no-op the #includes in generated code, so that it instead relies of our workaround types
#include <EventToken.h>
#include <inspectable.h>
#include <windowscontracts.h>
#define GUID GUID_Workaround
#undef REFGUID // REFGUID is a #define, not a typedef
#define REFGUID const GUID* __MIDL_CONST
#define IID IID_Workaround
#undef REFIID // REFIID is a #define, not a typedef
#define REFIID const IID* __MIDL_CONST
#define CLSID GUID
#define IUnknown IUnknown_Workaround
#define IUnknownVtbl IUnknownVtbl_Workaround
#define IInspectable IInspectable_Workaround
#define IInspectableVtbl IInspectableVtbl_Workaround
#define IMarshal IMarshal_Workaround
#define IMarshalVtbl IMarshalVtbl_Workaround
// iunknown.h
typedef struct IUnknownVtbl
{
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IUnknown * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IUnknown * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IUnknown * This);
} IUnknownVtbl;
interface IUnknown
{
CONST_VTBL struct IUnknownVtbl *lpVtbl;
};
// IInspectable.h
typedef struct IInspectableVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IInspectable * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IInspectable * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IInspectable * This);
HRESULT ( STDMETHODCALLTYPE *GetIids )(
__RPC__in IInspectable * This,
/* [out] */ __RPC__out ULONG *iidCount,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids);
HRESULT ( STDMETHODCALLTYPE *GetRuntimeClassName )(
__RPC__in IInspectable * This,
/* [out] */ __RPC__deref_out_opt HSTRING *className);
HRESULT ( STDMETHODCALLTYPE *GetTrustLevel )(
__RPC__in IInspectable * This,
/* [out] */ __RPC__out TrustLevel *trustLevel);
END_INTERFACE
} IInspectableVtbl;
interface IInspectable
{
CONST_VTBL struct IInspectableVtbl *lpVtbl;
};
typedef struct IMarshalVtbl
{
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMarshal * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IMarshal * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IMarshal * This);
HRESULT ( STDMETHODCALLTYPE *GetUnmarshalClass )(
IMarshal * This,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][unique][in] */
_In_opt_ void *pv,
/* [annotation][in] */
_In_ DWORD dwDestContext,
/* [annotation][unique][in] */
_Reserved_ void *pvDestContext,
/* [annotation][in] */
_In_ DWORD mshlflags,
/* [annotation][out] */
_Out_ CLSID *pCid);
HRESULT ( STDMETHODCALLTYPE *GetMarshalSizeMax )(
IMarshal * This,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][unique][in] */
_In_opt_ void *pv,
/* [annotation][in] */
_In_ DWORD dwDestContext,
/* [annotation][unique][in] */
_Reserved_ void *pvDestContext,
/* [annotation][in] */
_In_ DWORD mshlflags,
/* [annotation][out] */
_Out_ DWORD *pSize);
HRESULT ( STDMETHODCALLTYPE *MarshalInterface )(
IMarshal * This,
/* [annotation][unique][in] */
_In_ IStream *pStm,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][unique][in] */
_In_opt_ void *pv,
/* [annotation][in] */
_In_ DWORD dwDestContext,
/* [annotation][unique][in] */
_Reserved_ void *pvDestContext,
/* [annotation][in] */
_In_ DWORD mshlflags);
HRESULT ( STDMETHODCALLTYPE *UnmarshalInterface )(
IMarshal * This,
/* [annotation][unique][in] */
_In_ IStream *pStm,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][out] */
_Outptr_ void **ppv);
HRESULT ( STDMETHODCALLTYPE *ReleaseMarshalData )(
IMarshal * This,
/* [annotation][unique][in] */
_In_ IStream *pStm);
HRESULT ( STDMETHODCALLTYPE *DisconnectObject )(
IMarshal * This,
/* [annotation][in] */
_In_ DWORD dwReserved);
} IMarshalVtbl;
interface IMarshal
{
CONST_VTBL struct IMarshalVtbl *lpVtbl;
// Works around limitations of Swift's C++ Interop when exposing the Windows.h GUID type to Swift.
#pragma once
typedef struct GUID_Workaround {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID_Workaround;
typedef GUID_Workaround CLSID_Workaround;
typedef GUID_Workaround IID_Workaround;
typedef GUID_Workaround UUID_Workaround;
// Functions depending on workaround types
typedef struct IUnknown_Workaround IUnknown_Workaround;
typedef struct IInspectable_Workaround IInspectable_Workaround;
typedef struct IMarshal_Workaround IMarshal_Workaround;
#include <combaseapi.h>
inline HRESULT CoCreateInstance_Workaround(
const CLSID_Workaround* rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
const IID_Workaround* riid,
LPVOID* ppv) {
#ifdef __cplusplus
return CoCreateInstance(*(CLSID*)rclsid, pUnkOuter, dwClsContext, *(IID*)riid, ppv);
#else
return CoCreateInstance((REFCLSID)rclsid, pUnkOuter, dwClsContext, (REFIID)riid, ppv);
#endif
}
inline HRESULT CoCreateFreeThreadedMarshaler_Workaround(IUnknown_Workaround* pUnkOuter, IUnknown_Workaround** ppunkMarshal) {
return CoCreateFreeThreadedMarshaler((IUnknown*)pUnkOuter, (IUnknown**)ppunkMarshal);
}
inline int StringFromGUID2_Workaround(const GUID_Workaround* rguid, LPOLESTR lpsz, int cchMax) {
#ifdef __cplusplus
return StringFromGUID2(*(GUID*)rguid, lpsz, cchMax);
#else
return StringFromGUID2((REFGUID)rguid, lpsz, cchMax);
#endif
}
#include <rpc.h>
inline RPC_STATUS UuidFromStringA_Workaround(RPC_CSTR StringUuid, UUID_Workaround* Uuid) {
return UuidFromStringA(StringUuid, (UUID*)Uuid);
}
#include <roapi.h>
inline HRESULT RoActivateInstance_Workaround(
HSTRING activatableClassId,
IInspectable_Workaround** instance) {
return RoActivateInstance(activatableClassId, (IInspectable**)instance);
}
inline HRESULT RoGetActivationFactory_Workaround(
HSTRING activatableClassId,
const IID_Workaround* iid,
void** factory) {
#ifdef __cplusplus
return RoGetActivationFactory(activatableClassId, *(IID*)iid, factory);
#else
return RoGetActivationFactory(activatableClassId, (REFIID)iid, factory);
#endif
}
//-------------------------------------------------------------------------------------------------
// Begin the great lie
// Everything below will unknowingly use Xxx_Workaround.
// For example, uses of GUID will be redirected to GUID_Workaround.
//-------------------------------------------------------------------------------------------------
// Preemptively include headers before swapping out the IID type
// This no-op the #includes in generated code, so that it instead relies of our workaround types
#include <EventToken.h>
#include <inspectable.h>
#include <windowscontracts.h>
#define GUID GUID_Workaround
#undef REFGUID // REFGUID is a #define, not a typedef
#define REFGUID const GUID* __MIDL_CONST
#define IID IID_Workaround
#undef REFIID // REFIID is a #define, not a typedef
#define REFIID const IID* __MIDL_CONST
#define CLSID GUID
#define IUnknown IUnknown_Workaround
#define IUnknownVtbl IUnknownVtbl_Workaround
#define IInspectable IInspectable_Workaround
#define IInspectableVtbl IInspectableVtbl_Workaround
#define IMarshal IMarshal_Workaround
#define IMarshalVtbl IMarshalVtbl_Workaround
// iunknown.h
typedef struct IUnknownVtbl
{
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IUnknown * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IUnknown * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IUnknown * This);
} IUnknownVtbl;
interface IUnknown
{
CONST_VTBL struct IUnknownVtbl *lpVtbl;
};
// IInspectable.h
typedef struct IInspectableVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IInspectable * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IInspectable * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IInspectable * This);
HRESULT ( STDMETHODCALLTYPE *GetIids )(
__RPC__in IInspectable * This,
/* [out] */ __RPC__out ULONG *iidCount,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids);
HRESULT ( STDMETHODCALLTYPE *GetRuntimeClassName )(
__RPC__in IInspectable * This,
/* [out] */ __RPC__deref_out_opt HSTRING *className);
HRESULT ( STDMETHODCALLTYPE *GetTrustLevel )(
__RPC__in IInspectable * This,
/* [out] */ __RPC__out TrustLevel *trustLevel);
END_INTERFACE
} IInspectableVtbl;
interface IInspectable
{
CONST_VTBL struct IInspectableVtbl *lpVtbl;
};
typedef struct IMarshalVtbl
{
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMarshal * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IMarshal * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IMarshal * This);
HRESULT ( STDMETHODCALLTYPE *GetUnmarshalClass )(
IMarshal * This,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][unique][in] */
_In_opt_ void *pv,
/* [annotation][in] */
_In_ DWORD dwDestContext,
/* [annotation][unique][in] */
_Reserved_ void *pvDestContext,
/* [annotation][in] */
_In_ DWORD mshlflags,
/* [annotation][out] */
_Out_ CLSID *pCid);
HRESULT ( STDMETHODCALLTYPE *GetMarshalSizeMax )(
IMarshal * This,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][unique][in] */
_In_opt_ void *pv,
/* [annotation][in] */
_In_ DWORD dwDestContext,
/* [annotation][unique][in] */
_Reserved_ void *pvDestContext,
/* [annotation][in] */
_In_ DWORD mshlflags,
/* [annotation][out] */
_Out_ DWORD *pSize);
HRESULT ( STDMETHODCALLTYPE *MarshalInterface )(
IMarshal * This,
/* [annotation][unique][in] */
_In_ IStream *pStm,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][unique][in] */
_In_opt_ void *pv,
/* [annotation][in] */
_In_ DWORD dwDestContext,
/* [annotation][unique][in] */
_Reserved_ void *pvDestContext,
/* [annotation][in] */
_In_ DWORD mshlflags);
HRESULT ( STDMETHODCALLTYPE *UnmarshalInterface )(
IMarshal * This,
/* [annotation][unique][in] */
_In_ IStream *pStm,
/* [annotation][in] */
_In_ REFIID riid,
/* [annotation][out] */
_Outptr_ void **ppv);
HRESULT ( STDMETHODCALLTYPE *ReleaseMarshalData )(
IMarshal * This,
/* [annotation][unique][in] */
_In_ IStream *pStm);
HRESULT ( STDMETHODCALLTYPE *DisconnectObject )(
IMarshal * This,
/* [annotation][in] */
_In_ DWORD dwReserved);
} IMarshalVtbl;
interface IMarshal
{
CONST_VTBL struct IMarshalVtbl *lpVtbl;
};

View File

@ -1,74 +1,74 @@
// The real ivectorchangedeventargs.h will provide different definitions in C vs C++ compilation mode.
// Override it with ours so we ensure we get the C definitions.
#pragma once
#include <windows.h>
#include <inspectable.h>
#if !defined(____x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs_INTERFACE_DEFINED__)
#define ____x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs_INTERFACE_DEFINED__
typedef interface __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs;
typedef /* [v1_enum] */
enum __x_ABI_CWindows_CFoundation_CCollections_CCollectionChange
{
CollectionChange_Reset,
CollectionChange_ItemInserted,
CollectionChange_ItemRemoved,
CollectionChange_ItemChanged,
} __x_ABI_CWindows_CFoundation_CCollections_CCollectionChange;
/* [contract, version, pointer_default(unique), uuid("575933df-34fe-4480-af15-07691f3d5d9b"), object] */
typedef struct __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface)(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject
);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This
);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This
);
HRESULT ( STDMETHODCALLTYPE *GetIids )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [out] */ __RPC__out ULONG *iidCount,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids
);
HRESULT ( STDMETHODCALLTYPE *GetRuntimeClassName )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [out] */ __RPC__deref_out_opt HSTRING *className
);
HRESULT ( STDMETHODCALLTYPE *GetTrustLevel )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [OUT ] */ __RPC__out TrustLevel *trustLevel
);
/* [propget] */HRESULT ( STDMETHODCALLTYPE *get_CollectionChange )(
__x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [retval, out] */__RPC__out __x_ABI_CWindows_CFoundation_CCollections_CCollectionChange * value
);
/* [propget] */HRESULT ( STDMETHODCALLTYPE *get_Index )(
__x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [retval, out] */__RPC__out unsigned int * value
);
END_INTERFACE
} __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgsVtbl;
interface __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs
{
CONST_VTBL struct __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgsVtbl *lpVtbl;
};
// The real ivectorchangedeventargs.h will provide different definitions in C vs C++ compilation mode.
// Override it with ours so we ensure we get the C definitions.
#pragma once
#include <windows.h>
#include <inspectable.h>
#if !defined(____x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs_INTERFACE_DEFINED__)
#define ____x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs_INTERFACE_DEFINED__
typedef interface __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs;
typedef /* [v1_enum] */
enum __x_ABI_CWindows_CFoundation_CCollections_CCollectionChange
{
CollectionChange_Reset,
CollectionChange_ItemInserted,
CollectionChange_ItemRemoved,
CollectionChange_ItemChanged,
} __x_ABI_CWindows_CFoundation_CCollections_CCollectionChange;
/* [contract, version, pointer_default(unique), uuid("575933df-34fe-4480-af15-07691f3d5d9b"), object] */
typedef struct __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface)(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject
);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This
);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This
);
HRESULT ( STDMETHODCALLTYPE *GetIids )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [out] */ __RPC__out ULONG *iidCount,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids
);
HRESULT ( STDMETHODCALLTYPE *GetRuntimeClassName )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [out] */ __RPC__deref_out_opt HSTRING *className
);
HRESULT ( STDMETHODCALLTYPE *GetTrustLevel )(
__RPC__in __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [OUT ] */ __RPC__out TrustLevel *trustLevel
);
/* [propget] */HRESULT ( STDMETHODCALLTYPE *get_CollectionChange )(
__x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [retval, out] */__RPC__out __x_ABI_CWindows_CFoundation_CCollections_CCollectionChange * value
);
/* [propget] */HRESULT ( STDMETHODCALLTYPE *get_Index )(
__x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs * This,
/* [retval, out] */__RPC__out unsigned int * value
);
END_INTERFACE
} __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgsVtbl;
interface __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgs
{
CONST_VTBL struct __x_ABI_CWindows_CFoundation_CCollections_CIVectorChangedEventArgsVtbl *lpVtbl;
};
#endif

View File

@ -1,30 +1,30 @@
// The real MemoryBuffer.h doesn't provide C definitions, so we need to provide those here
// No pragma once, we might include this twice (once for the regular definitions, once for the workaround)
#include <objidl.h>
#ifndef _IMEMORYBUFFERBYTEACCESS_DEFINED
#define _IMEMORYBUFFERBYTEACCESS_DEFINED
typedef interface IMemoryBufferByteAccess IMemoryBufferByteAccess;
#endif
typedef struct IMemoryBufferByteAccessVtbl
{
BEGIN_INTERFACE
HRESULT (STDMETHODCALLTYPE* QueryInterface)(__RPC__in IMemoryBufferByteAccess* This,
REFIID riid,
_COM_Outptr_ void** ppvObject);
ULONG (STDMETHODCALLTYPE* AddRef)(__RPC__in IMemoryBufferByteAccess* This);
ULONG (STDMETHODCALLTYPE* Release)(__RPC__in IMemoryBufferByteAccess* This);
HRESULT (STDMETHODCALLTYPE* GetBuffer)(__RPC__in IMemoryBufferByteAccess* This,
BYTE** value,
_Out_ UINT32* capacity);
END_INTERFACE
} IMemoryBufferByteAccessVtbl;
interface IMemoryBufferByteAccess
{
CONST_VTBL struct IMemoryBufferByteAccessVtbl* lpVtbl;
// The real MemoryBuffer.h doesn't provide C definitions, so we need to provide those here
// No pragma once, we might include this twice (once for the regular definitions, once for the workaround)
#include <objidl.h>
#ifndef _IMEMORYBUFFERBYTEACCESS_DEFINED
#define _IMEMORYBUFFERBYTEACCESS_DEFINED
typedef interface IMemoryBufferByteAccess IMemoryBufferByteAccess;
#endif
typedef struct IMemoryBufferByteAccessVtbl
{
BEGIN_INTERFACE
HRESULT (STDMETHODCALLTYPE* QueryInterface)(__RPC__in IMemoryBufferByteAccess* This,
REFIID riid,
_COM_Outptr_ void** ppvObject);
ULONG (STDMETHODCALLTYPE* AddRef)(__RPC__in IMemoryBufferByteAccess* This);
ULONG (STDMETHODCALLTYPE* Release)(__RPC__in IMemoryBufferByteAccess* This);
HRESULT (STDMETHODCALLTYPE* GetBuffer)(__RPC__in IMemoryBufferByteAccess* This,
BYTE** value,
_Out_ UINT32* capacity);
END_INTERFACE
} IMemoryBufferByteAccessVtbl;
interface IMemoryBufferByteAccess
{
CONST_VTBL struct IMemoryBufferByteAccessVtbl* lpVtbl;
};

View File

@ -1,57 +1,57 @@
// The real restrictederrorinfo.h will provide different definitions in C vs C++ compilation mode.
// Override it with ours so we ensure we get the C definitions.
// No pragma once, we might include this twice (once for the regular definitions, once for the workaround)
#include <combaseapi.h>
#ifndef __IRestrictedErrorInfo_FWD_DEFINED__
#define __IRestrictedErrorInfo_FWD_DEFINED__
typedef interface IRestrictedErrorInfo IRestrictedErrorInfo;
#endif
#ifndef __IRestrictedErrorInfo_INTERFACE_DEFINED__
#define __IRestrictedErrorInfo_INTERFACE_DEFINED__
EXTERN_C const IID IID_IRestrictedErrorInfo;
typedef struct IRestrictedErrorInfoVtbl
{
BEGIN_INTERFACE
DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IRestrictedErrorInfo * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
DECLSPEC_XFGVIRT(IUnknown, AddRef)
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IRestrictedErrorInfo * This);
DECLSPEC_XFGVIRT(IUnknown, Release)
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IRestrictedErrorInfo * This);
DECLSPEC_XFGVIRT(IRestrictedErrorInfo, GetErrorDetails)
HRESULT ( STDMETHODCALLTYPE *GetErrorDetails )(
__RPC__in IRestrictedErrorInfo * This,
/* [out] */ __RPC__deref_out_opt BSTR *description,
/* [out] */ __RPC__out HRESULT *error,
/* [out] */ __RPC__deref_out_opt BSTR *restrictedDescription,
/* [out] */ __RPC__deref_out_opt BSTR *capabilitySid);
DECLSPEC_XFGVIRT(IRestrictedErrorInfo, GetReference)
HRESULT ( STDMETHODCALLTYPE *GetReference )(
__RPC__in IRestrictedErrorInfo * This,
/* [out] */ __RPC__deref_out_opt BSTR *reference);
END_INTERFACE
} IRestrictedErrorInfoVtbl;
interface IRestrictedErrorInfo
{
CONST_VTBL struct IRestrictedErrorInfoVtbl *lpVtbl;
};
#endif
// The real restrictederrorinfo.h will provide different definitions in C vs C++ compilation mode.
// Override it with ours so we ensure we get the C definitions.
// No pragma once, we might include this twice (once for the regular definitions, once for the workaround)
#include <combaseapi.h>
#ifndef __IRestrictedErrorInfo_FWD_DEFINED__
#define __IRestrictedErrorInfo_FWD_DEFINED__
typedef interface IRestrictedErrorInfo IRestrictedErrorInfo;
#endif
#ifndef __IRestrictedErrorInfo_INTERFACE_DEFINED__
#define __IRestrictedErrorInfo_INTERFACE_DEFINED__
EXTERN_C const IID IID_IRestrictedErrorInfo;
typedef struct IRestrictedErrorInfoVtbl
{
BEGIN_INTERFACE
DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IRestrictedErrorInfo * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
DECLSPEC_XFGVIRT(IUnknown, AddRef)
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IRestrictedErrorInfo * This);
DECLSPEC_XFGVIRT(IUnknown, Release)
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IRestrictedErrorInfo * This);
DECLSPEC_XFGVIRT(IRestrictedErrorInfo, GetErrorDetails)
HRESULT ( STDMETHODCALLTYPE *GetErrorDetails )(
__RPC__in IRestrictedErrorInfo * This,
/* [out] */ __RPC__deref_out_opt BSTR *description,
/* [out] */ __RPC__out HRESULT *error,
/* [out] */ __RPC__deref_out_opt BSTR *restrictedDescription,
/* [out] */ __RPC__deref_out_opt BSTR *capabilitySid);
DECLSPEC_XFGVIRT(IRestrictedErrorInfo, GetReference)
HRESULT ( STDMETHODCALLTYPE *GetReference )(
__RPC__in IRestrictedErrorInfo * This,
/* [out] */ __RPC__deref_out_opt BSTR *reference);
END_INTERFACE
} IRestrictedErrorInfoVtbl;
interface IRestrictedErrorInfo
{
CONST_VTBL struct IRestrictedErrorInfoVtbl *lpVtbl;
};
#endif

View File

@ -1,32 +1,32 @@
// The real robuffer.h doesn't provide C definitions, so we need to provide those here
// No pragma once, we might include this twice (once for the regular definitions, once for the workaround)
#include <apiset.h>
#include <apisetcconv.h>
#include <objidl.h>
#ifndef _IBufferByteAccess_DEFINED
#define _IBufferByteAccess_DEFINED
typedef interface C_IBufferByteAccess C_IBufferByteAccess;
#endif /* _IBufferByteAccess_DEFINED */
typedef struct C_IBufferByteAccessVtbl
{
BEGIN_INTERFACE
HRESULT (STDMETHODCALLTYPE* QueryInterface)(__RPC__in C_IBufferByteAccess* This,
REFIID riid,
_COM_Outptr_ void** ppvObject);
ULONG (STDMETHODCALLTYPE* AddRef)(__RPC__in C_IBufferByteAccess* This);
ULONG (STDMETHODCALLTYPE* Release)(__RPC__in C_IBufferByteAccess* This);
HRESULT (STDMETHODCALLTYPE* Buffer)(__RPC__in C_IBufferByteAccess* This,
BYTE** value);
END_INTERFACE
} C_IBufferByteAccessVtbl;
interface C_IBufferByteAccess
{
CONST_VTBL struct C_IBufferByteAccessVtbl* lpVtbl;
};
// The real robuffer.h doesn't provide C definitions, so we need to provide those here
// No pragma once, we might include this twice (once for the regular definitions, once for the workaround)
#include <apiset.h>
#include <apisetcconv.h>
#include <objidl.h>
#ifndef _IBufferByteAccess_DEFINED
#define _IBufferByteAccess_DEFINED
typedef interface C_IBufferByteAccess C_IBufferByteAccess;
#endif /* _IBufferByteAccess_DEFINED */
typedef struct C_IBufferByteAccessVtbl
{
BEGIN_INTERFACE
HRESULT (STDMETHODCALLTYPE* QueryInterface)(__RPC__in C_IBufferByteAccess* This,
REFIID riid,
_COM_Outptr_ void** ppvObject);
ULONG (STDMETHODCALLTYPE* AddRef)(__RPC__in C_IBufferByteAccess* This);
ULONG (STDMETHODCALLTYPE* Release)(__RPC__in C_IBufferByteAccess* This);
HRESULT (STDMETHODCALLTYPE* Buffer)(__RPC__in C_IBufferByteAccess* This,
BYTE** value);
END_INTERFACE
} C_IBufferByteAccessVtbl;
interface C_IBufferByteAccess
{
CONST_VTBL struct C_IBufferByteAccessVtbl* lpVtbl;
};

View File

@ -1,11 +1,11 @@
// ISO C requires a translation unit to contain at least one declaration.
extern unsigned _;
// To force the linker to produce a .lib file, currently required for dynamic
// linking, at least the way our CMakeLists.txt are currently structured, we
// also need to export a symbol.
#if defined(CWinRT_EXPORTS)
int __declspec(dllexport) force_lib_generation(void) {
return 1;
}
#endif
// ISO C requires a translation unit to contain at least one declaration.
extern unsigned _;
// To force the linker to produce a .lib file, currently required for dynamic
// linking, at least the way our CMakeLists.txt are currently structured, we
// also need to export a symbol.
#if defined(CWinRT_EXPORTS)
int __declspec(dllexport) force_lib_generation(void) {
return 1;
}
#endif