[PATCH v5 1/2] include: Add winusb.h file.

Rémi Bernon rbernon at codeweavers.com
Thu Apr 28 07:33:18 CDT 2022


On 4/14/22 01:36, Mohamad Al-Jaf wrote:
> +#ifndef _WINUSB_H_
> +#define _WINUSB_H_
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +typedef PVOID WINUSB_INTERFACE_HANDLE, *PWINUSB_INTERFACE_HANDLE;
> +
> +typedef struct _WINUSB_SETUP_PACKET {
> +    UCHAR   RequestType;
> +    UCHAR   Request;
> +    USHORT  Value;
> +    USHORT  Index;
> +    USHORT  Length;
> +} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET;
> +

I think the struct packing is wrong, the SDK uses #pragma pack(1) here, 
which probably should use #include "pshpack1.h" / "poppack.h".


> +BOOL WINAPI WinUsb_AbortPipe(WINUSB_INTERFACE_HANDLE,UCHAR);
> +BOOL WINAPI WinUsb_ControlTransfer(WINUSB_INTERFACE_HANDLE,WINUSB_SETUP_PACKET,PUCHAR,ULONG,PULONG,LPOVERLAPPED);
> +BOOL WINAPI WinUsb_FlushPipe(WINUSB_INTERFACE_HANDLE,UCHAR);
> +BOOL WINAPI WinUsb_Free(WINUSB_INTERFACE_HANDLE);
> +BOOL WINAPI WinUsb_GetAssociatedInterface(WINUSB_INTERFACE_HANDLE,UCHAR,PWINUSB_INTERFACE_HANDLE);
> +BOOL WINAPI WinUsb_GetCurrentAlternateSetting(WINUSB_INTERFACE_HANDLE,PUCHAR);
> +BOOL WINAPI WinUsb_GetDescriptor(WINUSB_INTERFACE_HANDLE,UCHAR,UCHAR,USHORT,PUCHAR,ULONG,PULONG);
> +BOOL WINAPI WinUsb_GetOverlappedResult(WINUSB_INTERFACE_HANDLE,LPOVERLAPPED,LPDWORD,BOOL);
> +BOOL WINAPI WinUsb_GetPipePolicy(WINUSB_INTERFACE_HANDLE,UCHAR,ULONG,PULONG,PVOID);
> +BOOL WINAPI WinUsb_GetPowerPolicy(WINUSB_INTERFACE_HANDLE,ULONG,PULONG,PVOID);
> +BOOL WINAPI WinUsb_Initialize(HANDLE,PWINUSB_INTERFACE_HANDLE);
> +BOOL WINAPI WinUsb_QueryDeviceInformation(WINUSB_INTERFACE_HANDLE,ULONG,PULONG,PVOID);
> +BOOL WINAPI WinUsb_ReadPipe(WINUSB_INTERFACE_HANDLE,UCHAR,PUCHAR,ULONG,PULONG,LPOVERLAPPED);
> +BOOL WINAPI WinUsb_ResetPipe(WINUSB_INTERFACE_HANDLE,UCHAR);
> +BOOL WINAPI WinUsb_SetCurrentAlternateSetting(WINUSB_INTERFACE_HANDLE,UCHAR);
> +BOOL WINAPI WinUsb_SetPipePolicy(WINUSB_INTERFACE_HANDLE,UCHAR,ULONG,ULONG,PVOID);
> +BOOL WINAPI WinUsb_SetPowerPolicy(WINUSB_INTERFACE_HANDLE,ULONG,ULONG,PVOID);
> +BOOL WINAPI WinUsb_WritePipe(WINUSB_INTERFACE_HANDLE,UCHAR,PUCHAR,ULONG,PULONG,LPOVERLAPPED);
> +


I have no idea what's the usual policy for how to write these. The 
signatures look alright, but are we still using LP*/P* types, or should 
it be expanded to pointers?

I see the previous patch version had more functions, and I can't really 
tell if it's better or not. Imho either add only the functions that are 
going to be used (so WinUsb_Free) or required by third-party programs to 
build, or add everything that the SDK public headers declare?

Anything in between seems arbitrary to me, but I have not much 
experience in adding stuff like this.

-- 
Rémi Bernon <rbernon at codeweavers.com>



More information about the wine-devel mailing list