twain2/pub/ddk/winusb.h

254 lines
5.5 KiB
C

/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
wusb.h
Abstract:
Public interface to winusb.dll
Environment:
Kernel Mode Only
Notes:
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
PURPOSE.
Copyright (c) 2001 Microsoft Corporation. All Rights Reserved.
Revision History:
11/19/2002 : created
Authors:
--*/
#ifndef __WUSB_H__
#define __WUSB_H__
#ifdef __cplusplus
extern "C" {
#endif
#if(NTDDI_VERSION >= NTDDI_WINXP)
#include <winusbio.h>
typedef PVOID WINUSB_INTERFACE_HANDLE, *PWINUSB_INTERFACE_HANDLE;
#pragma pack(1)
typedef struct _WINUSB_SETUP_PACKET {
UCHAR RequestType;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Length;
} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET;
#pragma pack()
BOOL __stdcall
WinUsb_Initialize(
__in HANDLE DeviceHandle,
__out PWINUSB_INTERFACE_HANDLE InterfaceHandle
);
BOOL __stdcall
WinUsb_Free(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle
);
BOOL __stdcall
WinUsb_GetAssociatedInterface(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR AssociatedInterfaceIndex,
__out PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle
);
BOOL __stdcall
WinUsb_GetDescriptor(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR DescriptorType,
__in UCHAR Index,
__in USHORT LanguageID,
__out_bcount_part_opt(BufferLength, *LengthTransferred) PUCHAR Buffer,
__in ULONG BufferLength,
__out PULONG LengthTransferred
);
BOOL __stdcall
WinUsb_QueryInterfaceSettings(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR AlternateInterfaceNumber,
__out PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor
);
BOOL __stdcall
WinUsb_QueryDeviceInformation(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in ULONG InformationType,
__inout PULONG BufferLength,
__out_bcount(*BufferLength) PVOID Buffer
);
BOOL __stdcall
WinUsb_SetCurrentAlternateSetting(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR SettingNumber
);
BOOL __stdcall
WinUsb_GetCurrentAlternateSetting(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__out PUCHAR SettingNumber
);
BOOL __stdcall
WinUsb_QueryPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR AlternateInterfaceNumber,
__in UCHAR PipeIndex,
__out PWINUSB_PIPE_INFORMATION PipeInformation
);
BOOL __stdcall
WinUsb_SetPipePolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__in ULONG PolicyType,
__in ULONG ValueLength,
__in_bcount(ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_GetPipePolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__in ULONG PolicyType,
__inout PULONG ValueLength,
__out_bcount(*ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_ReadPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__out_bcount_part_opt(BufferLength,*LengthTransferred) PUCHAR Buffer,
__in ULONG BufferLength,
__out_opt PULONG LengthTransferred,
__in_opt LPOVERLAPPED Overlapped
);
BOOL __stdcall
WinUsb_WritePipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__in_bcount(BufferLength) PUCHAR Buffer,
__in ULONG BufferLength,
__out_opt PULONG LengthTransferred,
__in_opt LPOVERLAPPED Overlapped
);
BOOL __stdcall
WinUsb_ControlTransfer(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in WINUSB_SETUP_PACKET SetupPacket,
__out_bcount_part_opt(BufferLength, *LengthTransferred) PUCHAR Buffer,
__in ULONG BufferLength,
__out_opt PULONG LengthTransferred,
__in_opt LPOVERLAPPED Overlapped
);
BOOL __stdcall
WinUsb_ResetPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID
);
BOOL __stdcall
WinUsb_AbortPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID
);
BOOL __stdcall
WinUsb_FlushPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID
);
BOOL __stdcall
WinUsb_SetPowerPolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in ULONG PolicyType,
__in ULONG ValueLength,
__in_bcount(ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_GetPowerPolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in ULONG PolicyType,
__inout PULONG ValueLength,
__out_bcount(*ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_GetOverlappedResult(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in LPOVERLAPPED lpOverlapped,
__out LPDWORD lpNumberOfBytesTransferred,
__in BOOL bWait
);
PUSB_INTERFACE_DESCRIPTOR __stdcall
WinUsb_ParseConfigurationDescriptor(
__in PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
__in PVOID StartPosition,
__in LONG InterfaceNumber,
__in LONG AlternateSetting,
__in LONG InterfaceClass,
__in LONG InterfaceSubClass,
__in LONG InterfaceProtocol
);
PUSB_COMMON_DESCRIPTOR __stdcall
WinUsb_ParseDescriptors(
__in_bcount(TotalLength) PVOID DescriptorBuffer,
__in ULONG TotalLength,
__in PVOID StartPosition,
__in LONG DescriptorType
);
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
#ifdef __cplusplus
}
#endif
#endif //__WUSB_H__