// ------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------

namespace Win32.Graphics.DirectComposition;

public static unsafe partial class Apis
{
	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionCreateDevice"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionCreateDevice(Graphics.Dxgi.IDXGIDevice* dxgiDevice, Guid* iid, void** dcompositionDevice);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionCreateDevice2"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionCreateDevice2(IUnknown* renderingDevice, Guid* iid, void** dcompositionDevice);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionCreateDevice3"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionCreateDevice3(IUnknown* renderingDevice, Guid* iid, void** dcompositionDevice);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionCreateSurfaceHandle"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionCreateSurfaceHandle(uint desiredAccess, Security.SECURITY_ATTRIBUTES* securityAttributes, Handle* surfaceHandle);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionAttachMouseWheelToHwnd"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionAttachMouseWheelToHwnd(IDCompositionVisual* visual, nint hwnd, Bool32 enable);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionAttachMouseDragToHwnd"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionAttachMouseDragToHwnd(IDCompositionVisual* visual, nint hwnd, Bool32 enable);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionGetFrameId"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionGetFrameId(CompositionFrameIdType frameIdType, ulong* frameId);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionGetStatistics"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionGetStatistics(ulong frameId, CompositionFrameStats* frameStats, uint targetIdCount, CompositionTargetId* targetIds, uint* actualTargetIdCount);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionGetTargetStatistics"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionGetTargetStatistics(ulong frameId, CompositionTargetId* targetId, CompositionTargetStats* targetStats);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionBoostCompositorClock"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial HResult DCompositionBoostCompositorClock(Bool32 enable);

	/// <include file='../DirectComposition.xml' path='doc/member[@name="DCompositionWaitForCompositorClock"]/*' />
	[LibraryImport("dcomp.dll")]
	public static partial uint DCompositionWaitForCompositorClock(uint count, Handle* handles, uint timeoutInMs);
}
