wine/include/windows.devices.usb.idl
2023-07-24 11:53:01 +02:00

177 lines
6.7 KiB
Text

/*
* Copyright (C) 2023 Mohamad Al-Jaf
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifdef __WIDL__
#pragma winrt ns_prefix
#endif
import "inspectable.idl";
import "asyncinfo.idl";
import "eventtoken.idl";
import "windowscontracts.idl";
import "windows.foundation.idl";
import "windows.storage.streams.idl";
namespace Windows.Devices.Usb {
interface IUsbDevice;
interface IUsbDeviceClass;
interface IUsbConfiguration;
interface IUsbDeviceDescriptor;
interface IUsbDeviceStatics;
interface IUsbInterface;
interface IUsbSetupPacket;
interface IUsbSetupPacketFactory;
runtimeclass UsbConfiguration;
runtimeclass UsbDevice;
runtimeclass UsbDeviceClass;
runtimeclass UsbDeviceDescriptor;
runtimeclass UsbInterface;
runtimeclass UsbSetupPacket;
declare {
interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Devices.Usb.UsbDevice *>;
interface Windows.Foundation.IAsyncOperation<Windows.Devices.Usb.UsbDevice *>;
}
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
exclusiveto(Windows.Devices.Usb.UsbDevice),
uuid(5249b992-c456-44d5-ad5e-24f5a089f63b)
]
interface IUsbDevice : IInspectable
requires Windows.Foundation.IClosable
{
[overload("SendControlOutTransferAsync")]
HRESULT SendControlOutTransferAsync(
[in] Windows.Devices.Usb.UsbSetupPacket *packet,
[in] Windows.Storage.Streams.IBuffer *buffer,
[out, retval] Windows.Foundation.IAsyncOperation<UINT32> **operation
);
[overload("SendControlOutTransferAsync")]
HRESULT SendControlOutTransferAsyncNoBuffer(
[in] Windows.Devices.Usb.UsbSetupPacket *packet,
[out, retval] Windows.Foundation.IAsyncOperation<UINT32> **operation
);
[overload("SendControlInTransferAsync")]
HRESULT SendControlInTransferAsync(
[in] Windows.Devices.Usb.UsbSetupPacket *packet,
[in] Windows.Storage.Streams.IBuffer *buffer,
[out, retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IBuffer *> **operation
);
[overload("SendControlInTransferAsync")]
HRESULT SendControlInTransferAsyncNoBuffer(
[in] Windows.Devices.Usb.UsbSetupPacket *packet,
[out, retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IBuffer *> **operation
);
[propget] HRESULT DefaultInterface([out, retval] Windows.Devices.Usb.UsbInterface **value);
[propget] HRESULT DeviceDescriptor([out, retval] Windows.Devices.Usb.UsbDeviceDescriptor **value);
[propget] HRESULT Configuration([out, retval] Windows.Devices.Usb.UsbConfiguration **value);
}
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
exclusiveto(Windows.Devices.Usb.UsbDeviceClass),
uuid(051942f9-845e-47eb-b12a-38f2f617afe7)
]
interface IUsbDeviceClass : IInspectable
{
[propget] HRESULT ClassCode([out, retval] BYTE *value);
[propput] HRESULT ClassCode([in] BYTE value);
[propget] HRESULT SubclassCode([out, retval] Windows.Foundation.IReference<BYTE> **value);
[propput] HRESULT SubclassCode([in] Windows.Foundation.IReference<BYTE> *value);
[propget] HRESULT ProtocolCode([out, retval] Windows.Foundation.IReference<BYTE> **value);
[propput] HRESULT ProtocolCode([in] Windows.Foundation.IReference<BYTE> *value);
}
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
exclusiveto(Windows.Devices.Usb.UsbDevice),
uuid(066b85a2-09b7-4446-8502-6fe6dcaa7309)
]
interface IUsbDeviceStatics : IInspectable
{
[overload("GetDeviceSelector")]
HRESULT GetDeviceSelector([in] UINT32 vendor, [in] UINT32 product, [in] GUID class, [out, retval] HSTRING *value);
[overload("GetDeviceSelector")]
HRESULT GetDeviceSelectorGuidOnly([in] GUID class, [out, retval] HSTRING *value);
[overload("GetDeviceSelector")]
HRESULT GetDeviceSelectorVidPidOnly([in] UINT32 vendor, [in] UINT32 product, [out, retval] HSTRING *value);
HRESULT GetDeviceClassSelector([in] Windows.Devices.Usb.UsbDeviceClass *class, [out, retval] HSTRING *value);
HRESULT FromIdAsync([in] HSTRING id, [out, retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Usb.UsbDevice *> **operation);
}
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
marshaling_behavior(agile)
]
runtimeclass UsbConfiguration
{
[default] interface Windows.Devices.Usb.IUsbConfiguration;
}
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
marshaling_behavior(agile),
static(Windows.Devices.Usb.IUsbDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0)
]
runtimeclass UsbDevice
{
[default] interface Windows.Devices.Usb.IUsbDevice;
interface Windows.Foundation.IClosable;
}
[
activatable(Windows.Foundation.UniversalApiContract, 1.0),
contract(Windows.Foundation.UniversalApiContract, 1.0),
marshaling_behavior(agile)
]
runtimeclass UsbDeviceClass
{
[default] interface Windows.Devices.Usb.IUsbDeviceClass;
}
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
marshaling_behavior(agile)
]
runtimeclass UsbDeviceDescriptor
{
[default] interface Windows.Devices.Usb.IUsbDeviceDescriptor;
}
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
marshaling_behavior(agile)
]
runtimeclass UsbInterface
{
[default] interface Windows.Devices.Usb.IUsbInterface;
}
[
activatable(Windows.Devices.Usb.IUsbSetupPacketFactory, Windows.Foundation.UniversalApiContract, 1.0),
activatable(Windows.Foundation.UniversalApiContract, 1.0),
contract(Windows.Foundation.UniversalApiContract, 1.0),
marshaling_behavior(agile)
]
runtimeclass UsbSetupPacket
{
[default] interface Windows.Devices.Usb.IUsbSetupPacket;
}
}