mirror of
https://github.com/reactos/reactos.git
synced 2024-06-28 08:51:29 +00:00
[HEADERS]
Reintegrate header-work branch. Thanks to hours of boring work on the ddk headers (Most of it done by Amine Khaldi), we have now a decent set, which is still incomplete but already relatively close to latest WDK. A clean rebuild is recommended. svn path=/trunk/; revision=46155
This commit is contained in:
commit
cbdf28bb6a
|
@ -88,6 +88,7 @@
|
|||
|
||||
<group compilerset="gcc">
|
||||
<compilerflag>-Wall</compilerflag>
|
||||
<compilerflag>-Wno-char-subscripts</compilerflag>
|
||||
<compilerflag compiler="cxx">-Wno-non-virtual-dtor</compilerflag>
|
||||
</group>
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<compilerflag>-ftracer</compilerflag>
|
||||
<compilerflag>-momit-leaf-frame-pointer</compilerflag>
|
||||
</if>
|
||||
<compilerflag>-fms-extensions</compilerflag>
|
||||
<compilerflag>-mpreferred-stack-boundary=2</compilerflag>
|
||||
<compilerflag compiler="midl">-m32 --win32</compilerflag>
|
||||
<compilerflag compiler="cc,cxx">-gstabs+</compilerflag>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<include base="ntoskrnl">include</include>
|
||||
<include base="ReactOS">include/reactos/libs</include>
|
||||
<include base="ReactOS">include/reactos/elf</include>
|
||||
<define name="_BLDR_" />
|
||||
<define name="_NTHAL_" />
|
||||
<define name="_NTSYSTEM_" />
|
||||
<directory name="arch">
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<include base="freeldr_base">cache</include>
|
||||
<include base="cmlib">.</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="_BLDR_" />
|
||||
<define name="_NTHAL_" />
|
||||
<define name="_NTSYSTEM_" />
|
||||
<directory name="arcemul">
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#define NTOSAPI
|
||||
#define printf TuiPrintf
|
||||
#include <ntddk.h>
|
||||
#include <ntifs.h>
|
||||
#include <ioaccess.h>
|
||||
#include <arc/arc.h>
|
||||
#include <ketypes.h>
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
#include <ntdef.h>
|
||||
#undef _NTHAL_
|
||||
#undef DECLSPEC_IMPORT
|
||||
#define DECLSPEC_IMPORT
|
||||
//#undef DECLSPEC_IMPORT
|
||||
//#define DECLSPEC_IMPORT
|
||||
#undef NTSYSAPI
|
||||
#define NTSYSAPI
|
||||
|
||||
#include <wdm.h>
|
||||
|
||||
typedef GUID UUID;
|
||||
|
||||
/* Windows Device Driver Kit */
|
||||
#include <winddk.h>
|
||||
#include <ntddk.h>
|
||||
#include <ndk/haltypes.h>
|
||||
|
||||
//typedef GUID UUID;
|
||||
|
||||
/* Disk stuff */
|
||||
typedef PVOID PLOADER_PARAMETER_BLOCK;
|
||||
#include <ntdddisk.h>
|
||||
|
|
|
@ -170,14 +170,14 @@ HANDLE WINAPI CreateFileW (LPCWSTR lpFileName,
|
|||
if(dwFlagsAndAttributes & FILE_FLAG_BACKUP_SEMANTICS)
|
||||
{
|
||||
if(dwDesiredAccess & GENERIC_ALL)
|
||||
Flags |= FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_FOR_RECOVERY;
|
||||
Flags |= FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REMOTE_INSTANCE;
|
||||
else
|
||||
{
|
||||
if(dwDesiredAccess & GENERIC_READ)
|
||||
Flags |= FILE_OPEN_FOR_BACKUP_INTENT;
|
||||
|
||||
if(dwDesiredAccess & GENERIC_WRITE)
|
||||
Flags |= FILE_OPEN_FOR_RECOVERY;
|
||||
Flags |= FILE_OPEN_REMOTE_INSTANCE;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -393,7 +393,7 @@ DriverEntry(IN PDRIVER_OBJECT DriverObject,
|
|||
DeviceExtension = DeviceObject->DeviceExtension;
|
||||
DeviceExtension->ReferenceCount = 0;
|
||||
DeviceExtension->TimerActive = FALSE;
|
||||
IoInitializeDpcRequest(DeviceObject, BeepDPC);
|
||||
IoInitializeDpcRequest(DeviceObject, (PIO_DPC_ROUTINE)BeepDPC);
|
||||
KeInitializeTimer(&DeviceExtension->Timer);
|
||||
ExInitializeFastMutex(&DeviceExtension->Mutex);
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "ntddk.h"
|
||||
#include "ntifs.h"
|
||||
#include "arc/arc.h"
|
||||
#include "halfuncs.h"
|
||||
#include "drivers/bootvid/bootvid.h"
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#define NOEXTAPI
|
||||
#include <ntddk.h>
|
||||
#include <ntifs.h>
|
||||
#define NDEBUG
|
||||
#include <halfuncs.h>
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -46,10 +46,10 @@ BCLASSAPI
|
|||
NTSTATUS
|
||||
DDKAPI
|
||||
BatteryClassSystemControl(PVOID ClassData,
|
||||
PWMILIB_CONTEXT WmiLibContext,
|
||||
PVOID WmiLibContext,
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp,
|
||||
PSYSCTL_IRP_DISPOSITION Disposition)
|
||||
PVOID Disposition)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <ntddk.h>
|
||||
#include <wmlib.h>
|
||||
#include <initguid.h>
|
||||
#include <batclass.h>
|
||||
|
||||
|
|
|
@ -33,8 +33,6 @@
|
|||
#define CACHEPAGESIZE(pDeviceExt) ((pDeviceExt)->FatInfo.BytesPerCluster > PAGE_SIZE ? \
|
||||
(pDeviceExt)->FatInfo.BytesPerCluster : PAGE_SIZE)
|
||||
|
||||
#define VOLUME_IS_DIRTY 0x00000001
|
||||
|
||||
static NTSTATUS
|
||||
VfatHasFileSystem(PDEVICE_OBJECT DeviceToMount,
|
||||
PBOOLEAN RecognizedFS,
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <initguid.h>
|
||||
#include <ntddk.h>
|
||||
#include <ntifs.h>
|
||||
#include <ntdddisk.h>
|
||||
#include <ntddcdrm.h>
|
||||
#include <scsi.h>
|
||||
|
@ -27,6 +28,8 @@
|
|||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
#define DO_XIP 0x00020000
|
||||
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
#define RAMDISK_SESSION_SIZE \
|
||||
|
|
|
@ -972,7 +972,7 @@ static BOOLEAN NTAPI AddControllers(PDRIVER_OBJECT DriverObject)
|
|||
}
|
||||
|
||||
/* 3e: Set up the DPC */
|
||||
IoInitializeDpcRequest(gControllerInfo[i].DriveInfo[j].DeviceObject, DpcForIsr);
|
||||
IoInitializeDpcRequest(gControllerInfo[i].DriveInfo[j].DeviceObject, (PIO_DPC_ROUTINE)DpcForIsr);
|
||||
|
||||
/* 3f: Point the device extension at our DriveInfo struct */
|
||||
gControllerInfo[i].DriveInfo[j].DeviceObject->DeviceExtension = &gControllerInfo[i].DriveInfo[j];
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
#endif
|
||||
|
||||
#ifndef FILE_CHARACTERISTIC_PNP_DEVICE // DDK 2003
|
||||
|
||||
#define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
|
||||
#endif // !FILE_CHARACTERISTIC_PNP_DEVICE
|
||||
|
||||
typedef enum _SYSTEM_INFORMATION_CLASS {
|
||||
SystemBasicInformation,
|
||||
|
@ -127,8 +127,6 @@ typedef enum _SYSTEM_INFORMATION_CLASS {
|
|||
#endif //__REACTOS__
|
||||
} SYSTEM_INFORMATION_CLASS;
|
||||
|
||||
#endif // !FILE_CHARACTERISTIC_PNP_DEVICE
|
||||
|
||||
|
||||
NTSYSAPI
|
||||
NTSTATUS
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <ntddk.h>
|
||||
#include <wmlib.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
|
|
@ -39,7 +39,7 @@ ExAcquireFastMutex(PFAST_MUTEX FastMutex)
|
|||
{
|
||||
/* Someone is still holding it, use slow path */
|
||||
FastMutex->Contention++;
|
||||
KeWaitForSingleObject(&FastMutex->Gate,
|
||||
KeWaitForSingleObject(&FastMutex->Event,
|
||||
WrExecutive,
|
||||
KernelMode,
|
||||
FALSE,
|
||||
|
@ -65,7 +65,7 @@ ExReleaseFastMutex(PFAST_MUTEX FastMutex)
|
|||
if (InterlockedIncrement(&FastMutex->Count) <= 0)
|
||||
{
|
||||
/* Someone was waiting for it, signal the waiter */
|
||||
KeSetEventBoostPriority(&FastMutex->Gate, IO_NO_INCREMENT);
|
||||
KeSetEventBoostPriority(&FastMutex->Event, IO_NO_INCREMENT);
|
||||
}
|
||||
|
||||
/* Lower IRQL back */
|
||||
|
|
|
@ -49,6 +49,12 @@ HaliQuerySystemInformation(IN HAL_QUERY_INFORMATION_CLASS InformationClass,
|
|||
REPORT_THIS_CASE(HalPartitionIpiInterface);
|
||||
REPORT_THIS_CASE(HalPlatformInformation);
|
||||
REPORT_THIS_CASE(HalQueryProfileSourceList);
|
||||
REPORT_THIS_CASE(HalInitLogInformation);
|
||||
REPORT_THIS_CASE(HalFrequencyInformation);
|
||||
REPORT_THIS_CASE(HalProcessorBrandString);
|
||||
REPORT_THIS_CASE(HalHypervisorInformation);
|
||||
REPORT_THIS_CASE(HalPlatformTimerInformation);
|
||||
REPORT_THIS_CASE(HalAcpiAuditInformation);
|
||||
}
|
||||
#undef REPORT_THIS_CASE
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<bootstrap installbase="$(CDOUTPUT)" />
|
||||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="_NTHALDLL_" />
|
||||
<define name="_NTHAL_" />
|
||||
<library>hal_generic</library>
|
||||
<library>hal_generic_up</library>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<module name="hal_generic" type="objectlibrary">
|
||||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="_NTHALDLL_" />
|
||||
<define name="_NTHAL_" />
|
||||
<directory name="generic">
|
||||
<directory name="bus">
|
||||
|
@ -38,8 +39,9 @@
|
|||
<module name="mini_hal" type="objectlibrary">
|
||||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="_NTHALDLL_" />
|
||||
<define name="_NTHAL_" />
|
||||
<define name="_NTSYSTEM_" />
|
||||
<define name="_BLDR_" />
|
||||
<define name="_MINIHAL_" />
|
||||
<directory name="generic">
|
||||
<directory name="bus">
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<module name="hal_generic_mp" type="objectlibrary">
|
||||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="_NTHALDLL_" />
|
||||
<define name="_NTHAL_" />
|
||||
<define name="CONFIG_SMP" />
|
||||
<directory name="mp">
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<module name="hal_generic_up" type="objectlibrary">
|
||||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="_NTHALDLL_" />
|
||||
<define name="_NTHAL_" />
|
||||
<directory name="generic">
|
||||
<file>pic.c</file>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="CONFIG_SMP" />
|
||||
<define name="_NTHALDLL_" />
|
||||
<define name="_NTHAL_" />
|
||||
<library>hal_generic</library>
|
||||
<library>hal_generic_mp</library>
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<importlibrary base="hal" definition="../hal.pspec" />
|
||||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<define name="_NTHALDLL_" />
|
||||
<define name="_NTHAL_" />
|
||||
<define name="SARCH_XBOX" />
|
||||
<library>hal_generic</library>
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#define PCI_ADDRESS_MEMORY_SPACE 0x00000000
|
||||
|
||||
//
|
||||
// Helper Macros
|
||||
//
|
||||
|
|
|
@ -14,14 +14,12 @@
|
|||
/* WDK HAL Compilation hack */
|
||||
#include <excpt.h>
|
||||
#include <ntdef.h>
|
||||
#undef _NTHAL_
|
||||
#undef DECLSPEC_IMPORT
|
||||
#define DECLSPEC_IMPORT
|
||||
#ifndef _MINIHAL_
|
||||
#undef NTSYSAPI
|
||||
#define NTSYSAPI __declspec(dllimport)
|
||||
#else
|
||||
#undef _NTSYSTEM_
|
||||
#undef NTSYSAPI
|
||||
#define NTSYSAPI
|
||||
#endif
|
||||
|
||||
/* IFS/DDK/NDK Headers */
|
||||
|
|
|
@ -135,6 +135,14 @@
|
|||
/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW. This will
|
||||
allow GCC to optimize away some EH unwind code, at least in DW2 case. */
|
||||
|
||||
#ifndef __MINGW_EXTENSION
|
||||
#if defined(__GNUC__) || defined(__GNUG__)
|
||||
#define __MINGW_EXTENSION __extension__
|
||||
#else
|
||||
#define __MINGW_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __MSVCRT_VERSION__
|
||||
/* High byte is the major version, low byte is the minor. */
|
||||
# define __MSVCRT_VERSION__ 0x0700
|
||||
|
|
|
@ -245,7 +245,7 @@ extern "C" {
|
|||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef unsigned int size_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
typedef unsigned __int64 size_t;
|
||||
__MINGW_EXTENSION typedef unsigned __int64 size_t;
|
||||
#endif
|
||||
#else
|
||||
typedef unsigned int size_t;
|
||||
|
@ -261,7 +261,7 @@ extern "C" {
|
|||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef int intptr_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
typedef __int64 intptr_t;
|
||||
__MINGW_EXTENSION typedef __int64 intptr_t;
|
||||
#endif
|
||||
#else
|
||||
typedef int intptr_t;
|
||||
|
@ -278,7 +278,7 @@ extern "C" {
|
|||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef unsigned int uintptr_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
typedef unsigned __int64 uintptr_t;
|
||||
__MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
|
||||
#endif
|
||||
#else
|
||||
typedef unsigned int uintptr_t;
|
||||
|
@ -294,7 +294,7 @@ extern "C" {
|
|||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef int ptrdiff_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
typedef __int64 ptrdiff_t;
|
||||
__MINGW_EXTENSION typedef __int64 ptrdiff_t;
|
||||
#endif
|
||||
#else
|
||||
typedef int ptrdiff_t;
|
||||
|
@ -329,7 +329,7 @@ extern "C" {
|
|||
#ifndef _TIME64_T_DEFINED
|
||||
#define _TIME64_T_DEFINED
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
typedef __int64 __time64_t;
|
||||
__MINGW_EXTENSION typedef __int64 __time64_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ typedef enum _EXCEPTION_DISPOSITION
|
|||
struct _CONTEXT;
|
||||
struct _DISPATCHER_CONTEXT;
|
||||
|
||||
_CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord,unsigned __int64 _MemoryStackFp,unsigned __int64 _BackingStoreFp,struct _CONTEXT *_ContextRecord,struct _DISPATCHER_CONTEXT *_DispatcherContext,unsigned __int64 _GlobalPointer);
|
||||
__MINGW_EXTENSION _CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord,unsigned __int64 _MemoryStackFp,unsigned __int64 _BackingStoreFp,struct _CONTEXT *_ContextRecord,struct _DISPATCHER_CONTEXT *_DispatcherContext,unsigned __int64 _GlobalPointer);
|
||||
#elif defined(__x86_64)
|
||||
|
||||
struct _EXCEPTION_RECORD;
|
||||
|
|
|
@ -49,7 +49,7 @@ extern "C" {
|
|||
typedef int _I32;
|
||||
typedef unsigned short _U16;
|
||||
typedef unsigned int _U32;
|
||||
typedef __int64 _Q64;
|
||||
__MINGW_EXTENSION typedef __int64 _Q64;
|
||||
|
||||
typedef struct
|
||||
#if defined(__ia64__)
|
||||
|
|
|
@ -51,7 +51,7 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
|
|||
time_t time_create;
|
||||
time_t time_access;
|
||||
time_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
char name[260];
|
||||
};
|
||||
|
||||
|
@ -60,7 +60,7 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
|
|||
__time32_t time_create;
|
||||
__time32_t time_access;
|
||||
__time32_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
char name[260];
|
||||
};
|
||||
|
||||
|
@ -78,7 +78,7 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
|
|||
__time64_t time_create;
|
||||
__time64_t time_access;
|
||||
__time64_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
char name[260];
|
||||
};
|
||||
#endif /* _INTEGRAL_MAX_BITS >= 64 */
|
||||
|
@ -113,7 +113,7 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
|
|||
time_t time_create;
|
||||
time_t time_access;
|
||||
time_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
wchar_t name[260];
|
||||
};
|
||||
|
||||
|
@ -122,7 +122,7 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
|
|||
__time32_t time_create;
|
||||
__time32_t time_access;
|
||||
__time32_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
wchar_t name[260];
|
||||
};
|
||||
|
||||
|
@ -140,7 +140,7 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
|
|||
__time64_t time_create;
|
||||
__time64_t time_access;
|
||||
__time64_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
wchar_t name[260];
|
||||
};
|
||||
#endif
|
||||
|
@ -200,15 +200,15 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
|
|||
_CRTIMP int __cdecl _write(int _FileHandle,const void *_Buf,unsigned int _MaxCharCount);
|
||||
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
_CRTIMP __int64 __cdecl _filelengthi64(int _FileHandle);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _filelengthi64(int _FileHandle);
|
||||
_CRTIMP intptr_t __cdecl _findfirst32i64(const char *_Filename,struct _finddata32i64_t *_FindData);
|
||||
_CRTIMP intptr_t __cdecl _findfirst64i32(const char *_Filename,struct _finddata64i32_t *_FindData);
|
||||
_CRTIMP intptr_t __cdecl _findfirst64(const char *_Filename,struct __finddata64_t *_FindData);
|
||||
_CRTIMP int __cdecl _findnext32i64(intptr_t _FindHandle,struct _finddata32i64_t *_FindData);
|
||||
_CRTIMP int __cdecl _findnext64i32(intptr_t _FindHandle,struct _finddata64i32_t *_FindData);
|
||||
_CRTIMP int __cdecl _findnext64(intptr_t _FindHandle,struct __finddata64_t *_FindData);
|
||||
_CRTIMP __int64 __cdecl _lseeki64(int _FileHandle,__int64 _Offset,int _Origin);
|
||||
_CRTIMP __int64 __cdecl _telli64(int _FileHandle);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _lseeki64(int _FileHandle,__int64 _Offset,int _Origin);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _telli64(int _FileHandle);
|
||||
#ifdef __cplusplus
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
|
|
@ -584,23 +584,23 @@ __CRT_INLINE int isinf (double d) {
|
|||
return retval;
|
||||
}
|
||||
|
||||
__CRT_INLINE long long __cdecl llrint (double x)
|
||||
__MINGW_EXTENSION __CRT_INLINE long long __cdecl llrint (double x)
|
||||
{
|
||||
long long retval;
|
||||
__MINGW_EXTENSION long long retval;
|
||||
__fistpll(x, retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
__CRT_INLINE long long __cdecl llrintf (float x)
|
||||
__MINGW_EXTENSION __CRT_INLINE long long __cdecl llrintf (float x)
|
||||
{
|
||||
long long retval;
|
||||
__MINGW_EXTENSION long long retval;
|
||||
__fistpll(x, retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
__CRT_INLINE long long __cdecl llrintl (long double x)
|
||||
__MINGW_EXTENSION __CRT_INLINE long long __cdecl llrintl (long double x)
|
||||
{
|
||||
long long retval;
|
||||
__MINGW_EXTENSION long long retval;
|
||||
__fistpll(x, retval);
|
||||
return retval;
|
||||
}
|
||||
|
@ -616,9 +616,9 @@ __CRT_INLINE int isinf (double d) {
|
|||
extern long __cdecl lroundf (float);
|
||||
extern long __cdecl lroundl (long double);
|
||||
|
||||
extern long long __cdecl llround (double);
|
||||
extern long long __cdecl llroundf (float);
|
||||
extern long long __cdecl llroundl (long double);
|
||||
__MINGW_EXTENSION extern long long __cdecl llround (double);
|
||||
__MINGW_EXTENSION extern long long __cdecl llroundf (float);
|
||||
__MINGW_EXTENSION extern long long __cdecl llroundl (long double);
|
||||
|
||||
/* 7.12.9.8 */
|
||||
/* round towards zero, regardless of fpu control word settings */
|
||||
|
|
|
@ -70,10 +70,10 @@ extern "C" {
|
|||
|
||||
char __fastcall _RTC_Check_2_to_1(short _Src);
|
||||
char __fastcall _RTC_Check_4_to_1(int _Src);
|
||||
char __fastcall _RTC_Check_8_to_1(__int64 _Src);
|
||||
__MINGW_EXTENSION char __fastcall _RTC_Check_8_to_1(__int64 _Src);
|
||||
short __fastcall _RTC_Check_4_to_2(int _Src);
|
||||
short __fastcall _RTC_Check_8_to_2(__int64 _Src);
|
||||
int __fastcall _RTC_Check_8_to_4(__int64 _Src);
|
||||
__MINGW_EXTENSION short __fastcall _RTC_Check_8_to_2(__int64 _Src);
|
||||
__MINGW_EXTENSION int __fastcall _RTC_Check_8_to_4(__int64 _Src);
|
||||
|
||||
#if (defined(_X86_) && !defined(__x86_64))
|
||||
void __cdecl _RTC_CheckEsp();
|
||||
|
|
|
@ -34,8 +34,8 @@ extern "C" {
|
|||
} _JUMP_BUFFER;
|
||||
#elif defined(__ia64__)
|
||||
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
||||
__int64 LowPart;
|
||||
__int64 HighPart;
|
||||
__MINGW_EXTENSION __int64 LowPart;
|
||||
__MINGW_EXTENSION __int64 HighPart;
|
||||
} SETJMP_FLOAT128;
|
||||
|
||||
#define _JBLEN 33
|
||||
|
@ -72,47 +72,47 @@ extern "C" {
|
|||
SETJMP_FLOAT128 FltS17;
|
||||
SETJMP_FLOAT128 FltS18;
|
||||
SETJMP_FLOAT128 FltS19;
|
||||
__int64 FPSR;
|
||||
__int64 StIIP;
|
||||
__int64 BrS0;
|
||||
__int64 BrS1;
|
||||
__int64 BrS2;
|
||||
__int64 BrS3;
|
||||
__int64 BrS4;
|
||||
__int64 IntS0;
|
||||
__int64 IntS1;
|
||||
__int64 IntS2;
|
||||
__int64 IntS3;
|
||||
__int64 RsBSP;
|
||||
__int64 RsPFS;
|
||||
__int64 ApUNAT;
|
||||
__int64 ApLC;
|
||||
__int64 IntSp;
|
||||
__int64 IntNats;
|
||||
__int64 Preds;
|
||||
__MINGW_EXTENSION __int64 FPSR;
|
||||
__MINGW_EXTENSION __int64 StIIP;
|
||||
__MINGW_EXTENSION __int64 BrS0;
|
||||
__MINGW_EXTENSION __int64 BrS1;
|
||||
__MINGW_EXTENSION __int64 BrS2;
|
||||
__MINGW_EXTENSION __int64 BrS3;
|
||||
__MINGW_EXTENSION __int64 BrS4;
|
||||
__MINGW_EXTENSION __int64 IntS0;
|
||||
__MINGW_EXTENSION __int64 IntS1;
|
||||
__MINGW_EXTENSION __int64 IntS2;
|
||||
__MINGW_EXTENSION __int64 IntS3;
|
||||
__MINGW_EXTENSION __int64 RsBSP;
|
||||
__MINGW_EXTENSION __int64 RsPFS;
|
||||
__MINGW_EXTENSION __int64 ApUNAT;
|
||||
__MINGW_EXTENSION __int64 ApLC;
|
||||
__MINGW_EXTENSION __int64 IntSp;
|
||||
__MINGW_EXTENSION __int64 IntNats;
|
||||
__MINGW_EXTENSION __int64 Preds;
|
||||
|
||||
} _JUMP_BUFFER;
|
||||
#elif defined(__x86_64)
|
||||
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
||||
unsigned __int64 Part[2];
|
||||
__MINGW_EXTENSION unsigned __int64 Part[2];
|
||||
} SETJMP_FLOAT128;
|
||||
|
||||
#define _JBLEN 16
|
||||
typedef SETJMP_FLOAT128 _JBTYPE;
|
||||
|
||||
typedef struct _JUMP_BUFFER {
|
||||
unsigned __int64 Frame;
|
||||
unsigned __int64 Rbx;
|
||||
unsigned __int64 Rsp;
|
||||
unsigned __int64 Rbp;
|
||||
unsigned __int64 Rsi;
|
||||
unsigned __int64 Rdi;
|
||||
unsigned __int64 R12;
|
||||
unsigned __int64 R13;
|
||||
unsigned __int64 R14;
|
||||
unsigned __int64 R15;
|
||||
unsigned __int64 Rip;
|
||||
unsigned __int64 Spare;
|
||||
__MINGW_EXTENSION unsigned __int64 Frame;
|
||||
__MINGW_EXTENSION unsigned __int64 Rbx;
|
||||
__MINGW_EXTENSION unsigned __int64 Rsp;
|
||||
__MINGW_EXTENSION unsigned __int64 Rbp;
|
||||
__MINGW_EXTENSION unsigned __int64 Rsi;
|
||||
__MINGW_EXTENSION unsigned __int64 Rdi;
|
||||
__MINGW_EXTENSION unsigned __int64 R12;
|
||||
__MINGW_EXTENSION unsigned __int64 R13;
|
||||
__MINGW_EXTENSION unsigned __int64 R14;
|
||||
__MINGW_EXTENSION unsigned __int64 R15;
|
||||
__MINGW_EXTENSION unsigned __int64 Rip;
|
||||
__MINGW_EXTENSION unsigned __int64 Spare;
|
||||
SETJMP_FLOAT128 Xmm6;
|
||||
SETJMP_FLOAT128 Xmm7;
|
||||
SETJMP_FLOAT128 Xmm8;
|
||||
|
|
|
@ -148,7 +148,7 @@ _TYPE_wchar_t;
|
|||
#endif
|
||||
#ifndef _PTRDIFF_T_DEFINED
|
||||
#define _PTRDIFF_T_DEFINED
|
||||
typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
||||
__MINGW_EXTENSION typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
||||
#endif
|
||||
#endif /* _GCC_PTRDIFF_T */
|
||||
#endif /* ___int_ptrdiff_t_h */
|
||||
|
@ -215,7 +215,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
|||
#endif
|
||||
#endif
|
||||
#if !(defined (__GNUG__) && defined (size_t))
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
__MINGW_EXTENSION typedef __SIZE_TYPE__ size_t;
|
||||
#ifdef __BEOS__
|
||||
typedef long ssize_t;
|
||||
#endif /* __BEOS__ */
|
||||
|
|
|
@ -38,8 +38,8 @@ typedef short int16_t;
|
|||
typedef unsigned short uint16_t;
|
||||
typedef int int32_t;
|
||||
typedef unsigned uint32_t;
|
||||
typedef long long int64_t;
|
||||
typedef unsigned long long uint64_t;
|
||||
__MINGW_EXTENSION typedef long long int64_t;
|
||||
__MINGW_EXTENSION typedef unsigned long long uint64_t;
|
||||
|
||||
/* 7.18.1.2 Minimum-width integer types */
|
||||
typedef signed char int_least8_t;
|
||||
|
@ -48,8 +48,8 @@ typedef short int_least16_t;
|
|||
typedef unsigned short uint_least16_t;
|
||||
typedef int int_least32_t;
|
||||
typedef unsigned uint_least32_t;
|
||||
typedef long long int_least64_t;
|
||||
typedef unsigned long long uint_least64_t;
|
||||
__MINGW_EXTENSION typedef long long int_least64_t;
|
||||
__MINGW_EXTENSION typedef unsigned long long uint_least64_t;
|
||||
|
||||
/* 7.18.1.3 Fastest minimum-width integer types
|
||||
* Not actually guaranteed to be fastest for all purposes
|
||||
|
@ -61,12 +61,12 @@ typedef short int_fast16_t;
|
|||
typedef unsigned short uint_fast16_t;
|
||||
typedef int int_fast32_t;
|
||||
typedef unsigned int uint_fast32_t;
|
||||
typedef long long int_fast64_t;
|
||||
typedef unsigned long long uint_fast64_t;
|
||||
__MINGW_EXTENSION typedef long long int_fast64_t;
|
||||
__MINGW_EXTENSION typedef unsigned long long uint_fast64_t;
|
||||
|
||||
/* 7.18.1.5 Greatest-width integer types */
|
||||
typedef long long intmax_t;
|
||||
typedef unsigned long long uintmax_t;
|
||||
__MINGW_EXTENSION typedef long long intmax_t;
|
||||
__MINGW_EXTENSION typedef unsigned long long uintmax_t;
|
||||
|
||||
/* 7.18.2 Limits of specified-width integer types */
|
||||
#if !defined ( __cplusplus) || defined (__STDC_LIMIT_MACROS)
|
||||
|
|
|
@ -87,9 +87,9 @@ extern "C" {
|
|||
|
||||
#ifndef _OFF64_T_DEFINED
|
||||
#define _OFF64_T_DEFINED
|
||||
typedef long long _off64_t;
|
||||
__MINGW_EXTENSION typedef long long _off64_t;
|
||||
#if !defined(NO_OLDNAMES) || defined(_POSIX)
|
||||
typedef long long off64_t;
|
||||
__MINGW_EXTENSION typedef long long off64_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -106,10 +106,10 @@ extern "C" {
|
|||
#undef _FPOSOFF
|
||||
|
||||
#if (!defined(NO_OLDNAMES) || defined(__GNUC__)) && _INTEGRAL_MAX_BITS >= 64
|
||||
typedef __int64 fpos_t;
|
||||
__MINGW_EXTENSION typedef __int64 fpos_t;
|
||||
#define _FPOSOFF(fp) ((long)(fp))
|
||||
#else
|
||||
typedef long long fpos_t;
|
||||
__MINGW_EXTENSION typedef long long fpos_t;
|
||||
#define _FPOSOFF(fp) ((long)(fp))
|
||||
#endif
|
||||
|
||||
|
@ -179,8 +179,8 @@ extern "C" {
|
|||
_CRTIMP int __cdecl fsetpos(FILE *_File,const fpos_t *_Pos);
|
||||
_CRTIMP int __cdecl fseek(FILE *_File,long _Offset,int _Origin);
|
||||
_CRTIMP long __cdecl ftell(FILE *_File);
|
||||
_CRTIMP int __cdecl _fseeki64(FILE *_File,__int64 _Offset,int _Origin);
|
||||
_CRTIMP __int64 __cdecl _ftelli64(FILE *_File);
|
||||
__MINGW_EXTENSION _CRTIMP int __cdecl _fseeki64(FILE *_File,__int64 _Offset,int _Origin);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _ftelli64(FILE *_File);
|
||||
_CRTIMP size_t __cdecl fwrite(const void *_Str,size_t _Size,size_t _Count,FILE *_File);
|
||||
_CRTIMP int __cdecl getc(FILE *_File);
|
||||
_CRTIMP int __cdecl getchar(void);
|
||||
|
@ -381,8 +381,8 @@ extern "C" {
|
|||
_CRTIMP size_t __cdecl _fread_nolock(void *_DstBuf,size_t _ElementSize,size_t _Count,FILE *_File);
|
||||
_CRTIMP int __cdecl _fseek_nolock(FILE *_File,long _Offset,int _Origin);
|
||||
_CRTIMP long __cdecl _ftell_nolock(FILE *_File);
|
||||
_CRTIMP int __cdecl _fseeki64_nolock(FILE *_File,__int64 _Offset,int _Origin);
|
||||
_CRTIMP __int64 __cdecl _ftelli64_nolock(FILE *_File);
|
||||
__MINGW_EXTENSION _CRTIMP int __cdecl _fseeki64_nolock(FILE *_File,__int64 _Offset,int _Origin);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _ftelli64_nolock(FILE *_File);
|
||||
_CRTIMP size_t __cdecl _fwrite_nolock(const void *_DstBuf,size_t _Size,size_t _Count,FILE *_File);
|
||||
_CRTIMP int __cdecl _ungetc_nolock(int _Ch,FILE *_File);
|
||||
|
||||
|
|
|
@ -328,7 +328,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
__int64 __cdecl _abs64(__int64);
|
||||
__MINGW_EXTENSION __int64 __cdecl _abs64(__int64);
|
||||
#endif
|
||||
int __cdecl atexit(void (__cdecl *)(void));
|
||||
#ifndef _CRT_ATOF_DEFINED
|
||||
|
@ -348,20 +348,20 @@ extern "C" {
|
|||
unsigned short __cdecl _byteswap_ushort(unsigned short _Short);
|
||||
/*unsigned long __cdecl _byteswap_ulong (unsigned long _Long); */
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 _Int64);
|
||||
__MINGW_EXTENSION unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 _Int64);
|
||||
#endif
|
||||
div_t __cdecl div(int _Numerator,int _Denominator);
|
||||
char *__cdecl getenv(const char *_VarName);
|
||||
_CRTIMP char *__cdecl _itoa(int _Value,char *_Dest,int _Radix);
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
_CRTIMP char *__cdecl _i64toa(__int64 _Val,char *_DstBuf,int _Radix);
|
||||
_CRTIMP char *__cdecl _ui64toa(unsigned __int64 _Val,char *_DstBuf,int _Radix);
|
||||
_CRTIMP __int64 __cdecl _atoi64(const char *_String);
|
||||
_CRTIMP __int64 __cdecl _atoi64_l(const char *_String,_locale_t _Locale);
|
||||
_CRTIMP __int64 __cdecl _strtoi64(const char *_String,char **_EndPtr,int _Radix);
|
||||
_CRTIMP __int64 __cdecl _strtoi64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
_CRTIMP unsigned __int64 __cdecl _strtoui64(const char *_String,char **_EndPtr,int _Radix);
|
||||
_CRTIMP unsigned __int64 __cdecl _strtoui64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP char *__cdecl _i64toa(__int64 _Val,char *_DstBuf,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP char *__cdecl _ui64toa(unsigned __int64 _Val,char *_DstBuf,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _atoi64(const char *_String);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _atoi64_l(const char *_String,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _strtoi64(const char *_String,char **_EndPtr,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _strtoi64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _strtoui64(const char *_String,char **_EndPtr,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _strtoui64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
#endif
|
||||
ldiv_t __cdecl ldiv(long _Numerator,long _Denominator);
|
||||
_CRTIMP char *__cdecl _ltoa(long _Value,char *_Dest,int _Radix);
|
||||
|
@ -445,14 +445,14 @@ extern "C" {
|
|||
_CRTIMP long __cdecl _wtol_l(const wchar_t *_Str,_locale_t _Locale);
|
||||
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
_CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
_CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
_CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str);
|
||||
_CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
|
||||
_CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
_CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
_CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
_CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str ,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str ,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -480,11 +480,11 @@ extern "C" {
|
|||
_CRTIMP int __cdecl _putenv(const char *_EnvString);
|
||||
unsigned int __cdecl _rotl(unsigned int _Val,int _Shift);
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
unsigned __int64 __cdecl _rotl64(unsigned __int64 _Val,int _Shift);
|
||||
__MINGW_EXTENSION unsigned __int64 __cdecl _rotl64(unsigned __int64 _Val,int _Shift);
|
||||
#endif
|
||||
unsigned int __cdecl _rotr(unsigned int _Val,int _Shift);
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
unsigned __int64 __cdecl _rotr64(unsigned __int64 _Val,int _Shift);
|
||||
__MINGW_EXTENSION unsigned __int64 __cdecl _rotr64(unsigned __int64 _Val,int _Shift);
|
||||
#endif
|
||||
_CRTIMP void __cdecl _searchenv(const char *_Filename,const char *_EnvVar,char *_ResultPath);
|
||||
_CRTIMP void __cdecl _splitpath(const char *_FullPath,char *_Drive,char *_Dir,char *_Filename,char *_Ext);
|
||||
|
@ -541,32 +541,32 @@ extern "C" {
|
|||
|
||||
#if !defined __NO_ISOCEXT /* externs in static libmingwex.a */
|
||||
|
||||
typedef struct { long long quot, rem; } lldiv_t;
|
||||
__MINGW_EXTENSION typedef struct { long long quot, rem; } lldiv_t;
|
||||
|
||||
lldiv_t __cdecl lldiv(long long, long long);
|
||||
__MINGW_EXTENSION lldiv_t __cdecl lldiv(long long, long long);
|
||||
|
||||
__CRT_INLINE long long __cdecl llabs(long long _j) { return (_j >= 0 ? _j : -_j); }
|
||||
__MINGW_EXTENSION __CRT_INLINE long long __cdecl llabs(long long _j) { return (_j >= 0 ? _j : -_j); }
|
||||
|
||||
long long __cdecl strtoll(const char* __restrict__, char** __restrict, int);
|
||||
unsigned long long __cdecl strtoull(const char* __restrict__, char** __restrict__, int);
|
||||
__MINGW_EXTENSION long long __cdecl strtoll(const char* __restrict__, char** __restrict, int);
|
||||
__MINGW_EXTENSION unsigned long long __cdecl strtoull(const char* __restrict__, char** __restrict__, int);
|
||||
|
||||
/* these are stubs for MS _i64 versions */
|
||||
long long __cdecl atoll (const char *);
|
||||
__MINGW_EXTENSION long long __cdecl atoll (const char *);
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
long long __cdecl wtoll (const wchar_t *);
|
||||
char *__cdecl lltoa (long long, char *, int);
|
||||
char *__cdecl ulltoa (unsigned long long , char *, int);
|
||||
wchar_t *__cdecl lltow (long long, wchar_t *, int);
|
||||
wchar_t *__cdecl ulltow (unsigned long long, wchar_t *, int);
|
||||
__MINGW_EXTENSION long long __cdecl wtoll (const wchar_t *);
|
||||
__MINGW_EXTENSION char *__cdecl lltoa (long long, char *, int);
|
||||
__MINGW_EXTENSION char *__cdecl ulltoa (unsigned long long , char *, int);
|
||||
__MINGW_EXTENSION wchar_t *__cdecl lltow (long long, wchar_t *, int);
|
||||
__MINGW_EXTENSION wchar_t *__cdecl ulltow (unsigned long long, wchar_t *, int);
|
||||
|
||||
/* __CRT_INLINE using non-ansi functions */
|
||||
__CRT_INLINE long long __cdecl atoll (const char * _c) { return _atoi64 (_c); }
|
||||
__CRT_INLINE char *__cdecl lltoa (long long _n, char * _c, int _i) { return _i64toa (_n, _c, _i); }
|
||||
__CRT_INLINE char *__cdecl ulltoa (unsigned long long _n, char * _c, int _i) { return _ui64toa (_n, _c, _i); }
|
||||
__CRT_INLINE long long __cdecl wtoll (const wchar_t * _w) { return _wtoi64 (_w); }
|
||||
__CRT_INLINE wchar_t *__cdecl lltow (long long _n, wchar_t * _w, int _i) { return _i64tow (_n, _w, _i); }
|
||||
__CRT_INLINE wchar_t *__cdecl ulltow (unsigned long long _n, wchar_t * _w, int _i) { return _ui64tow (_n, _w, _i); }
|
||||
__MINGW_EXTENSION __CRT_INLINE long long __cdecl atoll (const char * _c) { return _atoi64 (_c); }
|
||||
__MINGW_EXTENSION __CRT_INLINE char *__cdecl lltoa (long long _n, char * _c, int _i) { return _i64toa (_n, _c, _i); }
|
||||
__MINGW_EXTENSION __CRT_INLINE char *__cdecl ulltoa (unsigned long long _n, char * _c, int _i) { return _ui64toa (_n, _c, _i); }
|
||||
__MINGW_EXTENSION __CRT_INLINE long long __cdecl wtoll (const wchar_t * _w) { return _wtoi64 (_w); }
|
||||
__MINGW_EXTENSION __CRT_INLINE wchar_t *__cdecl lltow (long long _n, wchar_t * _w, int _i) { return _i64tow (_n, _w, _i); }
|
||||
__MINGW_EXTENSION __CRT_INLINE wchar_t *__cdecl ulltow (unsigned long long _n, wchar_t * _w, int _i) { return _ui64tow (_n, _w, _i); }
|
||||
#endif /* (__STRICT_ANSI__) */
|
||||
|
||||
#endif /* !__NO_ISOCEXT */
|
||||
|
|
|
@ -108,10 +108,11 @@ extern "C" {
|
|||
typedef wint_t _TINT;
|
||||
#endif
|
||||
|
||||
#ifndef NO_OLDNAMES
|
||||
#ifndef _TCHAR_DEFINED
|
||||
#define _TCHAR_DEFINED
|
||||
#ifndef NO_OLDNAMES
|
||||
typedef wchar_t TCHAR;
|
||||
typedef wchar_t TCHAR,*PTCHAR;
|
||||
typedef wchar_t TBYTE,*PTBYTE;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -773,11 +774,12 @@ extern "C" {
|
|||
#define __TCHAR_DEFINED
|
||||
#endif
|
||||
|
||||
#ifndef NO_OLDNAMES
|
||||
#ifndef _TCHAR_DEFINED
|
||||
#ifndef NO_OLDNAMES
|
||||
typedef char TCHAR;
|
||||
#endif
|
||||
#define _TCHAR_DEFINED
|
||||
typedef char TCHAR,*PTCHAR;
|
||||
typedef unsigned char TBYTE,*PTBYTE;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _MB_MAP_DIRECT
|
||||
|
|
|
@ -29,7 +29,7 @@ extern "C" {
|
|||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef int _time64_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
typedef __int64 __time64_t;
|
||||
__MINGW_EXTENSION typedef __int64 __time64_t;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -55,7 +55,7 @@ extern "C" {
|
|||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef unsigned int size_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
typedef unsigned __int64 size_t;
|
||||
__MINGW_EXTENSION typedef unsigned __int64 size_t;
|
||||
#endif
|
||||
#else
|
||||
typedef unsigned int size_t;
|
||||
|
|
|
@ -29,7 +29,7 @@ extern "C" {
|
|||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef unsigned int uintptr_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
typedef unsigned __int64 uintptr_t;
|
||||
__MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
|
||||
#endif
|
||||
#else
|
||||
typedef unsigned long uintptr_t;
|
||||
|
|
|
@ -93,7 +93,7 @@ extern "C" {
|
|||
time_t time_create;
|
||||
time_t time_access;
|
||||
time_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
wchar_t name[260];
|
||||
};
|
||||
|
||||
|
@ -102,7 +102,7 @@ extern "C" {
|
|||
__time32_t time_create;
|
||||
__time32_t time_access;
|
||||
__time32_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
wchar_t name[260];
|
||||
};
|
||||
|
||||
|
@ -120,7 +120,7 @@ extern "C" {
|
|||
__time64_t time_create;
|
||||
__time64_t time_access;
|
||||
__time64_t time_write;
|
||||
__int64 size;
|
||||
__MINGW_EXTENSION __int64 size;
|
||||
wchar_t name[260];
|
||||
};
|
||||
#endif
|
||||
|
@ -352,9 +352,9 @@ _CRTIMP int __cdecl iswblank(wint_t _C);
|
|||
|
||||
#ifndef _OFF64_T_DEFINED
|
||||
#define _OFF64_T_DEFINED
|
||||
typedef long long _off64_t;
|
||||
__MINGW_EXTENSION typedef long long _off64_t;
|
||||
#ifndef NO_OLDNAMES
|
||||
typedef long long off64_t;
|
||||
__MINGW_EXTENSION typedef long long off64_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -415,7 +415,7 @@ _CRTIMP int __cdecl iswblank(wint_t _C);
|
|||
short st_uid;
|
||||
short st_gid;
|
||||
_dev_t st_rdev;
|
||||
__int64 st_size;
|
||||
__MINGW_EXTENSION __int64 st_size;
|
||||
__time32_t st_atime;
|
||||
__time32_t st_mtime;
|
||||
__time32_t st_ctime;
|
||||
|
@ -443,7 +443,7 @@ _CRTIMP int __cdecl iswblank(wint_t _C);
|
|||
short st_uid;
|
||||
short st_gid;
|
||||
_dev_t st_rdev;
|
||||
__int64 st_size;
|
||||
__MINGW_EXTENSION __int64 st_size;
|
||||
__time64_t st_atime;
|
||||
__time64_t st_mtime;
|
||||
__time64_t st_ctime;
|
||||
|
@ -645,14 +645,14 @@ _CRTIMP int __cdecl iswblank(wint_t _C);
|
|||
_CRTIMP long __cdecl _wtol_l(const wchar_t *_Str,_locale_t _Locale);
|
||||
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
_CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
_CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
_CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str);
|
||||
_CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
|
||||
_CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
_CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
_CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
_CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
__MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
|
||||
__MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -782,8 +782,8 @@ __CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime64(_T
|
|||
int wmemcmp(const wchar_t *s1, const wchar_t *s2,size_t n);
|
||||
wchar_t *__cdecl wmemcpy(wchar_t *s1,const wchar_t *s2,size_t n);
|
||||
wchar_t *__cdecl wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);
|
||||
long long __cdecl wcstoll(const wchar_t *nptr,wchar_t **endptr, int base);
|
||||
unsigned long long __cdecl wcstoull(const wchar_t *nptr,wchar_t **endptr, int base);
|
||||
__MINGW_EXTENSION long long __cdecl wcstoll(const wchar_t *nptr,wchar_t **endptr, int base);
|
||||
__MINGW_EXTENSION unsigned long long __cdecl wcstoull(const wchar_t *nptr,wchar_t **endptr, int base);
|
||||
#endif /* __NO_ISOCEXT */
|
||||
|
||||
void *__cdecl memmove(void *_Dst,const void *_Src,size_t _MaxCount);
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
||||
*/
|
||||
#ifndef _YVALS
|
||||
#define _YVALS
|
||||
|
||||
#include <_mingw.h>
|
||||
/* TODO, don't include crtdef.h. */
|
||||
#include <crtdefs.h>
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
@ -168,10 +170,10 @@ typedef bool _Bool;
|
|||
_STD_END
|
||||
#endif
|
||||
|
||||
#define _LONGLONG __int64
|
||||
#define _ULONGLONG unsigned __int64
|
||||
#define _LLONG_MAX 0x7fffffffffffffff
|
||||
#define _ULLONG_MAX 0xffffffffffffffff
|
||||
#define _LONGLONG /* __MINGW_EXTENSION */ __int64
|
||||
#define _ULONGLONG /* __MINGW_EXTENSION */ unsigned __int64
|
||||
#define _LLONG_MAX 0x7fffffffffffffffLL
|
||||
#define _ULLONG_MAX 0xffffffffffffffffULL
|
||||
|
||||
#define _C2 1
|
||||
|
||||
|
@ -179,8 +181,8 @@ _STD_END
|
|||
#define _MAX_INT_DIG 32
|
||||
#define _MAX_SIG_DIG 36
|
||||
|
||||
typedef _LONGLONG _Longlong;
|
||||
typedef _ULONGLONG _ULonglong;
|
||||
__MINGW_EXTENSION typedef _LONGLONG _Longlong;
|
||||
__MINGW_EXTENSION typedef _ULONGLONG _ULonglong;
|
||||
|
||||
#define _Filet _iobuf
|
||||
|
||||
|
|
|
@ -2,6 +2,15 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define STDMETHODCALLTYPE __stdcall
|
||||
typedef GUID *PGUID;
|
||||
|
||||
|
@ -30,7 +39,7 @@ typedef struct _BDA_FILTER_TEMPLATE
|
|||
typedef struct _KSM_PIN
|
||||
{
|
||||
KSMETHOD Method;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
ULONG PinId;
|
||||
ULONG PinType;
|
||||
|
|
|
@ -22,6 +22,15 @@
|
|||
#ifndef _D3DHAL_H_
|
||||
#define _D3DHAL_H_
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -787,7 +796,7 @@ typedef struct _DD_GETD3DQUERYCOUNTDATA
|
|||
typedef struct _DD_GETD3DQUERYDATA
|
||||
{
|
||||
DD_GETDRIVERINFO2DATA gdi2;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DWORD dwQueryIndex;
|
||||
D3DQUERYTYPE QueryType;
|
||||
|
|
|
@ -9,6 +9,15 @@
|
|||
#include <d3dtypes.h>
|
||||
#include <d3dcaps.h>
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -22,17 +31,17 @@ DEFINE_GUID(GUID_DDStereoMode, 0xF828169C, 0xA8E8, 0x11D2, 0xA
|
|||
|
||||
typedef struct _D3DNTHAL_CONTEXTCREATEDATA
|
||||
{
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
PDD_DIRECTDRAW_GLOBAL lpDDGbl;
|
||||
PDD_DIRECTDRAW_LOCAL lpDDLcl;
|
||||
};
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
PDD_SURFACE_LOCAL lpDDS;
|
||||
PDD_SURFACE_LOCAL lpDDSLcl;
|
||||
};
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
PDD_SURFACE_LOCAL lpDDSZ;
|
||||
PDD_SURFACE_LOCAL lpDDSZLcl;
|
||||
|
@ -223,7 +232,7 @@ typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA
|
|||
PDD_SURFACE_LOCAL lpDDCommands;
|
||||
DWORD dwCommandOffset;
|
||||
DWORD dwCommandLength;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
PDD_SURFACE_LOCAL lpDDVertex;
|
||||
LPVOID lpVertices;
|
||||
|
@ -233,7 +242,7 @@ typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA
|
|||
DWORD dwReqVertexBufSize;
|
||||
DWORD dwReqCommandBufSize;
|
||||
LPDWORD lpdwRStates;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DWORD dwVertexSize;
|
||||
HRESULT ddrval;
|
||||
|
|
|
@ -21,6 +21,14 @@
|
|||
#ifndef __DDKMAPI_INCLUDED__
|
||||
#define __DDKMAPI_INCLUDED__
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(_DXAPI_)
|
||||
#define DXAPI
|
||||
|
@ -219,17 +227,17 @@ typedef struct _DDLOCKOUT
|
|||
DWORD dwFormatFlags;
|
||||
DWORD dwFormatFourCC;
|
||||
DWORD dwFormatBitCount;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DWORD dwRBitMask;
|
||||
DWORD dwYBitMask;
|
||||
};
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DWORD dwGBitMask;
|
||||
DWORD dwUBitMask;
|
||||
};
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DWORD dwBBitMask;
|
||||
DWORD dwVBitMask;
|
||||
|
|
|
@ -22,6 +22,15 @@
|
|||
#ifndef __DDRAWI_INCLUDED__
|
||||
#define __DDRAWI_INCLUDED__
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -203,13 +212,13 @@ typedef struct _DDHALMODEINFO {
|
|||
typedef struct _VIDMEM {
|
||||
DWORD dwFlags;
|
||||
FLATPTR fpStart;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
FLATPTR fpEnd;
|
||||
DWORD dwWidth;
|
||||
};
|
||||
DDSCAPS ddsCaps;
|
||||
DDSCAPS ddsCapsAlt;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
LPVMEMHEAP lpHeap;
|
||||
DWORD dwHeight;
|
||||
};
|
||||
|
@ -1404,21 +1413,21 @@ typedef struct _DDRAWI_DDRAWSURFACE_INT {
|
|||
typedef struct _DDRAWI_DDRAWSURFACE_GBL {
|
||||
DWORD dwRefCnt;
|
||||
DWORD dwGlobalFlags;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
LPACCESSRECTLIST lpRectList;
|
||||
DWORD dwBlockSizeY;
|
||||
LONG lSlicePitch;
|
||||
};
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
LPVMEMHEAP lpVidMemHeap;
|
||||
DWORD dwBlockSizeX;
|
||||
};
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
LPDDRAWI_DIRECTDRAW_GBL lpDD;
|
||||
LPVOID lpDDHandle;
|
||||
};
|
||||
FLATPTR fpVidMem;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
LONG lPitch;
|
||||
DWORD dwLinearSize;
|
||||
};
|
||||
|
@ -1454,7 +1463,7 @@ typedef struct _DDRAWI_DDRAWSURFACE_GBL {
|
|||
|
||||
typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
|
||||
DWORD dwSize;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
DWORD dwPhysicalPageTable;
|
||||
FLATPTR fpPhysicalVidMem;
|
||||
};
|
||||
|
@ -1551,15 +1560,15 @@ typedef struct _DDRAWI_DDRAWSURFACE_LCL {
|
|||
DWORD dwProcessId;
|
||||
DWORD dwFlags;
|
||||
DDSCAPS ddsCaps;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
LPDDRAWI_DDRAWPALETTE_INT lpDDPalette;
|
||||
LPDDRAWI_DDRAWPALETTE_INT lpDDPalette;
|
||||
LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette;
|
||||
};
|
||||
union
|
||||
};
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper;
|
||||
LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper;
|
||||
LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper;
|
||||
LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper;
|
||||
};
|
||||
DWORD dwModeCreatedIn;
|
||||
DWORD dwBackBufferCount;
|
||||
|
@ -1628,7 +1637,7 @@ typedef struct _DDRAWI_DDRAWPALETTE_GBL {
|
|||
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
|
||||
DWORD dwProcessId;
|
||||
LPPALETTEENTRY lpColorTable;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
ULONG_PTR dwReserved1;
|
||||
HPALETTE hHELGDIPalette;
|
||||
};
|
||||
|
@ -1762,7 +1771,7 @@ typedef struct _DDMCBUFFERINFO
|
|||
|
||||
typedef struct _DDHAL_GETDRIVERSTATEDATA {
|
||||
DWORD dwFlags;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
ULONG_PTR dwhContext;
|
||||
};
|
||||
|
|
|
@ -5,6 +5,14 @@
|
|||
#ifndef __DD_INCLUDED__
|
||||
#define __DD_INCLUDED__
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
DEFINE_GUID( GUID_MiscellaneousCallbacks, 0xEFD60CC0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a);
|
||||
DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
|
||||
|
@ -81,14 +89,14 @@ typedef struct _VIDEOMEMORY
|
|||
{
|
||||
DWORD dwFlags;
|
||||
FLATPTR fpStart;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
FLATPTR fpEnd;
|
||||
DWORD dwWidth;
|
||||
};
|
||||
DDSCAPS ddsCaps;
|
||||
DDSCAPS ddsCapsAlt;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
struct _VMEMHEAP *lpHeap;
|
||||
DWORD dwHeight;
|
||||
|
@ -128,13 +136,13 @@ typedef struct _DD_DIRECTDRAW_LOCAL
|
|||
|
||||
typedef struct _DD_SURFACE_GLOBAL
|
||||
{
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DWORD dwBlockSizeY;
|
||||
LONG lSlicePitch;
|
||||
};
|
||||
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
PVIDEOMEMORY lpVidMemHeap;
|
||||
DWORD dwBlockSizeX;
|
||||
|
@ -142,7 +150,7 @@ typedef struct _DD_SURFACE_GLOBAL
|
|||
};
|
||||
|
||||
FLATPTR fpVidMem;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
LONG lPitch;
|
||||
DWORD dwLinearSize;
|
||||
|
@ -174,12 +182,12 @@ typedef struct _DD_SURFACE_LOCAL
|
|||
DWORD dwFlags;
|
||||
DDSCAPS ddsCaps;
|
||||
ULONG_PTR dwReserved1;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DDCOLORKEY ddckCKSrcOverlay;
|
||||
DDCOLORKEY ddckCKSrcBlt;
|
||||
};
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
DDCOLORKEY ddckCKDestOverlay;
|
||||
DDCOLORKEY ddckCKDestBlt;
|
||||
|
@ -591,7 +599,7 @@ typedef DWORD (WINAPI *PDD_CREATESURFACEEX)(PDD_CREATESURFACEEXDATA);
|
|||
typedef struct _DD_GETDRIVERSTATEDATA
|
||||
{
|
||||
DWORD dwFlags;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
PDD_DIRECTDRAW_GLOBAL lpDD;
|
||||
DWORD_PTR dwhContext;
|
||||
|
|
|
@ -12,6 +12,15 @@
|
|||
#ifndef __DMEMMGR_INCLUDED__
|
||||
#define __DMEMMGR_INCLUDED__
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -70,7 +79,7 @@ typedef struct _VMEMR
|
|||
|
||||
typedef struct _SURFACEALIGNMENT
|
||||
{
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
struct
|
||||
{
|
||||
|
|
782
reactos/include/ddk/hubbusif.h
Normal file
782
reactos/include/ddk/hubbusif.h
Normal file
|
@ -0,0 +1,782 @@
|
|||
#pragma once
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
|
||||
typedef PVOID PUSB_DEVICE_HANDLE;
|
||||
|
||||
typedef struct _ROOTHUB_PDO_EXTENSION {
|
||||
ULONG Signature;
|
||||
} ROOTHUB_PDO_EXTENSION, *PROOTHUB_PDO_EXTENSION;
|
||||
|
||||
#define USBD_DEVHACK_SLOW_ENUMERATION 0x00000001
|
||||
#define USBD_DEVHACK_DISABLE_SN 0x00000002
|
||||
#define USBD_DEVHACK_SET_DIAG_ID 0x00000004
|
||||
|
||||
#ifndef USB_BUSIFFN
|
||||
#define USB_BUSIFFN __stdcall
|
||||
#endif
|
||||
|
||||
#define CD_ERR_V1 0x00000001
|
||||
|
||||
#define ID_ERR_V1 0x00000001
|
||||
|
||||
#define USBD_KEEP_DEVICE_DATA 0x00000001
|
||||
#define USBD_MARK_DEVICE_BUSY 0x00000002
|
||||
|
||||
#define USB_IDLE_NOT_READY 0
|
||||
#define USB_IDLE_READY 1
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CREATE_USB_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
OUT PUSB_DEVICE_HANDLE *NewDeviceHandle,
|
||||
IN PUSB_DEVICE_HANDLE HubDeviceHandle,
|
||||
IN USHORT PortStatus,
|
||||
IN USHORT PortNumber);
|
||||
|
||||
typedef USB_BUSIFFN_CREATE_USB_DEVICE *PUSB_BUSIFFN_CREATE_USB_DEVICE;
|
||||
|
||||
typedef enum _USBPORT_CREATEDEV_ERROR {
|
||||
CreateDevErrNotSet = 0,
|
||||
CreateDevBadHubDevHandle,
|
||||
CreateDevFailedAllocDevHandle,
|
||||
CreateDevFailedOpenEndpoint,
|
||||
CreateDevFailedAllocDsBuff,
|
||||
CreateDevFailedGetDs,
|
||||
CreateDevTtNotFound,
|
||||
CreateDevBadDevHandlePtr
|
||||
} USBPORT_CREATEDEV_ERROR;
|
||||
|
||||
typedef struct _USB_CD_ERROR_INFORMATION {
|
||||
ULONG Version;
|
||||
USBPORT_CREATEDEV_ERROR PathError;
|
||||
ULONG UlongArg1;
|
||||
ULONG UlongArg2;
|
||||
NTSTATUS NtStatus;
|
||||
UCHAR XtraInfo[64];
|
||||
} USB_CD_ERROR_INFORMATION, *PUSB_CD_ERROR_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CREATE_USB_DEVICE_EX (
|
||||
IN PVOID BusContext,
|
||||
OUT PUSB_DEVICE_HANDLE *NewDeviceHandle,
|
||||
IN PUSB_DEVICE_HANDLE HsHubDeviceHandle,
|
||||
IN USHORT PortStatus,
|
||||
IN USHORT PortNumber,
|
||||
OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo,
|
||||
IN USHORT TtPortNumber);
|
||||
|
||||
typedef USB_BUSIFFN_CREATE_USB_DEVICE_EX *PUSB_BUSIFFN_CREATE_USB_DEVICE_EX;
|
||||
|
||||
typedef struct _USB_PORT_PATH {
|
||||
ULONG PortPathDepth;
|
||||
ULONG PortPath[6];
|
||||
} USB_PORT_PATH, *PUSB_PORT_PATH;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CREATE_USB_DEVICE_V7 (
|
||||
IN PVOID BusContext,
|
||||
OUT PUSB_DEVICE_HANDLE *NewDeviceHandle,
|
||||
IN PUSB_DEVICE_HANDLE HsHubDeviceHandle,
|
||||
IN USHORT PortStatus,
|
||||
IN PUSB_PORT_PATH PortPath,
|
||||
OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo,
|
||||
IN USHORT TtPortNumber,
|
||||
IN PDEVICE_OBJECT PdoDeviceObject,
|
||||
IN PUNICODE_STRING PhysicalDeviceObjectName);
|
||||
|
||||
typedef USB_BUSIFFN_CREATE_USB_DEVICE_V7 *PUSB_BUSIFFN_CREATE_USB_DEVICE_V7;
|
||||
|
||||
typedef enum _USBPORT_INITDEV_ERROR {
|
||||
InitDevErrNotSet = 0,
|
||||
InitDevFailedSetAddress,
|
||||
InitDevFailedPokeEndpoint,
|
||||
InitDevBadDeviceDescriptor
|
||||
} USBPORT_INITDEV_ERROR;
|
||||
|
||||
typedef struct _USB_ID_ERROR_INFORMATION {
|
||||
ULONG Version;
|
||||
USBPORT_INITDEV_ERROR PathError;
|
||||
ULONG Arg1;
|
||||
ULONG UsbAddress;
|
||||
NTSTATUS NtStatus;
|
||||
USBD_STATUS UsbdStatus;
|
||||
UCHAR XtraInfo[64];
|
||||
} USB_ID_ERROR_INFORMATION, *PUSB_ID_ERROR_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_INITIALIZE_USB_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE *PUSB_BUSIFFN_INITIALIZE_USB_DEVICE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PUSB_ID_ERROR_INFORMATION IdErrInfo);
|
||||
|
||||
typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX *PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_REMOVE_USB_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN ULONG Flags);
|
||||
|
||||
typedef USB_BUSIFFN_REMOVE_USB_DEVICE *PUSB_BUSIFFN_REMOVE_USB_DEVICE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_USB_DESCRIPTORS (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PUCHAR DeviceDescriptorBuffer,
|
||||
IN OUT PULONG DeviceDescriptorBufferLength,
|
||||
OUT PUCHAR ConfigDescriptorBuffer,
|
||||
IN OUT PULONG ConfigDescriptorBufferLength);
|
||||
|
||||
typedef USB_BUSIFFN_GET_USB_DESCRIPTORS *PUSB_BUSIFFN_GET_USB_DESCRIPTORS;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_RESTORE_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE OldDeviceHandle,
|
||||
IN OUT PUSB_DEVICE_HANDLE NewDeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_RESTORE_DEVICE *PUSB_BUSIFFN_RESTORE_DEVICE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_POTRTHACK_FLAGS (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PULONG Flags);
|
||||
|
||||
typedef USB_BUSIFFN_GET_POTRTHACK_FLAGS *PUSB_BUSIFFN_GET_POTRTHACK_FLAGS;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_INFORMATION (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PVOID DeviceInformationBuffer,
|
||||
IN ULONG DeviceInformationBufferLength,
|
||||
IN OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_INFORMATION *PUSB_BUSIFFN_GET_DEVICE_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_CONTROLLER_INFORMATION (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PVOID ControllerInformationBuffer,
|
||||
IN ULONG ControllerInformationBufferLength,
|
||||
IN OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_CONTROLLER_INFORMATION *PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND (
|
||||
IN PVOID BusContext,
|
||||
IN BOOLEAN Enable);
|
||||
|
||||
typedef USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND *PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_EXTENDED_HUB_INFO (
|
||||
IN PVOID BusContext,
|
||||
IN PDEVICE_OBJECT HubPhysicalDeviceObject,
|
||||
IN PVOID HubInformationBuffer,
|
||||
IN ULONG HubInformationBufferLength,
|
||||
OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_EXTENDED_HUB_INFO *PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_ROOTHUB_SYM_NAME (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID HubSymNameBuffer,
|
||||
IN ULONG HubSymNameBufferLength,
|
||||
OUT PULONG HubSymNameActualLength);
|
||||
|
||||
typedef USB_BUSIFFN_GET_ROOTHUB_SYM_NAME *PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME;
|
||||
|
||||
typedef
|
||||
PVOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_BUSCONTEXT (
|
||||
IN PVOID HubBusContext,
|
||||
IN PVOID DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_BUSCONTEXT *PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_INITIALIZE_20HUB (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE HubDeviceHandle,
|
||||
IN ULONG TtCount);
|
||||
|
||||
typedef USB_BUSIFFN_INITIALIZE_20HUB *PUSB_BUSIFFN_INITIALIZE_20HUB;
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_IS_ROOT (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceObject);
|
||||
|
||||
typedef USB_BUSIFFN_IS_ROOT *PUSB_BUSIFFN_IS_ROOT;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_ACQUIRE_SEMAPHORE (
|
||||
IN PVOID BusContext);
|
||||
|
||||
typedef USB_BUSIFFN_ACQUIRE_SEMAPHORE *PUSB_BUSIFFN_ACQUIRE_SEMAPHORE;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_RELEASE_SEMAPHORE (
|
||||
IN PVOID BusContext);
|
||||
|
||||
typedef USB_BUSIFFN_RELEASE_SEMAPHORE *PUSB_BUSIFFN_RELEASE_SEMAPHORE;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
__stdcall
|
||||
RH_INIT_CALLBACK (
|
||||
IN PVOID CallBackContext);
|
||||
|
||||
typedef RH_INIT_CALLBACK *PRH_INIT_CALLBACK;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_ROOTHUB_INIT_NOTIFY (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID CallbackContext,
|
||||
IN PRH_INIT_CALLBACK CallbackRoutine);
|
||||
|
||||
typedef USB_BUSIFFN_ROOTHUB_INIT_NOTIFY *PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_FLUSH_TRANSFERS (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_FLUSH_TRANSFERS *PUSB_BUSIFFN_FLUSH_TRANSFERS;
|
||||
|
||||
typedef
|
||||
ULONG
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CALC_PIPE_BANDWIDTH (
|
||||
IN PVOID BusContext,
|
||||
IN PUSBD_PIPE_INFORMATION PipeInfo,
|
||||
IN USB_DEVICE_SPEED DeviceSpeed);
|
||||
|
||||
typedef USB_BUSIFFN_CALC_PIPE_BANDWIDTH *PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_BUS_WAKE_MODE (
|
||||
IN PVOID BusContext,
|
||||
IN ULONG Mode);
|
||||
|
||||
typedef USB_BUSIFFN_SET_BUS_WAKE_MODE *PUSB_BUSIFFN_SET_BUS_WAKE_MODE;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVICE_FLAG (
|
||||
IN PVOID BusContext,
|
||||
IN GUID *DeviceFlagGuid,
|
||||
IN PVOID ValueData,
|
||||
IN ULONG ValueLength);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVICE_FLAG *PUSB_BUSIFFN_SET_DEVICE_FLAG;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVHANDLE_DATA (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceHandle,
|
||||
IN PDEVICE_OBJECT UsbDevicePdo);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVHANDLE_DATA *PUSB_BUSIFFN_SET_DEVHANDLE_DATA;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_TEST_POINT (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceHandle,
|
||||
IN ULONG Opcode,
|
||||
IN PVOID TestData);
|
||||
|
||||
typedef USB_BUSIFFN_TEST_POINT *PUSB_BUSIFFN_TEST_POINT;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PVOID DeviceInformationBuffer,
|
||||
IN ULONG DeviceInformationBufferLength,
|
||||
IN OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO *PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_WAIT_ASYNC_POWERUP (
|
||||
IN PVOID BusContext);
|
||||
|
||||
typedef USB_BUSIFFN_WAIT_ASYNC_POWERUP *PUSB_BUSIFFN_WAIT_ASYNC_POWERUP;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_ADDRESS (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PUSHORT DeviceAddress);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_ADDRESS *PUSB_BUSIFFN_GET_DEVICE_ADDRESS;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_DEREF_DEVICE_HANDLE (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN PVOID Object,
|
||||
IN ULONG Tag);
|
||||
|
||||
typedef USB_BUSIFFN_DEREF_DEVICE_HANDLE *PUSB_BUSIFFN_DEREF_DEVICE_HANDLE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_REF_DEVICE_HANDLE (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN PVOID Object,
|
||||
IN ULONG Tag);
|
||||
|
||||
typedef USB_BUSIFFN_REF_DEVICE_HANDLE *PUSB_BUSIFFN_REF_DEVICE_HANDLE;
|
||||
|
||||
typedef
|
||||
ULONG
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN ULONG NewIdleReadyState);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE *PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT (
|
||||
IN PVOID BusContext,
|
||||
IN USHORT PortNumber,
|
||||
OUT LPGUID ContainerId);
|
||||
|
||||
typedef USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT *PUSB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT (
|
||||
IN PVOID BusContext,
|
||||
IN USHORT PortNumber,
|
||||
IN LPGUID ContainerId);
|
||||
|
||||
typedef USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT *PUSB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES *PUSB_BUSIFFN_ABORT_ALL_DEVICE_PIPES;
|
||||
|
||||
#define ERRATA_FLAG_RESET_TT_ON_CANCEL 1
|
||||
#define ERRATA_FLAG_NO_CLEAR_TT_BUFFER_ON_CANCEL 2
|
||||
|
||||
#define USB_BUSIF_HUB_VERSION_0 0x0000
|
||||
#define USB_BUSIF_HUB_VERSION_1 0x0001
|
||||
#define USB_BUSIF_HUB_VERSION_2 0x0002
|
||||
#define USB_BUSIF_HUB_VERSION_3 0x0003
|
||||
#define USB_BUSIF_HUB_VERSION_4 0x0004
|
||||
#define USB_BUSIF_HUB_VERSION_5 0x0005
|
||||
#define USB_BUSIF_HUB_VERSION_6 0x0006
|
||||
#define USB_BUSIF_HUB_VERSION_7 0x0007
|
||||
|
||||
#define USB_BUSIF_HUB_MIDUMP_VERSION_0 0x0000
|
||||
|
||||
#define USB_BUSIF_HUB_SS_VERSION_0 0x0000
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN ULONG DeviceErrataFlag);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG *PUSB_BUSIFFN_SET_DEVICE_ERRATA_FLAG;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_HUB_GUID,
|
||||
0xb2bb8c0a, 0x5ab4, 0x11d3, 0xa8, 0xcd, 0x0, 0xc0, 0x4f, 0x68, 0x74, 0x7a);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V0 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
} USB_BUS_INTERFACE_HUB_V0, *PUSB_BUS_INTERFACE_HUB_V0;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V1 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
} USB_BUS_INTERFACE_HUB_V1, *PUSB_BUS_INTERFACE_HUB_V1;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V2 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
} USB_BUS_INTERFACE_HUB_V2, *PUSB_BUS_INTERFACE_HUB_V2;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V3 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
} USB_BUS_INTERFACE_HUB_V3, *PUSB_BUS_INTERFACE_HUB_V3;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V4 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
} USB_BUS_INTERFACE_HUB_V4, *PUSB_BUS_INTERFACE_HUB_V4;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V5 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData;
|
||||
} USB_BUS_INTERFACE_HUB_V5, *PUSB_BUS_INTERFACE_HUB_V5;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V6 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE_EX CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData;
|
||||
PUSB_BUSIFFN_IS_ROOT HubIsRoot;
|
||||
PUSB_BUSIFFN_ACQUIRE_SEMAPHORE AcquireBusSemaphore;
|
||||
PUSB_BUSIFFN_RELEASE_SEMAPHORE ReleaseBusSemaphore;
|
||||
PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH CaculatePipeBandwidth;
|
||||
PUSB_BUSIFFN_SET_BUS_WAKE_MODE SetBusSystemWakeMode;
|
||||
PUSB_BUSIFFN_SET_DEVICE_FLAG SetDeviceFlag;
|
||||
PUSB_BUSIFFN_TEST_POINT HubTestPoint;
|
||||
PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO GetDevicePerformanceInfo;
|
||||
PUSB_BUSIFFN_WAIT_ASYNC_POWERUP WaitAsyncPowerUp;
|
||||
PUSB_BUSIFFN_GET_DEVICE_ADDRESS GetDeviceAddress;
|
||||
PUSB_BUSIFFN_REF_DEVICE_HANDLE RefDeviceHandle;
|
||||
PUSB_BUSIFFN_DEREF_DEVICE_HANDLE DerefDeviceHandle;
|
||||
PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE SetDeviceHandleIdleReadyState;
|
||||
} USB_BUS_INTERFACE_HUB_V6, *PUSB_BUS_INTERFACE_HUB_V6;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V7 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE_EX CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData;
|
||||
PUSB_BUSIFFN_IS_ROOT HubIsRoot;
|
||||
PUSB_BUSIFFN_ACQUIRE_SEMAPHORE AcquireBusSemaphore;
|
||||
PUSB_BUSIFFN_RELEASE_SEMAPHORE ReleaseBusSemaphore;
|
||||
PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH CaculatePipeBandwidth;
|
||||
PUSB_BUSIFFN_SET_BUS_WAKE_MODE SetBusSystemWakeMode;
|
||||
PUSB_BUSIFFN_SET_DEVICE_FLAG SetDeviceFlag;
|
||||
PUSB_BUSIFFN_TEST_POINT HubTestPoint;
|
||||
PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO GetDevicePerformanceInfo;
|
||||
PUSB_BUSIFFN_WAIT_ASYNC_POWERUP WaitAsyncPowerUp;
|
||||
PUSB_BUSIFFN_GET_DEVICE_ADDRESS GetDeviceAddress;
|
||||
PUSB_BUSIFFN_REF_DEVICE_HANDLE RefDeviceHandle;
|
||||
PUSB_BUSIFFN_DEREF_DEVICE_HANDLE DerefDeviceHandle;
|
||||
PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE SetDeviceHandleIdleReadyState;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE_V7 CreateUsbDeviceV7;
|
||||
PUSB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT GetContainerIdForPort;
|
||||
PUSB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT SetContainerIdForPort;
|
||||
PUSB_BUSIFFN_ABORT_ALL_DEVICE_PIPES AbortAllDevicePipes;
|
||||
PUSB_BUSIFFN_SET_DEVICE_ERRATA_FLAG SetDeviceErrataFlag;
|
||||
} USB_BUS_INTERFACE_HUB_V7, *PUSB_BUS_INTERFACE_HUB_V7;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_HUB_MINIDUMP_GUID,
|
||||
0xc5485f21, 0x4e81, 0x4a23, 0xa8, 0xf9, 0xd8, 0x51, 0x8a, 0xf4, 0x5c, 0x38);
|
||||
|
||||
typedef VOID
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_SET_MINIDUMP_FLAGS) (
|
||||
IN PVOID);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_MINIDUMP {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_SET_MINIDUMP_FLAGS SetUsbPortMiniDumpFlags;
|
||||
} USB_BUS_INTERFACE_HUB_MINIDUMP, *PUSB_BUS_INTERFACE_HUB_MINIDUMP;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_HUB_SS_GUID,
|
||||
0xbfc3f363, 0x8ba1, 0x4c7b, 0x97, 0xba, 0x9b, 0x12, 0xb1, 0xca, 0x13, 0x2f);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_SUSPEND_HUB) (
|
||||
PDEVICE_OBJECT Pdo);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_RESUME_HUB) (
|
||||
PDEVICE_OBJECT Pdo);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_SUSPEND_HUB SuspendHub;
|
||||
PUSB_BUSIFFN_RESUME_HUB ResumeHub;
|
||||
} USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND, *PUSB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND;
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef struct _USB_PIPE_INFORMATION_0 {
|
||||
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
|
||||
UCHAR ED_Pad[1];
|
||||
ULONG ScheduleOffset;
|
||||
} USB_PIPE_INFORMATION_0, *PUSB_PIPE_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_LEVEL_INFORMATION {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
} USB_LEVEL_INFORMATION, *PUSB_LEVEL_INFORMATION;
|
||||
|
||||
typedef struct _USB_DEVICE_INFORMATION_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
ULONG PortNumber;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR DD_pad[2];
|
||||
UCHAR CurrentConfigurationValue;
|
||||
UCHAR ReservedMBZ;
|
||||
USHORT DeviceAddress;
|
||||
ULONG HubAddress;
|
||||
USB_DEVICE_SPEED DeviceSpeed;
|
||||
USB_DEVICE_TYPE DeviceType;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_PIPE_INFORMATION_0 PipeList[1];
|
||||
} USB_DEVICE_INFORMATION_0, *PUSB_DEVICE_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_CONTROLLER_INFORMATION_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
BOOLEAN SelectiveSuspendEnabled;
|
||||
BOOLEAN IsHighSpeedController;
|
||||
} USB_CONTROLLER_INFORMATION_0, *PUSB_CONTROLLER_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_CONTROLLER_INFORMATION_1 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
BOOLEAN SelectiveSuspendEnabled;
|
||||
BOOLEAN IsHighSpeedController;
|
||||
ULONG HcBusNumber;
|
||||
ULONG HcBusDevice;
|
||||
ULONG HcBusFunction;
|
||||
} USB_CONTROLLER_INFORMATION_1, *PUSB_CONTROLLER_INFORMATION_1;
|
||||
|
||||
typedef struct _USB_EXTPORT_INFORMATION_0 {
|
||||
ULONG PhysicalPortNumber;
|
||||
ULONG PortLabelNumber;
|
||||
USHORT VidOverride;
|
||||
USHORT PidOverride;
|
||||
ULONG PortAttributes;
|
||||
} USB_EXTPORT_INFORMATION_0, *PUSB_EXTPORT_INFORMATION;
|
||||
|
||||
typedef struct _USB_EXTHUB_INFORMATION_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG NumberOfPorts;
|
||||
USB_EXTPORT_INFORMATION_0 Port[255];
|
||||
} USB_EXTHUB_INFORMATION_0, *PUSB_EXTHUB_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_DEVICE_PERFORMANCE_INFO_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
ULONG BulkBytes;
|
||||
ULONG BulkUrbCount;
|
||||
ULONG ControlDataBytes;
|
||||
ULONG ControlUrbCount;
|
||||
ULONG IsoBytes;
|
||||
ULONG IsoUrbCount;
|
||||
ULONG InterruptBytes;
|
||||
ULONG InterruptUrbCount;
|
||||
ULONG AllocedInterrupt[6];
|
||||
ULONG AllocedIso;
|
||||
ULONG Total32secBandwidth;
|
||||
ULONG TotalTtBandwidth;
|
||||
ULONG TotalIsoLatency;
|
||||
ULONG DroppedIsoPackets;
|
||||
ULONG TransferErrors;
|
||||
} USB_DEVICE_PERFORMANCE_INFO_0, *PUSB_DEVICE_PERFORMANCE_INFO_0;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#endif
|
|
@ -23,6 +23,15 @@
|
|||
#ifndef __IDE_H
|
||||
#define __IDE_H
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -104,7 +113,7 @@ typedef struct _EXTENDED_IDENTIFY_DATA {
|
|||
USHORT UnformattedBytesPerTrack; /* 08 */
|
||||
USHORT UnformattedBytesPerSector; /* 10 */
|
||||
USHORT NumSectorsPerTrack; /* 12 */
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
USHORT VendorUnique1[3]; /* 14 */
|
||||
struct
|
||||
|
|
|
@ -22,6 +22,15 @@
|
|||
#ifndef __MINITAPE_H
|
||||
#define __MINITAPE_H
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -77,9 +86,9 @@ typedef struct _INQUIRYDATA {
|
|||
UCHAR DeviceTypeQualifier : 3;
|
||||
UCHAR DeviceTypeModifier : 7;
|
||||
UCHAR RemovableMedia : 1;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
UCHAR Versions;
|
||||
struct {
|
||||
__GNU_EXTENSION struct {
|
||||
UCHAR ANSIVersion : 3;
|
||||
UCHAR ECMAVersion : 3;
|
||||
UCHAR ISOVersion : 2;
|
||||
|
|
|
@ -32,6 +32,15 @@
|
|||
#ifndef __NDIS_H
|
||||
#define __NDIS_H
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "ntddk.h"
|
||||
#include "ntddndis.h"
|
||||
#include "netpnp.h"
|
||||
|
@ -238,8 +247,8 @@ typedef union _NDIS_RW_LOCK_REFCOUNT {
|
|||
} NDIS_RW_LOCK_REFCOUNT;
|
||||
|
||||
typedef struct _NDIS_RW_LOCK {
|
||||
union {
|
||||
struct {
|
||||
__GNU_EXTENSION union {
|
||||
__GNU_EXTENSION struct {
|
||||
KSPIN_LOCK SpinLock;
|
||||
PVOID Context;
|
||||
};
|
||||
|
@ -380,16 +389,16 @@ typedef struct _NDIS_PACKET_PRIVATE {
|
|||
|
||||
typedef struct _NDIS_PACKET {
|
||||
NDIS_PACKET_PRIVATE Private;
|
||||
union {
|
||||
struct {
|
||||
__GNU_EXTENSION union {
|
||||
__GNU_EXTENSION struct {
|
||||
UCHAR MiniportReserved[2 * sizeof(PVOID)];
|
||||
UCHAR WrapperReserved[2 * sizeof(PVOID)];
|
||||
};
|
||||
struct {
|
||||
__GNU_EXTENSION struct {
|
||||
UCHAR MiniportReservedEx[3 * sizeof(PVOID)];
|
||||
UCHAR WrapperReservedEx[sizeof(PVOID)];
|
||||
};
|
||||
struct {
|
||||
__GNU_EXTENSION struct {
|
||||
UCHAR MacReserved[4 * sizeof(PVOID)];
|
||||
};
|
||||
};
|
||||
|
@ -474,7 +483,7 @@ typedef struct _NDIS_REQUEST {
|
|||
} DATA;
|
||||
#if (defined(NDIS50) || defined(NDIS51))
|
||||
UCHAR NdisReserved[9 * sizeof(PVOID)];
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
UCHAR CallMgrReserved[2 * sizeof(PVOID)];
|
||||
UCHAR ProtocolReserved[2 * sizeof(PVOID)];
|
||||
};
|
||||
|
|
|
@ -23,6 +23,15 @@
|
|||
#ifndef __NTDDDISK_H
|
||||
#define __NTDDDISK_H
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "ntddstor.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -326,6 +335,12 @@ typedef struct _PARTITION_INFORMATION_GPT {
|
|||
WCHAR Name [36];
|
||||
} PARTITION_INFORMATION_GPT, *PPARTITION_INFORMATION_GPT;
|
||||
|
||||
typedef enum _PARTITION_STYLE {
|
||||
PARTITION_STYLE_MBR,
|
||||
PARTITION_STYLE_GPT,
|
||||
PARTITION_STYLE_RAW
|
||||
} PARTITION_STYLE;
|
||||
|
||||
typedef struct _DISK_PARTITION_INFO {
|
||||
ULONG SizeOfPartitionInfo;
|
||||
PARTITION_STYLE PartitionStyle;
|
||||
|
@ -394,7 +409,7 @@ typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
|
|||
typedef struct _DRIVE_LAYOUT_INFORMATION_EX {
|
||||
ULONG PartitionStyle;
|
||||
ULONG PartitionCount;
|
||||
union {
|
||||
__GNU_EXTENSION union {
|
||||
DRIVE_LAYOUT_INFORMATION_MBR Mbr;
|
||||
DRIVE_LAYOUT_INFORMATION_GPT Gpt;
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -27,15 +27,122 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _PO_DDK_
|
||||
#define _PO_DDK_
|
||||
|
||||
/* Power States/Levels */
|
||||
typedef enum _SYSTEM_POWER_STATE {
|
||||
PowerSystemUnspecified,
|
||||
PowerSystemWorking,
|
||||
PowerSystemSleeping1,
|
||||
PowerSystemSleeping2,
|
||||
PowerSystemSleeping3,
|
||||
PowerSystemHibernate,
|
||||
PowerSystemShutdown,
|
||||
PowerSystemMaximum
|
||||
} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
|
||||
#define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
|
||||
|
||||
typedef enum _DEVICE_POWER_STATE {
|
||||
PowerDeviceUnspecified,
|
||||
PowerDeviceD0,
|
||||
PowerDeviceD1,
|
||||
PowerDeviceD2,
|
||||
PowerDeviceD3,
|
||||
PowerDeviceMaximum
|
||||
} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
|
||||
|
||||
typedef union _POWER_STATE {
|
||||
SYSTEM_POWER_STATE SystemState;
|
||||
DEVICE_POWER_STATE DeviceState;
|
||||
} POWER_STATE, *PPOWER_STATE;
|
||||
|
||||
typedef enum _POWER_STATE_TYPE {
|
||||
SystemPowerState = 0,
|
||||
DevicePowerState
|
||||
} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
|
||||
|
||||
typedef enum _POWER_INFORMATION_LEVEL {
|
||||
SystemPowerPolicyAc,
|
||||
SystemPowerPolicyDc,
|
||||
VerifySystemPolicyAc,
|
||||
VerifySystemPolicyDc,
|
||||
SystemPowerCapabilities,
|
||||
SystemBatteryState,
|
||||
SystemPowerStateHandler,
|
||||
ProcessorStateHandler,
|
||||
SystemPowerPolicyCurrent,
|
||||
AdministratorPowerPolicy,
|
||||
SystemReserveHiberFile,
|
||||
ProcessorInformation,
|
||||
SystemPowerInformation,
|
||||
ProcessorStateHandler2,
|
||||
LastWakeTime,
|
||||
LastSleepTime,
|
||||
SystemExecutionState,
|
||||
SystemPowerStateNotifyHandler,
|
||||
ProcessorPowerPolicyAc,
|
||||
ProcessorPowerPolicyDc,
|
||||
VerifyProcessorPowerPolicyAc,
|
||||
VerifyProcessorPowerPolicyDc,
|
||||
ProcessorPowerPolicyCurrent,
|
||||
SystemPowerStateLogging,
|
||||
SystemPowerLoggingEntry,
|
||||
SetPowerSettingValue,
|
||||
NotifyUserPowerSetting,
|
||||
PowerInformationLevelUnused0,
|
||||
PowerInformationLevelUnused1,
|
||||
SystemVideoState,
|
||||
TraceApplicationPowerMessage,
|
||||
TraceApplicationPowerMessageEnd,
|
||||
ProcessorPerfStates,
|
||||
ProcessorIdleStates,
|
||||
ProcessorCap,
|
||||
SystemWakeSource,
|
||||
SystemHiberFileInformation,
|
||||
TraceServicePowerMessage,
|
||||
ProcessorLoad,
|
||||
PowerShutdownNotification,
|
||||
MonitorCapabilities,
|
||||
SessionPowerInit,
|
||||
SessionDisplayState,
|
||||
PowerRequestCreate,
|
||||
PowerRequestAction,
|
||||
GetPowerRequestList,
|
||||
ProcessorInformationEx,
|
||||
NotifyUserModeLegacyPowerEvent,
|
||||
GroupPark,
|
||||
ProcessorIdleDomains,
|
||||
WakeTimerList,
|
||||
SystemHiberFileSize,
|
||||
PowerInformationLevelMaximum
|
||||
} POWER_INFORMATION_LEVEL;
|
||||
|
||||
typedef enum {
|
||||
PowerActionNone,
|
||||
PowerActionReserved,
|
||||
PowerActionSleep,
|
||||
PowerActionHibernate,
|
||||
PowerActionShutdown,
|
||||
PowerActionShutdownReset,
|
||||
PowerActionShutdownOff,
|
||||
PowerActionWarmEject
|
||||
} POWER_ACTION, *PPOWER_ACTION;
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_)
|
||||
typedef struct {
|
||||
ULONG Granularity;
|
||||
ULONG Capacity;
|
||||
} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
|
||||
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */
|
||||
|
||||
|
||||
#endif /* _PO_DDK_ */
|
||||
|
||||
#define POWER_PERF_SCALE 100
|
||||
#define PERF_LEVEL_TO_PERCENT(x) (((x) * 1000) / (POWER_PERF_SCALE * 10))
|
||||
#define PERCENT_TO_PERF_LEVEL(x) (((x) * POWER_PERF_SCALE * 10) / 1000)
|
||||
|
||||
typedef struct {
|
||||
ULONG Granularity;
|
||||
ULONG Capacity;
|
||||
} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
|
||||
|
||||
typedef struct _PROCESSOR_IDLE_TIMES {
|
||||
ULONGLONG StartTime;
|
||||
ULONGLONG EndTime;
|
||||
|
@ -270,6 +377,39 @@ typedef struct _PROCESSOR_POWER_INFORMATION {
|
|||
ULONG CurrentIdleState;
|
||||
} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
|
||||
|
||||
typedef struct _POWER_ACTION_POLICY {
|
||||
POWER_ACTION Action;
|
||||
ULONG Flags;
|
||||
ULONG EventCode;
|
||||
} POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
|
||||
|
||||
/* POWER_ACTION_POLICY.Flags constants */
|
||||
#define POWER_ACTION_QUERY_ALLOWED 0x00000001
|
||||
#define POWER_ACTION_UI_ALLOWED 0x00000002
|
||||
#define POWER_ACTION_OVERRIDE_APPS 0x00000004
|
||||
#define POWER_ACTION_LIGHTEST_FIRST 0x10000000
|
||||
#define POWER_ACTION_LOCK_CONSOLE 0x20000000
|
||||
#define POWER_ACTION_DISABLE_WAKES 0x40000000
|
||||
#define POWER_ACTION_CRITICAL 0x80000000
|
||||
|
||||
/* POWER_ACTION_POLICY.EventCode constants */
|
||||
#define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001
|
||||
#define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002
|
||||
#define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004
|
||||
#define POWER_USER_NOTIFY_BUTTON 0x00000008
|
||||
#define POWER_USER_NOTIFY_SHUTDOWN 0x00000010
|
||||
#define POWER_FORCE_TRIGGER_RESET 0x80000000
|
||||
|
||||
#define DISCHARGE_POLICY_CRITICAL 0
|
||||
#define DISCHARGE_POLICY_LOW 1
|
||||
#define NUM_DISCHARGE_POLICIES 4
|
||||
|
||||
#define PO_THROTTLE_NONE 0
|
||||
#define PO_THROTTLE_CONSTANT 1
|
||||
#define PO_THROTTLE_DEGRADE 2
|
||||
#define PO_THROTTLE_ADAPTIVE 3
|
||||
#define PO_THROTTLE_MAXIMUM 4
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -13,6 +13,15 @@
|
|||
|
||||
#include <punknown.h>
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ===============================================================
|
||||
INonDelegatingUnknown interface
|
||||
*/
|
||||
|
@ -110,7 +119,7 @@ Unknown_Release(
|
|||
|
||||
typedef struct CUnknown
|
||||
{
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
IUnknown IUnknown;
|
||||
INonDelegatingUnknown INonDelegatingUnknown;
|
||||
|
|
|
@ -5,6 +5,15 @@
|
|||
#include <windef.h>
|
||||
#include <ks.h>
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define STREAMAPI __stdcall
|
||||
#define STREAM_SYSTEM_TIME_MASK ((STREAM_SYSTEM_TIME)0x00000001FFFFFFFF)
|
||||
|
||||
|
@ -37,8 +46,8 @@ typedef enum
|
|||
#endif
|
||||
|
||||
typedef PHYSICAL_ADDRESS STREAM_PHYSICAL_ADDRESS, *PSTREAM_PHYSICAL_ADDRESS;
|
||||
typedef unsigned __int64 STREAM_SYSTEM_TIME, *PSTREAM_SYSTEM_TIME;
|
||||
typedef unsigned __int64 STREAM_TIMESTAMP, *PSTREAM_TIMESTAMP;
|
||||
__GNU_EXTENSION typedef unsigned __int64 STREAM_SYSTEM_TIME, *PSTREAM_SYSTEM_TIME;
|
||||
__GNU_EXTENSION typedef unsigned __int64 STREAM_TIMESTAMP, *PSTREAM_TIMESTAMP;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -61,7 +70,7 @@ typedef struct _HW_EVENT_DESCRIPTOR
|
|||
BOOLEAN Enable;
|
||||
PKSEVENT_ENTRY EventEntry;
|
||||
PKSEVENTDATA EventData;
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
struct _HW_STREAM_OBJECT * StreamObject;
|
||||
struct _HW_DEVICE_EXTENSION *DeviceExtension;
|
||||
|
@ -285,7 +294,7 @@ typedef struct _HW_STREAM_REQUEST_BLOCK
|
|||
ULONG Flags;
|
||||
PVOID HwInstanceExtension;
|
||||
|
||||
union
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
ULONG NumberOfBytesToTransfer;
|
||||
ULONG ActualBytesTransferred;
|
||||
|
@ -376,11 +385,11 @@ typedef enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE
|
|||
|
||||
typedef struct _HW_INITIALIZATION_DATA {
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
union
|
||||
{
|
||||
__GNU_EXTENSION union
|
||||
{
|
||||
ULONG HwInitializationDataSize;
|
||||
struct
|
||||
{
|
||||
__GNU_EXTENSION struct
|
||||
{
|
||||
USHORT SizeOfThisPacket;
|
||||
USHORT StreamClassVersion;
|
||||
};
|
||||
|
|
|
@ -397,7 +397,9 @@ TdiDefaultSendPossibleHandler(
|
|||
bIrpSp->DeviceObject = (bDevObj); \
|
||||
bIrpSp->FileObject = (bFileObj); \
|
||||
if (bCompRoutine) \
|
||||
IoSetCompletionRoutine(bIrp, bCompRoutine, bContxt, TRUE, TRUE, TRUE) \
|
||||
{ \
|
||||
IoSetCompletionRoutine(bIrp, bCompRoutine, bContxt, TRUE, TRUE, TRUE);\
|
||||
} \
|
||||
else \
|
||||
IoSetCompletionRoutine(bIrp, NULL, NULL, FALSE, FALSE, FALSE); \
|
||||
}
|
||||
|
|
|
@ -1,112 +0,0 @@
|
|||
#ifndef __USB200_H__
|
||||
#define __USB200_H__
|
||||
|
||||
#include "usb100.h"
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
|
||||
typedef enum _USB_DEVICE_TYPE
|
||||
{
|
||||
Usb11Device = 0,
|
||||
Usb20Device
|
||||
} USB_DEVICE_TYPE;
|
||||
|
||||
typedef enum _USB_DEVICE_SPEED
|
||||
{
|
||||
UsbLowSpeed = 0,
|
||||
UsbFullSpeed,
|
||||
UsbHighSpeed
|
||||
} USB_DEVICE_SPEED;
|
||||
|
||||
typedef union _BM_REQUEST_TYPE
|
||||
{
|
||||
struct _BM
|
||||
{
|
||||
UCHAR Recipient:2;
|
||||
UCHAR Reserved:3;
|
||||
UCHAR Type:2;
|
||||
UCHAR Dir:1;
|
||||
} _BM;
|
||||
UCHAR B;
|
||||
} BM_REQUEST_TYPE, *PBM_REQUEST_TYPE;
|
||||
|
||||
typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET
|
||||
{
|
||||
BM_REQUEST_TYPE bmRequestType;
|
||||
UCHAR bRequest;
|
||||
union _wValue
|
||||
{
|
||||
struct
|
||||
{
|
||||
UCHAR LowByte;
|
||||
UCHAR HiByte;
|
||||
};
|
||||
USHORT W;
|
||||
} wValue;
|
||||
union _wIndex
|
||||
{
|
||||
struct
|
||||
{
|
||||
UCHAR LowByte;
|
||||
UCHAR HiByte;
|
||||
};
|
||||
USHORT W;
|
||||
} wIndex;
|
||||
USHORT wLength;
|
||||
} USB_DEFAULT_PIPE_SETUP_PACKET, *PUSB_DEFAULT_PIPE_SETUP_PACKET;
|
||||
|
||||
|
||||
C_ASSERT(sizeof(USB_DEFAULT_PIPE_SETUP_PACKET) == 8);
|
||||
|
||||
typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR
|
||||
{
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
USHORT bcdUSB;
|
||||
UCHAR bDeviceClass;
|
||||
UCHAR bDeviceSubClass;
|
||||
UCHAR bDeviceProtocol;
|
||||
UCHAR bMaxPacketSize0;
|
||||
UCHAR bNumConfigurations;
|
||||
UCHAR bReserved;
|
||||
} USB_DEVICE_QUALIFIER_DESCRIPTOR, *PUSB_DEVICE_QUALIFIER_DESCRIPTOR;
|
||||
|
||||
|
||||
typedef union _USB_HIGH_SPEED_MAXPACKET
|
||||
{
|
||||
struct _MP
|
||||
{
|
||||
USHORT MaxPacket:11;
|
||||
USHORT HSmux:2;
|
||||
USHORT Reserved:3;
|
||||
} _MP;
|
||||
USHORT us;
|
||||
} USB_HIGH_SPEED_MAXPACKET, *PUSB_HIGH_SPEED_MAXPACKET;
|
||||
|
||||
typedef struct _USB_INTERFACE_ASSOCIATION_DESCRIPTOR
|
||||
{
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bFirstInterface;
|
||||
UCHAR bInterfaceCount;
|
||||
UCHAR bFunctionClass;
|
||||
UCHAR bFunctionSubClass;
|
||||
UCHAR bFunctionProtocol;
|
||||
UCHAR iFunction;
|
||||
} USB_INTERFACE_ASSOCIATION_DESCRIPTOR, *PUSB_INTERFACE_ASSOCIATION_DESCRIPTOR;
|
||||
|
||||
#define USB_PORT_STATUS_CONNECT 0x0001
|
||||
#define USB_PORT_STATUS_ENABLE 0x0002
|
||||
#define USB_PORT_STATUS_SUSPEND 0x0004
|
||||
#define USB_PORT_STATUS_OVER_CURRENT 0x0008
|
||||
#define USB_PORT_STATUS_RESET 0x0010
|
||||
#define USB_PORT_STATUS_POWER 0x0100
|
||||
#define USB_PORT_STATUS_LOW_SPEED 0x0200
|
||||
#define USB_PORT_STATUS_HIGH_SPEED 0x0400
|
||||
#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 0x06
|
||||
#define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 0x0B
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#endif //__USB200_H__
|
193
reactos/include/ddk/usbbusif.h
Normal file
193
reactos/include/ddk/usbbusif.h
Normal file
|
@ -0,0 +1,193 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef USB_BUSIFFN
|
||||
#define USB_BUSIFFN __stdcall
|
||||
#endif
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
|
||||
typedef PVOID PUSB_DEVICE_HANDLE;
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB) (
|
||||
IN PVOID,
|
||||
IN PURB);
|
||||
|
||||
#define USB_HCD_CAPS_SUPPORTS_RT_THREADS 0x00000001
|
||||
|
||||
typedef VOID
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_GETUSBDI_VERSION) (
|
||||
IN PVOID,
|
||||
OUT PUSBD_VERSION_INFORMATION OPTIONAL,
|
||||
OUT PULONG OPTIONAL);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_TIME) (
|
||||
IN PVOID,
|
||||
OUT PULONG OPTIONAL);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_ENUM_LOG_ENTRY) (
|
||||
IN PVOID,
|
||||
IN ULONG,
|
||||
IN ULONG,
|
||||
IN ULONG,
|
||||
IN ULONG);
|
||||
|
||||
typedef struct _USB_BUS_INFORMATION_LEVEL_0 {
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
} USB_BUS_INFORMATION_LEVEL_0, *PUSB_BUS_INFORMATION_LEVEL_0;
|
||||
|
||||
typedef struct _USB_BUS_INFORMATION_LEVEL_1 {
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
ULONG ControllerNameLength;
|
||||
WCHAR ControllerNameUnicodeString[1];
|
||||
} USB_BUS_INFORMATION_LEVEL_1, *PUSB_BUS_INFORMATION_LEVEL_1;
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_INFORMATION) (
|
||||
IN PVOID,
|
||||
IN ULONG,
|
||||
IN OUT PVOID,
|
||||
OUT PULONG,
|
||||
OUT PULONG OPTIONAL);
|
||||
|
||||
typedef BOOLEAN
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED) (
|
||||
IN PVOID OPTIONAL);
|
||||
|
||||
#define USB_BUSIF_USBDI_VERSION_0 0x0000
|
||||
#define USB_BUSIF_USBDI_VERSION_1 0x0001
|
||||
#define USB_BUSIF_USBDI_VERSION_2 0x0002
|
||||
#define USB_BUSIF_USBDI_VERSION_3 0x0003
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_USBDI_GUID,
|
||||
0xb1a96a13, 0x3de0, 0x4574, 0x9b, 0x1, 0xc0, 0x8f, 0xea, 0xb3, 0x18, 0xd6);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V0 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
} USB_BUS_INTERFACE_USBDI_V0, *PUSB_BUS_INTERFACE_USBDI_V0;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V1 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
|
||||
} USB_BUS_INTERFACE_USBDI_V1, *PUSB_BUS_INTERFACE_USBDI_V1;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V2 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
|
||||
PUSB_BUSIFFN_ENUM_LOG_ENTRY EnumLogEntry;
|
||||
} USB_BUS_INTERFACE_USBDI_V2, *PUSB_BUS_INTERFACE_USBDI_V2;
|
||||
|
||||
#endif
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_TIME_EX) (
|
||||
IN PVOID OPTIONAL,
|
||||
OUT PULONG OPTIONAL);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE) (
|
||||
IN PVOID OPTIONAL,
|
||||
OUT PULONG OPTIONAL,
|
||||
OUT PUSHORT OPTIONAL,
|
||||
OUT PUSHORT OPTIONAL,
|
||||
OUT PUCHAR OPTIONAL,
|
||||
OUT PUCHAR OPTIONAL,
|
||||
OUT PUCHAR OPTIONAL,
|
||||
OUT PUCHAR OPTIONAL);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V3 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
|
||||
PUSB_BUSIFFN_ENUM_LOG_ENTRY EnumLogEntry;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME_EX QueryBusTimeEx;
|
||||
PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE QueryControllerType;
|
||||
} USB_BUS_INTERFACE_USBDI_V3, *PUSB_BUS_INTERFACE_USBDI_V3;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID,
|
||||
0x893b6a96, 0xb7f, 0x4d4d, 0xbd, 0xb4, 0xbb, 0xd4, 0xce, 0xeb, 0xb3, 0x1c);
|
||||
|
||||
#define USBC_FUNCTION_FLAG_APPEND_ID 0x1
|
||||
|
||||
typedef struct _USBC_FUNCTION_DESCRIPTOR{
|
||||
UCHAR FunctionNumber;
|
||||
UCHAR NumberOfInterfaces;
|
||||
PUSB_INTERFACE_DESCRIPTOR *InterfaceDescriptorList;
|
||||
UNICODE_STRING HardwareId;
|
||||
UNICODE_STRING CompatibleId;
|
||||
UNICODE_STRING FunctionDescription;
|
||||
ULONG FunctionFlags;
|
||||
PVOID Reserved;
|
||||
} USBC_FUNCTION_DESCRIPTOR, *PUSBC_FUNCTION_DESCRIPTOR;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(USB_BUSIFFN *USBC_START_DEVICE_CALLBACK)(
|
||||
IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor,
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
OUT PUSBC_FUNCTION_DESCRIPTOR *FunctionDescriptorBuffer,
|
||||
OUT PULONG FunctionDescriptorBufferLength,
|
||||
IN PDEVICE_OBJECT FdoDeviceObject,
|
||||
IN PDEVICE_OBJECT PdoDeviceObject);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(USB_BUSIFFN *USBC_PDO_ENABLE_CALLBACK)(
|
||||
IN PVOID Context,
|
||||
IN USHORT FirstInterfaceNumber,
|
||||
IN USHORT NumberOfInterfaces,
|
||||
IN UCHAR FunctionClass,
|
||||
IN UCHAR FunctionSubClass,
|
||||
IN UCHAR FunctionProtocol);
|
||||
|
||||
#define USBC_DEVICE_CONFIGURATION_INTERFACE_VERSION_1 0x0001
|
||||
|
||||
typedef struct _USBC_DEVICE_CONFIGURATION_INTERFACE_V1 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID Context;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
USBC_START_DEVICE_CALLBACK StartDeviceCallback;
|
||||
USBC_PDO_ENABLE_CALLBACK PdoEnableCallback;
|
||||
PVOID Reserved[7];
|
||||
} USBC_DEVICE_CONFIGURATION_INTERFACE_V1, *PUSBC_DEVICE_CONFIGURATION_INTERFACE_V1;
|
||||
|
||||
#endif
|
|
@ -1,398 +0,0 @@
|
|||
/*
|
||||
* usbcamdi.h
|
||||
*
|
||||
* USB Camera driver interface.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __USBCAMDI_H
|
||||
#define __USBCAMDI_H
|
||||
|
||||
#if !defined(__USB_H) && !defined(__USBDI_H)
|
||||
#error include usb.h or usbdi.h before usbcamdi.h
|
||||
#else
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#pragma pack(push,4)
|
||||
|
||||
#if defined(_BATTERYCLASS_)
|
||||
#define USBCAMAPI
|
||||
#else
|
||||
#define USBCAMAPI DECLSPEC_IMPORT
|
||||
#endif
|
||||
|
||||
|
||||
/* FIXME: Unknown definition */
|
||||
typedef PVOID PHW_STREAM_REQUEST_BLOCK;
|
||||
|
||||
DEFINE_GUID(GUID_USBCAMD_INTERFACE,
|
||||
0x2bcb75c0, 0xb27f, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5);
|
||||
|
||||
#define USBCAMD_PROCESSPACKETEX_DropFrame 0x0002
|
||||
#define USBCAMD_PROCESSPACKETEX_NextFrameIsStill 0x0004
|
||||
#define USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill 0x0008
|
||||
|
||||
#define USBCAMD_DATA_PIPE 0x0001
|
||||
#define USBCAMD_MULTIPLEX_PIPE 0x0002
|
||||
#define USBCAMD_SYNC_PIPE 0x0004
|
||||
#define USBCAMD_DONT_CARE_PIPE 0x0008
|
||||
|
||||
#define USBCAMD_VIDEO_STREAM 0x1
|
||||
#define USBCAMD_STILL_STREAM 0x2
|
||||
#define USBCAMD_VIDEO_STILL_STREAM (USBCAMD_VIDEO_STREAM | USBCAMD_STILL_STREAM)
|
||||
|
||||
#define USBCAMD_STOP_STREAM 0x00000001
|
||||
#define USBCAMD_START_STREAM 0x00000000
|
||||
|
||||
typedef struct _pipe_config_descriptor {
|
||||
CHAR StreamAssociation;
|
||||
UCHAR PipeConfigFlags;
|
||||
} USBCAMD_Pipe_Config_Descriptor, *PUSBCAMD_Pipe_Config_Descriptor;
|
||||
|
||||
typedef enum {
|
||||
USBCAMD_CamControlFlag_NoVideoRawProcessing = 1,
|
||||
USBCAMD_CamControlFlag_NoStillRawProcessing = 2,
|
||||
USBCAMD_CamControlFlag_AssociatedFormat = 4,
|
||||
USBCAMD_CamControlFlag_EnableDeviceEvents = 8
|
||||
} USBCAMD_CamControlFlags;
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_ALLOCATE_BW_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PULONG RawFrameLength,
|
||||
PVOID Format);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_ALLOCATE_BW_ROUTINE_EX)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PULONG RawFrameLength,
|
||||
PVOID Format,
|
||||
ULONG StreamNumber);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_CONFIGURE_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PUSBD_INTERFACE_INFORMATION Interface,
|
||||
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
PLONG DataPipeIndex,
|
||||
PLONG SyncPipeIndex);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_CONFIGURE_ROUTINE_EX)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PUSBD_INTERFACE_INFORMATION Interface,
|
||||
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
ULONG PipeConfigListSize,
|
||||
PUSBCAMD_Pipe_Config_Descriptor PipeConfig,
|
||||
PUSB_DEVICE_DESCRIPTOR DeviceDescriptor);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_FREE_BW_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_FREE_BW_ROUTINE_EX)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
ULONG StreamNumber);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_INITIALIZE_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext);
|
||||
|
||||
typedef VOID
|
||||
(DDKAPI *PCAM_NEW_FRAME_ROUTINE)(
|
||||
PVOID DeviceContext,
|
||||
PVOID FrameContext);
|
||||
|
||||
typedef VOID
|
||||
(DDKAPI *PCAM_NEW_FRAME_ROUTINE_EX)(
|
||||
PVOID DeviceContext,
|
||||
PVOID FrameContext,
|
||||
ULONG StreamNumber,
|
||||
PULONG FrameLength);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_PROCESS_RAW_FRAME_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PVOID FrameContext,
|
||||
PVOID FrameBuffer,
|
||||
ULONG FrameLength,
|
||||
PVOID RawFrameBuffer,
|
||||
ULONG RawFrameLength,
|
||||
ULONG NumberOfPackets,
|
||||
PULONG BytesReturned);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_PROCESS_RAW_FRAME_ROUTINE_EX)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PVOID FrameContext,
|
||||
PVOID FrameBuffer,
|
||||
ULONG FrameLength,
|
||||
PVOID RawFrameBuffer,
|
||||
ULONG RawFrameLength,
|
||||
ULONG NumberOfPackets,
|
||||
PULONG BytesReturned,
|
||||
ULONG ActualRawFrameLength,
|
||||
ULONG StreamNumber);
|
||||
|
||||
typedef ULONG
|
||||
(DDKAPI *PCAM_PROCESS_PACKET_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PVOID CurrentFrameContext,
|
||||
PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket,
|
||||
PVOID SyncBuffer,
|
||||
PUSBD_ISO_PACKET_DESCRIPTOR DataPacket,
|
||||
PVOID DataBuffer,
|
||||
PBOOLEAN FrameComplete,
|
||||
PBOOLEAN NextFrameIsStill);
|
||||
|
||||
typedef ULONG
|
||||
(DDKAPI *PCAM_PROCESS_PACKET_ROUTINE_EX)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
PVOID CurrentFrameContext,
|
||||
PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket,
|
||||
PVOID SyncBuffer,
|
||||
PUSBD_ISO_PACKET_DESCRIPTOR DataPacket,
|
||||
PVOID DataBuffer,
|
||||
PBOOLEAN FrameComplete,
|
||||
PULONG PacketFlag,
|
||||
PULONG ValidDataOffset);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_STATE_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_START_CAPTURE_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_START_CAPTURE_ROUTINE_EX)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
ULONG StreamNumber);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_STOP_CAPTURE_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PCAM_STOP_CAPTURE_ROUTINE_EX)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext,
|
||||
ULONG StreamNumber);
|
||||
|
||||
typedef struct _USBCAMD_DEVICE_DATA {
|
||||
ULONG Sig;
|
||||
PCAM_INITIALIZE_ROUTINE CamInitialize;
|
||||
PCAM_INITIALIZE_ROUTINE CamUnInitialize;
|
||||
PCAM_PROCESS_PACKET_ROUTINE CamProcessUSBPacket;
|
||||
PCAM_NEW_FRAME_ROUTINE CamNewVideoFrame;
|
||||
PCAM_PROCESS_RAW_FRAME_ROUTINE CamProcessRawVideoFrame;
|
||||
PCAM_START_CAPTURE_ROUTINE CamStartCapture;
|
||||
PCAM_STOP_CAPTURE_ROUTINE CamStopCapture;
|
||||
PCAM_CONFIGURE_ROUTINE CamConfigure;
|
||||
PCAM_STATE_ROUTINE CamSaveState;
|
||||
PCAM_STATE_ROUTINE CamRestoreState;
|
||||
PCAM_ALLOCATE_BW_ROUTINE CamAllocateBandwidth;
|
||||
PCAM_FREE_BW_ROUTINE CamFreeBandwidth;
|
||||
} USBCAMD_DEVICE_DATA, *PUSBCAMD_DEVICE_DATA;
|
||||
|
||||
typedef struct _USBCAMD_DEVICE_DATA2 {
|
||||
ULONG Sig;
|
||||
PCAM_INITIALIZE_ROUTINE CamInitialize;
|
||||
PCAM_INITIALIZE_ROUTINE CamUnInitialize;
|
||||
PCAM_PROCESS_PACKET_ROUTINE_EX CamProcessUSBPacketEx;
|
||||
PCAM_NEW_FRAME_ROUTINE_EX CamNewVideoFrameEx;
|
||||
PCAM_PROCESS_RAW_FRAME_ROUTINE_EX CamProcessRawVideoFrameEx;
|
||||
PCAM_START_CAPTURE_ROUTINE_EX CamStartCaptureEx;
|
||||
PCAM_STOP_CAPTURE_ROUTINE_EX CamStopCaptureEx;
|
||||
PCAM_CONFIGURE_ROUTINE_EX CamConfigureEx;
|
||||
PCAM_STATE_ROUTINE CamSaveState;
|
||||
PCAM_STATE_ROUTINE CamRestoreState;
|
||||
PCAM_ALLOCATE_BW_ROUTINE_EX CamAllocateBandwidthEx;
|
||||
PCAM_FREE_BW_ROUTINE_EX CamFreeBandwidthEx;
|
||||
} USBCAMD_DEVICE_DATA2, *PUSBCAMD_DEVICE_DATA2;
|
||||
|
||||
USBCAMAPI
|
||||
ULONG
|
||||
DDKAPI
|
||||
USBCAMD_InitializeNewInterface(
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID DeviceData,
|
||||
IN ULONG Version,
|
||||
IN ULONG CamControlFlag);
|
||||
|
||||
typedef VOID
|
||||
(DDKAPI *PCOMMAND_COMPLETE_FUNCTION)(
|
||||
PVOID DeviceContext,
|
||||
PVOID CommandContext,
|
||||
NTSTATUS NtStatus);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PFNUSBCAMD_BulkReadWrite)(
|
||||
IN PVOID DeviceContext,
|
||||
IN USHORT PipeIndex,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG BufferLength,
|
||||
IN PCOMMAND_COMPLETE_FUNCTION CommandComplete,
|
||||
IN PVOID CommandContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PFNUSBCAMD_SetIsoPipeState)(
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG PipeStateFlags);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PFNUSBCAMD_CancelBulkReadWrite)(
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG PipeIndex);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PFNUSBCAMD_SetVideoFormat)(
|
||||
IN PVOID DeviceContext,
|
||||
IN PHW_STREAM_REQUEST_BLOCK pSrb);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI *PFNUSBCAMD_WaitOnDeviceEvent)(
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG PipeIndex,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG BufferLength,
|
||||
IN PCOMMAND_COMPLETE_FUNCTION EventComplete,
|
||||
IN PVOID EventContext,
|
||||
IN BOOLEAN LoopBack);
|
||||
|
||||
USBCAMAPI
|
||||
PVOID
|
||||
DDKAPI
|
||||
USBCAMD_AdapterReceivePacket(
|
||||
IN PHW_STREAM_REQUEST_BLOCK Srb,
|
||||
IN PUSBCAMD_DEVICE_DATA DeviceData,
|
||||
IN PDEVICE_OBJECT *DeviceObject,
|
||||
IN BOOLEAN NeedsCompletion);
|
||||
|
||||
USBCAMAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
USBCAMD_ControlVendorCommand(
|
||||
IN PVOID DeviceContext,
|
||||
IN UCHAR Request,
|
||||
IN USHORT Value,
|
||||
IN USHORT Index,
|
||||
IN PVOID Buffer,
|
||||
IN OUT PULONG BufferLength,
|
||||
IN BOOLEAN GetData,
|
||||
IN PCOMMAND_COMPLETE_FUNCTION CommandComplete,
|
||||
IN PVOID CommandContext);
|
||||
|
||||
typedef VOID
|
||||
(DDKAPI *PADAPTER_RECEIVE_PACKET_ROUTINE)(
|
||||
IN PHW_STREAM_REQUEST_BLOCK Srb);
|
||||
|
||||
USBCAMAPI
|
||||
ULONG
|
||||
DDKAPI
|
||||
USBCAMD_DriverEntry(
|
||||
PVOID Context1,
|
||||
PVOID Context2,
|
||||
ULONG DeviceContextSize,
|
||||
ULONG FrameContextSize,
|
||||
PADAPTER_RECEIVE_PACKET_ROUTINE ReceivePacket);
|
||||
|
||||
USBCAMAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
USBCAMD_GetRegistryKeyValue(
|
||||
IN HANDLE Handle,
|
||||
IN PWCHAR KeyNameString,
|
||||
IN ULONG KeyNameStringLength,
|
||||
IN PVOID Data,
|
||||
IN ULONG DataLength);
|
||||
|
||||
USBCAMAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
USBCAMD_SelectAlternateInterface(
|
||||
IN PVOID DeviceContext,
|
||||
IN OUT PUSBD_INTERFACE_INFORMATION RequestInterface);
|
||||
|
||||
#define USBCAMD_VERSION_200 0x200
|
||||
|
||||
typedef struct _USBCAMD_INTERFACE {
|
||||
INTERFACE Interface;
|
||||
PFNUSBCAMD_WaitOnDeviceEvent USBCAMD_WaitOnDeviceEvent;
|
||||
PFNUSBCAMD_BulkReadWrite USBCAMD_BulkReadWrite;
|
||||
PFNUSBCAMD_SetVideoFormat USBCAMD_SetVideoFormat;
|
||||
PFNUSBCAMD_SetIsoPipeState USBCAMD_SetIsoPipeState;
|
||||
PFNUSBCAMD_CancelBulkReadWrite USBCAMD_CancelBulkReadWrite;
|
||||
} USBCAMD_INTERFACE, *PUSBCAMD_INTERFACE;
|
||||
|
||||
typedef VOID
|
||||
(DDKAPI *PSTREAM_RECEIVE_PACKET)(
|
||||
IN PVOID Srb,
|
||||
IN PVOID DeviceContext,
|
||||
IN PBOOLEAN Completed);
|
||||
|
||||
#if defined(DEBUG_LOG)
|
||||
|
||||
USBCAMAPI
|
||||
VOID
|
||||
DDKAPI
|
||||
USBCAMD_Debug_LogEntry(
|
||||
IN CHAR *Name,
|
||||
IN ULONG Info1,
|
||||
IN ULONG Info2,
|
||||
IN ULONG Info3);
|
||||
|
||||
#define ILOGENTRY(sig, info1, info2, info3) \
|
||||
USBCAMD_Debug_LogEntry(sig, (ULONG)info1, (ULONG)info2, (ULONG)info3)
|
||||
|
||||
#else
|
||||
|
||||
#define ILOGENTRY(sig, info1, info2, info3)
|
||||
|
||||
#endif /* DEBUG_LOG */
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__USB_H) && !defined(__USBDI_H) */
|
||||
|
||||
|
||||
#endif /* __USBCAMDI_H */
|
|
@ -1,402 +0,0 @@
|
|||
/*
|
||||
* usbdi.h
|
||||
*
|
||||
* USBD and USB device driver definitions
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __USBDI_H
|
||||
#define __USBDI_H
|
||||
|
||||
#ifdef __USB_H
|
||||
#error usb.h cannot be included with usbdi.h
|
||||
#else
|
||||
|
||||
#include "usbioctl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define USBDI_VERSION 0x300
|
||||
|
||||
#define USB_DEFAULT_DEVICE_ADDRESS 0
|
||||
#define USB_DEFAULT_ENDPOINT_ADDRESS 0
|
||||
#define USB_DEFAULT_MAX_PACKET 64
|
||||
|
||||
#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1)
|
||||
|
||||
#define URB_FUNCTION_SELECT_CONFIGURATION 0x0000
|
||||
#define URB_FUNCTION_SELECT_INTERFACE 0x0001
|
||||
#define URB_FUNCTION_ABORT_PIPE 0x0002
|
||||
#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL 0x0003
|
||||
#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL 0x0004
|
||||
#define URB_FUNCTION_GET_FRAME_LENGTH 0x0005
|
||||
#define URB_FUNCTION_SET_FRAME_LENGTH 0x0006
|
||||
#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER 0x0007
|
||||
#define URB_FUNCTION_CONTROL_TRANSFER 0x0008
|
||||
#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 0x0009
|
||||
#define URB_FUNCTION_ISOCH_TRANSFER 0x000A
|
||||
#define URB_FUNCTION_RESET_PIPE 0x001E
|
||||
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE 0x000B
|
||||
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT 0x0024
|
||||
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE 0x0028
|
||||
#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE 0x000C
|
||||
#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT 0x0025
|
||||
#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE 0x0029
|
||||
#define URB_FUNCTION_SET_FEATURE_TO_DEVICE 0x000D
|
||||
#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE 0x000E
|
||||
#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT 0x000F
|
||||
#define URB_FUNCTION_SET_FEATURE_TO_OTHER 0x0023
|
||||
#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE 0x0010
|
||||
#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE 0x0011
|
||||
#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT 0x0012
|
||||
#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER 0x0022
|
||||
#define URB_FUNCTION_GET_STATUS_FROM_DEVICE 0x0013
|
||||
#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE 0x0014
|
||||
#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT 0x0015
|
||||
#define URB_FUNCTION_GET_STATUS_FROM_OTHER 0x0021
|
||||
#define URB_FUNCTION_RESERVED0 0x0016
|
||||
#define URB_FUNCTION_VENDOR_DEVICE 0x0017
|
||||
#define URB_FUNCTION_VENDOR_INTERFACE 0x0018
|
||||
#define URB_FUNCTION_VENDOR_ENDPOINT 0x0019
|
||||
#define URB_FUNCTION_VENDOR_OTHER 0x0020
|
||||
#define URB_FUNCTION_CLASS_DEVICE 0x001A
|
||||
#define URB_FUNCTION_CLASS_INTERFACE 0x001B
|
||||
#define URB_FUNCTION_CLASS_ENDPOINT 0x001C
|
||||
#define URB_FUNCTION_CLASS_OTHER 0x001F
|
||||
#define URB_FUNCTION_RESERVED 0x001D
|
||||
#define URB_FUNCTION_GET_CONFIGURATION 0x0026
|
||||
#define URB_FUNCTION_GET_INTERFACE 0x0027
|
||||
#define URB_FUNCTION_LAST 0x0029
|
||||
|
||||
typedef LONG USBD_STATUS;
|
||||
typedef PVOID USBD_PIPE_HANDLE;
|
||||
typedef PVOID USBD_CONFIGURATION_HANDLE;
|
||||
typedef PVOID USBD_INTERFACE_HANDLE;
|
||||
|
||||
#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)
|
||||
#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3)
|
||||
#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)
|
||||
#define USBD_STATUS(Status) ((ULONG)(Status) & 0x0FFFFFFFL)
|
||||
#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
|
||||
|
||||
#define USBD_STATUS_SUCCESS ((USBD_STATUS)0x00000000L)
|
||||
#define USBD_STATUS_PENDING ((USBD_STATUS)0x40000000L)
|
||||
#define USBD_STATUS_HALTED ((USBD_STATUS)0xC0000000L)
|
||||
#define USBD_STATUS_ERROR ((USBD_STATUS)0x80000000L)
|
||||
#define USBD_STATUS_NO_MEMORY ((USBD_STATUS)0x80000100L)
|
||||
#define USBD_STATUS_INVALID_URB_FUNCTION ((USBD_STATUS)0x80000200L)
|
||||
#define USBD_STATUS_INVALID_PARAMETER ((USBD_STATUS)0x80000300L)
|
||||
#define USBD_STATUS_ERROR_BUSY ((USBD_STATUS)0x80000400L)
|
||||
#define USBD_STATUS_REQUEST_FAILED ((USBD_STATUS)0x80000500L)
|
||||
#define USBD_STATUS_INVALID_PIPE_HANDLE ((USBD_STATUS)0x80000600L)
|
||||
#define USBD_STATUS_NO_BANDWIDTH ((USBD_STATUS)0x80000700L)
|
||||
#define USBD_STATUS_INTERNAL_HC_ERROR ((USBD_STATUS)0x80000800L)
|
||||
#define USBD_STATUS_ERROR_SHORT_TRANSFER ((USBD_STATUS)0x80000900L)
|
||||
#define USBD_STATUS_CRC ((USBD_STATUS)0xC0000001L)
|
||||
#define USBD_STATUS_BTSTUFF ((USBD_STATUS)0xC0000002L)
|
||||
#define USBD_STATUS_DATA_TOGGLE_MISMATCH ((USBD_STATUS)0xC0000003L)
|
||||
#define USBD_STATUS_STALL_PID ((USBD_STATUS)0xC0000004L)
|
||||
#define USBD_STATUS_DEV_NOT_RESPONDING ((USBD_STATUS)0xC0000005L)
|
||||
#define USBD_STATUS_PID_CHECK_FAILURE ((USBD_STATUS)0xC0000006L)
|
||||
#define USBD_STATUS_UNEXPECTED_PID ((USBD_STATUS)0xC0000007L)
|
||||
#define USBD_STATUS_DATA_OVERRUN ((USBD_STATUS)0xC0000008L)
|
||||
#define USBD_STATUS_DATA_UNDERRUN ((USBD_STATUS)0xC0000009L)
|
||||
#define USBD_STATUS_RESERVED1 ((USBD_STATUS)0xC000000AL)
|
||||
#define USBD_STATUS_RESERVED2 ((USBD_STATUS)0xC000000BL)
|
||||
#define USBD_STATUS_BUFFER_OVERRUN ((USBD_STATUS)0xC000000CL)
|
||||
#define USBD_STATUS_BUFFER_UNDERRUN ((USBD_STATUS)0xC000000DL)
|
||||
#define USBD_STATUS_NOT_ACCESSED ((USBD_STATUS)0xC000000FL)
|
||||
#define USBD_STATUS_FIFO ((USBD_STATUS)0xC0000010L)
|
||||
#define USBD_STATUS_ENDPOINT_HALTED ((USBD_STATUS)0xC0000030L)
|
||||
#define USBD_STATUS_BAD_START_FRAME ((USBD_STATUS)0xC0000A00L)
|
||||
#define USBD_STATUS_ISOCH_REQUEST_FAILED ((USBD_STATUS)0xC0000B00L)
|
||||
#define USBD_STATUS_FRAME_CONTROL_OWNED ((USBD_STATUS)0xC0000C00L)
|
||||
#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \
|
||||
((USBD_STATUS)0xC0000D00L)
|
||||
#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \
|
||||
((USBD_STATUS)0xC0000F00L)
|
||||
#define USBD_STATUS_CANCELING ((USBD_STATUS)0x00020000L)
|
||||
|
||||
#define USBD_PIPE_DIRECTION_IN(pipeInformation) \
|
||||
((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
|
||||
|
||||
struct _URB_HEADER {
|
||||
USHORT Length;
|
||||
USHORT Function;
|
||||
USBD_STATUS Status;
|
||||
PVOID UsbdDeviceHandle;
|
||||
ULONG UsbdFlags;
|
||||
};
|
||||
|
||||
struct _URB_HCD_AREA {
|
||||
PVOID HcdEndpoint;
|
||||
PIRP HcdIrp;
|
||||
LIST_ENTRY HcdListEntry;
|
||||
LIST_ENTRY HcdListEntry2;
|
||||
PVOID HcdCurrentIoFlushPointer;
|
||||
PVOID HcdExtension;
|
||||
};
|
||||
|
||||
struct _URB_BULK_OR_INTERRUPT_TRANSFER {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_DESCRIPTOR_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
USHORT Reserved1;
|
||||
UCHAR Index;
|
||||
UCHAR DescriptorType;
|
||||
USHORT LanguageId;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_FEATURE_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved2;
|
||||
ULONG Reserved3;
|
||||
PVOID Reserved4;
|
||||
PMDL Reserved5;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
USHORT Reserved0;
|
||||
USHORT FeatureSelector;
|
||||
USHORT Index;
|
||||
USHORT Reserved1;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[8];
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_INTERFACE_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[4];
|
||||
USHORT Interface;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_STATUS_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[4];
|
||||
USHORT Index;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_TRANSFER {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR SetupPacket[8];
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR RequestTypeReservedBits;
|
||||
UCHAR Request;
|
||||
USHORT Value;
|
||||
USHORT Index;
|
||||
USHORT Reserved1;
|
||||
};
|
||||
|
||||
struct _URB_FRAME_LENGTH_CONTROL {
|
||||
struct _URB_HEADER Hdr;
|
||||
};
|
||||
|
||||
struct _URB_GET_CURRENT_FRAME_NUMBER {
|
||||
struct _URB_HEADER Hdr;
|
||||
ULONG FrameNumber;
|
||||
};
|
||||
|
||||
struct _URB_GET_FRAME_LENGTH {
|
||||
struct _URB_HEADER Hdr;
|
||||
ULONG FrameLength;
|
||||
ULONG FrameNumber;
|
||||
};
|
||||
|
||||
typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
|
||||
ULONG Offset;
|
||||
ULONG Length;
|
||||
USBD_STATUS Status;
|
||||
} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
|
||||
|
||||
struct _URB_ISOCH_TRANSFER {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
ULONG StartFrame;
|
||||
ULONG NumberOfPackets;
|
||||
ULONG ErrorCount;
|
||||
USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
|
||||
};
|
||||
|
||||
struct _URB_PIPE_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG Reserved;
|
||||
};
|
||||
|
||||
struct _URB_SET_FRAME_LENGTH {
|
||||
struct _URB_HEADER Hdr;
|
||||
LONG FrameLengthDelta;
|
||||
};
|
||||
|
||||
typedef struct _USBD_DEVICE_INFORMATION {
|
||||
ULONG OffsetNext;
|
||||
PVOID UsbdDeviceHandle;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION;
|
||||
|
||||
typedef enum _USBD_PIPE_TYPE {
|
||||
UsbdPipeTypeControl,
|
||||
UsbdPipeTypeIsochronous,
|
||||
UsbdPipeTypeBulk,
|
||||
UsbdPipeTypeInterrupt
|
||||
} USBD_PIPE_TYPE;
|
||||
|
||||
/* USBD_PIPE_INFORMATION.PipeFlags constants */
|
||||
#define USBD_PF_CHANGE_MAX_PACKET 0x00000001
|
||||
#define USBD_PF_DOUBLE_BUFFER 0x00000002
|
||||
#define USBD_PF_ENABLE_RT_THREAD_ACCESS 0x00000004
|
||||
#define USBD_PF_MAP_ADD_TRANSFERS 0x00000008
|
||||
|
||||
typedef struct _USBD_PIPE_INFORMATION {
|
||||
USHORT MaximumPacketSize;
|
||||
UCHAR EndpointAddress;
|
||||
UCHAR Interval;
|
||||
USBD_PIPE_TYPE PipeType;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG MaximumTransferSize;
|
||||
ULONG PipeFlags;
|
||||
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
|
||||
|
||||
typedef struct _USBD_INTERFACE_INFORMATION {
|
||||
USHORT Length;
|
||||
UCHAR InterfaceNumber;
|
||||
UCHAR AlternateSetting;
|
||||
UCHAR Class;
|
||||
UCHAR SubClass;
|
||||
UCHAR Protocol;
|
||||
UCHAR Reserved;
|
||||
USBD_INTERFACE_HANDLE InterfaceHandle;
|
||||
ULONG NumberOfPipes;
|
||||
USBD_PIPE_INFORMATION Pipes[1];
|
||||
} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
|
||||
|
||||
struct _URB_SELECT_CONFIGURATION {
|
||||
struct _URB_HEADER Hdr;
|
||||
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
|
||||
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
|
||||
USBD_INTERFACE_INFORMATION Interface;
|
||||
};
|
||||
|
||||
struct _URB_SELECT_INTERFACE {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
|
||||
USBD_INTERFACE_INFORMATION Interface;
|
||||
};
|
||||
|
||||
typedef struct _USBD_VERSION_INFORMATION {
|
||||
ULONG USBDI_Version;
|
||||
ULONG Supported_USB_Version;
|
||||
} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
|
||||
|
||||
typedef struct _URB {
|
||||
union {
|
||||
struct _URB_HEADER UrbHeader;
|
||||
struct _URB_SELECT_INTERFACE UrbSelectInterface;
|
||||
struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
|
||||
struct _URB_PIPE_REQUEST UrbPipeRequest;
|
||||
struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
|
||||
struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
|
||||
struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
|
||||
struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
|
||||
struct _URB_CONTROL_TRANSFER UrbControlTransfer;
|
||||
struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
|
||||
struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
|
||||
struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
|
||||
struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
|
||||
struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
|
||||
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
|
||||
struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
|
||||
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
|
||||
};
|
||||
} URB, *PURB;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* defined __USB_H */
|
||||
|
||||
#endif /* __USBDI_H */
|
|
@ -1,12 +1,9 @@
|
|||
#ifndef USBDLIB_H__
|
||||
#define USBDLIB_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
typedef struct _USBD_INTERFACE_LIST_ENTRY
|
||||
{
|
||||
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
|
||||
PUSBD_INTERFACE_INFORMATION Interface;
|
||||
}USBD_INTERFACE_LIST_ENTRY, *PUSBD_INTERFACE_LIST_ENTRY;
|
||||
typedef struct _USBD_INTERFACE_LIST_ENTRY {
|
||||
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
|
||||
PUSBD_INTERFACE_INFORMATION Interface;
|
||||
} USBD_INTERFACE_LIST_ENTRY, *PUSBD_INTERFACE_LIST_ENTRY;
|
||||
|
||||
#define UsbBuildInterruptOrBulkTransferRequest(urb,length, pipeHandle, transferBuffer, transferBufferMDL, transferBufferLength, transferFlags, link) \
|
||||
{ \
|
||||
|
@ -44,7 +41,6 @@ typedef struct _USBD_INTERFACE_LIST_ENTRY
|
|||
(urb)->UrbControlGetStatusRequest.UrbLink = (link); \
|
||||
}
|
||||
|
||||
|
||||
#define UsbBuildFeatureRequest(urb, op, featureSelector, index, link) \
|
||||
{ \
|
||||
(urb)->UrbHeader.Function = (op); \
|
||||
|
@ -120,102 +116,87 @@ typedef struct _USBD_INTERFACE_LIST_ENTRY
|
|||
#define GET_ISO_URB_SIZE(n) (sizeof(struct _URB_ISOCH_TRANSFER)+ \
|
||||
sizeof(USBD_ISO_PACKET_DESCRIPTOR)*n)
|
||||
|
||||
|
||||
#ifndef _USBD_
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
VOID
|
||||
NTAPI
|
||||
USBD_GetUSBDIVersion(
|
||||
OUT PUSBD_VERSION_INFORMATION VersionInformation
|
||||
);
|
||||
|
||||
OUT PUSBD_VERSION_INFORMATION VersionInformation);
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
PUSB_INTERFACE_DESCRIPTOR
|
||||
NTAPI
|
||||
USBD_ParseConfigurationDescriptor(
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN UCHAR InterfaceNumber,
|
||||
IN UCHAR AlternateSetting
|
||||
);
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN UCHAR InterfaceNumber,
|
||||
IN UCHAR AlternateSetting);
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
PURB
|
||||
NTAPI
|
||||
USBD_CreateConfigurationRequest(
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
OUT PUSHORT Siz
|
||||
);
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
OUT PUSHORT Siz);
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
PUSB_COMMON_DESCRIPTOR
|
||||
NTAPI
|
||||
USBD_ParseDescriptors(
|
||||
IN PVOID DescriptorBuffer,
|
||||
IN ULONG TotalLength,
|
||||
IN PVOID StartPosition,
|
||||
IN LONG DescriptorType
|
||||
);
|
||||
IN PVOID DescriptorBuffer,
|
||||
IN ULONG TotalLength,
|
||||
IN PVOID StartPosition,
|
||||
IN LONG DescriptorType);
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
PUSB_INTERFACE_DESCRIPTOR
|
||||
NTAPI
|
||||
USBD_ParseConfigurationDescriptorEx(
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN PVOID StartPosition,
|
||||
IN LONG InterfaceNumber,
|
||||
IN LONG AlternateSetting,
|
||||
IN LONG InterfaceClass,
|
||||
IN LONG InterfaceSubClass,
|
||||
IN LONG InterfaceProtocol
|
||||
);
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN PVOID StartPosition,
|
||||
IN LONG InterfaceNumber,
|
||||
IN LONG AlternateSetting,
|
||||
IN LONG InterfaceClass,
|
||||
IN LONG InterfaceSubClass,
|
||||
IN LONG InterfaceProtocol);
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
PURB
|
||||
NTAPI
|
||||
USBD_CreateConfigurationRequestEx(
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN PUSBD_INTERFACE_LIST_ENTRY InterfaceList
|
||||
);
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN PUSBD_INTERFACE_LIST_ENTRY InterfaceList);
|
||||
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
DECLSPEC_EXPORT
|
||||
ULONG
|
||||
NTAPI
|
||||
USBD_GetInterfaceLength(
|
||||
IN PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor,
|
||||
IN PUCHAR BufferEnd
|
||||
);
|
||||
IN PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor,
|
||||
IN PUCHAR BufferEnd);
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
DECLSPEC_EXPORT
|
||||
VOID
|
||||
NTAPI
|
||||
USBD_RegisterHcFilter(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PDEVICE_OBJECT FilterDeviceObject
|
||||
);
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PDEVICE_OBJECT FilterDeviceObject);
|
||||
|
||||
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
DECLSPEC_EXPORT
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
USBD_GetPdoRegistryParameter(
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
||||
IN PVOID Parameter,
|
||||
IN ULONG ParameterLength,
|
||||
IN PWSTR KeyName,
|
||||
IN ULONG KeyNameLength
|
||||
);
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
||||
IN OUT PVOID Parameter,
|
||||
IN ULONG ParameterLength,
|
||||
IN PWSTR KeyName,
|
||||
IN ULONG KeyNameLength);
|
||||
|
||||
DECLSPEC_IMPORT
|
||||
DECLSPEC_EXPORT
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
USBD_QueryBusTime(
|
||||
IN PDEVICE_OBJECT RootHubPdo,
|
||||
OUT PULONG CurrentFrame
|
||||
);
|
||||
IN PDEVICE_OBJECT RootHubPdo,
|
||||
OUT PULONG CurrentFrame);
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
|
||||
|
@ -223,10 +204,9 @@ DECLSPEC_IMPORT
|
|||
ULONG
|
||||
NTAPI
|
||||
USBD_CalculateUsbBandwidth(
|
||||
IN ULONG MaxPacketSize,
|
||||
IN UCHAR EndpointType,
|
||||
IN BOOLEAN LowSpeed
|
||||
);
|
||||
IN ULONG MaxPacketSize,
|
||||
IN UCHAR EndpointType,
|
||||
IN BOOLEAN LowSpeed);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -236,15 +216,11 @@ DECLSPEC_IMPORT
|
|||
USBD_STATUS
|
||||
NTAPI
|
||||
USBD_ValidateConfigurationDescriptor(
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDesc,
|
||||
IN ULONG BufferLength,
|
||||
IN USHORT Level,
|
||||
OUT PUCHAR *Offset,
|
||||
IN ULONG Tag
|
||||
);
|
||||
|
||||
|
||||
#endif
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDesc,
|
||||
IN ULONG BufferLength,
|
||||
IN USHORT Level,
|
||||
OUT PUCHAR *Offset,
|
||||
IN ULONG Tag OPTIONAL);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
9
reactos/include/ddk/usbdrivr.h
Normal file
9
reactos/include/ddk/usbdrivr.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#define USB_KERNEL_IOCTL
|
||||
#include "usbioctl.h"
|
||||
#undef USB_KERNEL_IOCTL
|
||||
|
||||
#include "usb.h"
|
||||
#include "usbdlib.h"
|
||||
#include "usbbusif.h"
|
|
@ -1,348 +0,0 @@
|
|||
/*
|
||||
* usbioctl.h
|
||||
*
|
||||
* USB IOCTL interface.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __USBIOCTL_H
|
||||
#define __USBIOCTL_H
|
||||
|
||||
#include "usb100.h"
|
||||
#include "usbiodef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define USBD_PORT_ENABLED 1
|
||||
#define USBD_PORT_CONNECTED 2
|
||||
|
||||
#define IOCTL_INTERNAL_USB_CYCLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUS_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_RESET_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_URB \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_HUB_CAPABILITIES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_ROOT_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_GET_HCD_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_DISABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_1 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_2 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
|
||||
typedef struct _USB_HUB_CAPABILITIES {
|
||||
ULONG HubIs2xCapable : 1;
|
||||
} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES;
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth,
|
||||
DeviceHubNestedTooDeeply,
|
||||
DeviceInLegacyHub
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef struct _USB_DESCRIPTOR_REQUEST {
|
||||
ULONG ConnectionIndex;
|
||||
struct {
|
||||
UCHAR bmRequest;
|
||||
UCHAR bRequest;
|
||||
USHORT wValue;
|
||||
USHORT wIndex;
|
||||
USHORT wLength;
|
||||
} SetupPacket;
|
||||
UCHAR Data[0];
|
||||
} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST;
|
||||
|
||||
typedef struct _USB_HCD_DRIVERKEY_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _HCD_ISO_STAT_COUNTERS {
|
||||
USHORT LateUrbs;
|
||||
USHORT DoubleBufferedPackets;
|
||||
USHORT TransfersCF_5ms;
|
||||
USHORT TransfersCF_2ms;
|
||||
USHORT TransfersCF_1ms;
|
||||
USHORT MaxInterruptLatency;
|
||||
USHORT BadStartFrame;
|
||||
USHORT StaleUrbs;
|
||||
USHORT IsoPacketNotAccesed;
|
||||
USHORT IsoPacketHWError;
|
||||
USHORT SmallestUrbPacketCount;
|
||||
USHORT LargestUrbPacketCount;
|
||||
USHORT IsoCRC_Error;
|
||||
USHORT IsoOVERRUN_Error;
|
||||
USHORT IsoINTERNAL_Error;
|
||||
USHORT IsoUNKNOWN_Error;
|
||||
ULONG IsoBytesTransferred;
|
||||
USHORT LateMissedCount;
|
||||
USHORT HWIsoMissedCount;
|
||||
ULONG Reserved7[8];
|
||||
} HCD_ISO_STAT_COUNTERS, *PHCD_ISO_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_COUNTERS {
|
||||
ULONG BytesTransferred;
|
||||
USHORT IsoMissedCount;
|
||||
USHORT DataOverrunErrorCount;
|
||||
USHORT CrcErrorCount;
|
||||
USHORT ScheduleOverrunCount;
|
||||
USHORT TimeoutErrorCount;
|
||||
USHORT InternalHcErrorCount;
|
||||
USHORT BufferOverrunErrorCount;
|
||||
USHORT SWErrorCount;
|
||||
USHORT StallPidCount;
|
||||
USHORT PortDisableCount;
|
||||
} HCD_STAT_COUNTERS, *PHCD_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_1 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
} HCD_STAT_INFORMATION_1, *PHCD_STAT_INFORMATION_1;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_2 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
LONG LockedMemoryUsed;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
HCD_ISO_STAT_COUNTERS IsoCounters;
|
||||
} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2;
|
||||
|
||||
typedef struct _USB_HUB_INFORMATION {
|
||||
USB_HUB_DESCRIPTOR HubDescriptor;
|
||||
BOOLEAN HubIsBusPowered;
|
||||
} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
|
||||
|
||||
typedef struct _USB_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR HubName[1];
|
||||
} USB_HUB_NAME, *PUSB_HUB_NAME;
|
||||
|
||||
typedef enum _USB_HUB_NODE {
|
||||
UsbHub,
|
||||
UsbMIParent
|
||||
} USB_HUB_NODE;
|
||||
|
||||
typedef VOID NTAPI
|
||||
(*USB_IDLE_CALLBACK)(
|
||||
PVOID Context);
|
||||
|
||||
typedef struct _USB_IDLE_CALLBACK_INFO {
|
||||
USB_IDLE_CALLBACK IdleCallback;
|
||||
PVOID IdleContext;
|
||||
} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
ULONG PortAttributes;
|
||||
} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _USB_PIPE_INFO {
|
||||
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
|
||||
ULONG ScheduleOffset;
|
||||
} USB_PIPE_INFO, *PUSB_PIPE_INFO;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_INFORMATION {
|
||||
ULONG ConnectionIndex;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
BOOLEAN LowSpeed;
|
||||
BOOLEAN DeviceIsHub;
|
||||
USHORT DeviceAddress;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
USB_PIPE_INFO PipeList[0];
|
||||
} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR NodeName[1];
|
||||
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
|
||||
|
||||
typedef struct _USB_MI_PARENT_INFORMATION {
|
||||
ULONG NumberOfInterfaces;
|
||||
} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_INFORMATION {
|
||||
USB_HUB_NODE NodeType;
|
||||
union {
|
||||
USB_HUB_INFORMATION HubInformation;
|
||||
USB_MI_PARENT_INFORMATION MiParentInformation;
|
||||
} u;
|
||||
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
|
||||
|
||||
#define WMI_USB_DRIVER_INFORMATION 0
|
||||
#define WMI_USB_DRIVER_NOTIFICATION 1
|
||||
#define WMI_USB_POWER_DEVICE_ENABLE 2
|
||||
|
||||
typedef enum _USB_NOTIFICATION_TYPE {
|
||||
EnumerationFailure = 0,
|
||||
InsufficentBandwidth,
|
||||
InsufficentPower,
|
||||
OverCurrent,
|
||||
ResetOvercurrent,
|
||||
AcquireBusInfo,
|
||||
AcquireHubName,
|
||||
AcquireControllerName,
|
||||
HubOvercurrent,
|
||||
HubPowerChange,
|
||||
HubNestedTooDeeply,
|
||||
ModernDeviceInLegacyHub
|
||||
} USB_NOTIFICATION_TYPE;
|
||||
|
||||
typedef struct _USB_ACQUIRE_INFO {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalSize;
|
||||
WCHAR Buffer[1];
|
||||
} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO;
|
||||
|
||||
typedef struct _USB_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
} USB_NOTIFICATION, *PUSB_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_BUS_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
ULONG ControllerNameLength;
|
||||
} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_CONNECTION_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG ConnectionNumber;
|
||||
ULONG RequestedBandwidth;
|
||||
ULONG EnumerationFailReason;
|
||||
ULONG PowerRequested;
|
||||
ULONG HubNameLength;
|
||||
} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_ROOT_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR RootHubName[1];
|
||||
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __USBIOCTL_H */
|
|
@ -1,15 +1,3 @@
|
|||
|
||||
#ifndef __USBKERN_H__
|
||||
#define __USBKERN_H__
|
||||
#pragma once
|
||||
|
||||
#include "usbiodef.h"
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT USB_KERNEL_CTL(USB_GET_HUB_COUNT)
|
||||
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO USB_KERNEL_CTL(USB_GET_ROOTHUB_PDO)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
#define USBPRINT_IOCTL_INDEX 0x0000
|
||||
|
||||
#define IOCTL_USBPRINT_GET_LPT_STATUS \
|
||||
CTL_CODE(FILE_DEVICE_UNKNOWN, USBPRINT_IOCTL_INDEX+12, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
|
@ -14,4 +14,3 @@
|
|||
|
||||
#define IOCTL_USBPRINT_SOFT_RESET \
|
||||
CTL_CODE(FILE_DEVICE_UNKNOWN, USBPRINT_IOCTL_INDEX+16, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
|
|
677
reactos/include/ddk/usbprotocoldefs.h
Normal file
677
reactos/include/ddk/usbprotocoldefs.h
Normal file
|
@ -0,0 +1,677 @@
|
|||
#pragma once
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
#define USB_UnConnected_Device_Address 0
|
||||
#define USB_UNCONNECTED_ADDRESS(address) ( USB_UnConnected_Device_Address == (address))
|
||||
#define USB_CONNECTED_ADDRESS(address) ( USB_UnConnected_Device_Address != (address) )
|
||||
|
||||
#define PID_OUT 1
|
||||
#define PID_IN 9
|
||||
#define PID_SOF 5
|
||||
#define PID_SETUP 13
|
||||
|
||||
#define PID_DATA0 3
|
||||
#define PID_DATA1 11
|
||||
#define PID_DATA2 7
|
||||
#define PID_MDATA 15
|
||||
|
||||
#define USB_ACK 2
|
||||
#define USB_NAK 10
|
||||
#define USB_STALL 14
|
||||
#define USB_NYET 6
|
||||
|
||||
#define USB_PRE 12
|
||||
#define USB_ERR 12
|
||||
#define USB_SPLIT 8
|
||||
#define USB_PING 4
|
||||
|
||||
#define USB_TIMEOUT 0
|
||||
|
||||
#define USB_SPEC 0x0200
|
||||
#define HID_SPEC 0x0101
|
||||
|
||||
#define USB_20_SPEC 0x0200
|
||||
#define USB_11_SPEC 0x0110
|
||||
#define USB_10_SPEC 0x0100
|
||||
|
||||
#define HID_MAX_PACKET_SIZE0 0x08
|
||||
#define MICROSOFT_VENDOR_ID 0x045E
|
||||
#define HID_DEVICE_RELEASE 0x0100
|
||||
|
||||
#define HID_MAX_PACKET_SIZE 0x0008
|
||||
#define HID_POLLING_INTERVAL 0x0A
|
||||
#define MAX_POLLING_INTERVAL 0xFF
|
||||
|
||||
#define USB_DEFAULT_KEYBOARD_PRODUCT_ID 0x000B
|
||||
#define USB_DEFAULT_MOUSE_PRODUCT_ID 0x0040
|
||||
|
||||
#define DEVICE_DESCRIPTOR 0x01
|
||||
#define CONFIGURATION_DESCRIPTOR 0x02
|
||||
#define STRING_DESCRIPTOR 0x03
|
||||
#define INTERFACE_DESCRIPTOR 0x04
|
||||
#define ENDPOINT_DESCRIPTOR 0x05
|
||||
#define QUALIFIER_DESCRIPTOR 0x06
|
||||
#define OTHER_SPEED_DESCRIPTOR 0x07
|
||||
#define INTERFACE_POWER_DESCRIPTOR 0x08
|
||||
|
||||
#define HID_DESCRIPTOR 0x21
|
||||
#define REPORT_DESCRIPTOR 0x22
|
||||
#define PHYSICAL_DESCRIPTOR 0x23
|
||||
#define HUB_DESCRIPTOR 0x29
|
||||
|
||||
#define USB_DESCRIPTOR_TYPE_STD 0
|
||||
#define USB_DESCRIPTOR_TYPE_CLASS 1
|
||||
#define USB_DESCRIPTOR_TYPE_VENDOR 2
|
||||
#define USB_DESCRIPTOR_TYPE_RESERVED 3
|
||||
|
||||
#define DIR_HOST_TO_DEVICE 0
|
||||
#define DIR_DEVICE_TO_HOST 1
|
||||
|
||||
#define TYPE_STANDARD 0
|
||||
#define TYPE_CLASS 1
|
||||
#define TYPE_VENDOR 2
|
||||
#define TYPE_RESERVED 3
|
||||
|
||||
#define RCPT_DEVICE 0
|
||||
#define RCPT_INTERFACE 1
|
||||
#define RCPT_ENDPOINT 2
|
||||
#define RCPT_OTHER 3
|
||||
#define RCPT_PORT 4
|
||||
#define RCPT_RPIPE 5
|
||||
|
||||
#if !defined(MIDL_PASS)
|
||||
#define USB_MAKE_REQUEST_TYPE(direction, type, recipient) (BYTE)( ((BYTE)direction << 7) | ((BYTE)type << 5) | ((BYTE)recipient & 0x07) )
|
||||
#endif
|
||||
|
||||
#define GET_STATUS 0
|
||||
#define CLEAR_FEATURE 1
|
||||
#define SET_FEATURE 3
|
||||
#define SET_ADDRESS 5
|
||||
#define GET_DESCRIPTOR 6
|
||||
#define SET_DESCRIPTOR 7
|
||||
#define GET_CONFIGURATION 8
|
||||
#define SET_CONFIGURATION 9
|
||||
#define GET_INTERFACE 10
|
||||
#define SET_INTERFACE 11
|
||||
#define SYNCH_FRAME 12
|
||||
|
||||
#define USB_BULK_ONLY_MASS_STG_RESET 0xFF
|
||||
#define USB_BULK_ONLY_MASS_STG_GET_MAX_LUN 0xFE
|
||||
|
||||
#define GET_REPORT 0x01
|
||||
#define GET_IDLE 0x02
|
||||
#define GET_PROTOCOL 0x03
|
||||
#define SET_REPORT 0x09
|
||||
#define SET_IDLE 0x0A
|
||||
#define SET_PROTOCOL 0x0B
|
||||
|
||||
#define ADD_MMC_IE 20
|
||||
#define REMOVE_MMC_IE 21
|
||||
#define SET_NUM_DNTS 22
|
||||
#define SET_CLUSTER_ID 23
|
||||
#define SET_DEVICE_INFO 24
|
||||
#define GET_TIME 25
|
||||
#define SET_STREAM_INDEX 26
|
||||
#define SET_WUSB_MAS 27
|
||||
#define WUSB_CH_STOP 28
|
||||
|
||||
#define EXEC_RC_CMD 40
|
||||
|
||||
#define TIME_ADJ 0x01
|
||||
#define TIME_BPST 0x02
|
||||
#define TIME_WUSB 0x03
|
||||
|
||||
#define HID_REPORT_TYPE_INPUT 0x01
|
||||
#define HID_REPORT_TYPE_OUTPUT 0x02
|
||||
#define HID_REPORT_TYPE_FEATURE 0x03
|
||||
|
||||
#define HID_PROTOCOL_TYPE_BOOT 0x00
|
||||
#define HID_PROTOCOL_TYPE_REPORT 0x01
|
||||
|
||||
#define HUB_DEVICE_PROTOCOL_1X 0
|
||||
#define HUB_DEVICE_PROTOCOL_SINGLE_TT 1
|
||||
#define HUB_DEVICE_PROTOCOL_MULTI_TT 2
|
||||
|
||||
#define HUB_INTERFACE_PROTOCOL_1X 0
|
||||
#define HUB_INTERFACE_PROTOCOL_SINGLE_TT 0
|
||||
#define HUB_INTERFACE_PROTOCOL_MULTI_TT_IN_SINGLE_TT_MODE 1
|
||||
#define HUB_INTERFACE_PROTOCOL_MULTI_TT_IN_MULTI_TT_MODE 2
|
||||
|
||||
#define CLEAR_TT_BUFFER 8
|
||||
#define RESET_TT 9
|
||||
#define GET_TT_STATE 10
|
||||
#define STOP_TT 11
|
||||
|
||||
#define C_HUB_LOCAL_POWER 0
|
||||
#define C_HUB_OVER_CURRENT 1
|
||||
#define PORT_CONNECTION 0
|
||||
#define PORT_ENABLE 1
|
||||
#define PORT_SUSPEND 2
|
||||
#define PORT_OVER_CURRENT 3
|
||||
#define PORT_RESET 4
|
||||
#define PORT_POWER 8
|
||||
#define PORT_LOW_SPEED 9
|
||||
#define C_PORT_CONNECTION 16
|
||||
#define C_PORT_ENABLE 17
|
||||
#define C_PORT_SUSPEND 18
|
||||
#define C_PORT_OVER_CURRENT 19
|
||||
#define C_PORT_RESET 20
|
||||
#define PORT_TEST 21
|
||||
#define PORT_INDICATOR 22
|
||||
|
||||
#define USBSETUPSIZE 8
|
||||
#define USBINREQUEST 128
|
||||
|
||||
#define BM_GET_DEVICE 128
|
||||
#define BM_GET_INTERFACE 129
|
||||
#define BM_GET_ENDPOINT 130
|
||||
|
||||
#define BM_SET_DEVICE 0
|
||||
#define BM_SET_INTERFACE 1
|
||||
#define BM_SET_ENDPOINT 2
|
||||
|
||||
#define HALT_ENDPOINT 0
|
||||
#define REMOTE_WAKEUP 1
|
||||
#define TEST_MODE 2
|
||||
|
||||
#define DEVICE_DESCRIPTION_TYPE 0x100
|
||||
#define QUALIFIER_DESCRIPTION_TYPE 0x600
|
||||
#define OTHER_SPEED_DESCRIPTION_TYPE 0x700
|
||||
#define CONFIG_DESCRIPTION_TYPE 0x200
|
||||
#define STRING_DESCRIPTION_TYPE 0x300
|
||||
#define MSOS_DESCRIPTION_TYPE 0x3EE
|
||||
|
||||
#define CONFIG_BUS_POWERED 0x80
|
||||
#define CONFIG_SELF_POWERED 0x40
|
||||
#define CONFIG_REMOTE_WAKEUP 0x20
|
||||
|
||||
#define USB_WA_MULTIFUNCTION 0x02
|
||||
#define USB_WA_PROTOCOL 0x01
|
||||
#define USB_RADIO_CONTROL 0x2
|
||||
|
||||
#define USB_HID_CLASS_CODE 0x03
|
||||
#define USB_MASS_STORAGE_CLASS_CODE 0x08
|
||||
#define USB_HUB_CLASS_CODE 0x09
|
||||
#define USB_MISCELLANEOUS 0xEF
|
||||
#define USB_WIRELESS_WA 0xE0
|
||||
|
||||
#define BOOT_INTERFACE_SUBCLASS 0x01
|
||||
#define COMMON_CLASS 0x02
|
||||
#define USB_RF_CONTROL 0x01
|
||||
|
||||
#define PROTOCOL_NONE 0x00
|
||||
#define PROTOCOL_KEYBOARD 0x01
|
||||
#define PROTOCOL_MOUSE 0x02
|
||||
|
||||
#define EP_OUT 0
|
||||
#define EP_IN 1
|
||||
|
||||
#define MAKE_ENDPOINT_ADDRESS(num, dir) ( ((BYTE)(dir) << 7) | ((BYTE)(num) & 0x0F) )
|
||||
|
||||
#define ENDPOINT_TYPE 0x03
|
||||
#define CONTROL_ENDPOINT 0
|
||||
#define ISOCHRONOUS_ENDPOINT 1
|
||||
#define BULK_ENDPOINT 2
|
||||
#define INTERRUPT_ENDPOINT 3
|
||||
|
||||
typedef union _USBDESCRIPTORTYPE {
|
||||
BYTE Byte;
|
||||
#if !defined(MIDL_PASS)
|
||||
struct Bits {
|
||||
BYTE Descriptor:5;
|
||||
BYTE Type:2;
|
||||
BYTE Reserved:1;
|
||||
} Bits;
|
||||
#endif
|
||||
} USBDESCRIPTORTYPE;
|
||||
|
||||
typedef union _USBCONFIGATTRIBS {
|
||||
BYTE Byte;
|
||||
#if !defined(MIDL_PASS)
|
||||
struct Bits {
|
||||
BYTE bReserved0_4:5;
|
||||
BYTE bRemoteWakeup:1;
|
||||
BYTE bSelfPowered:1;
|
||||
BYTE bReserved7:1;
|
||||
} Bits;
|
||||
#endif
|
||||
} USBCONFIGATTRIBS;
|
||||
|
||||
typedef union _USBREQUESTTYPE {
|
||||
BYTE Byte;
|
||||
#if !defined(MIDL_PASS)
|
||||
struct Bits {
|
||||
BYTE Recipient:5;
|
||||
BYTE Type:2;
|
||||
BYTE Direction:1;
|
||||
} Bits;
|
||||
#endif
|
||||
} USBREQUESTTYPE;
|
||||
|
||||
#if !defined(MIDL_PASS)
|
||||
C_ASSERT((sizeof(USBREQUESTTYPE) == sizeof(BYTE)));
|
||||
#endif
|
||||
|
||||
typedef struct _USBSETUPREQUEST {
|
||||
USBREQUESTTYPE bmRequestType;
|
||||
BYTE bRequest;
|
||||
SHORT sSetupValue;
|
||||
SHORT sSetupIndex;
|
||||
SHORT sSetupLength;
|
||||
} USBSETUPREQUEST;
|
||||
|
||||
#if !defined(MIDL_PASS)
|
||||
|
||||
typedef struct _USBDEVICEDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
USHORT usUSB;
|
||||
BYTE bDeviceClass;
|
||||
BYTE bDeviceSubClass;
|
||||
BYTE bProtocol;
|
||||
BYTE bMaxPacket0;
|
||||
USHORT usVendor;
|
||||
USHORT usProduct;
|
||||
USHORT usDeviceNumber;
|
||||
BYTE bManufacturer;
|
||||
BYTE bProductDesc;
|
||||
BYTE bSerialNumber;
|
||||
BYTE bNumConfigs;
|
||||
} USBDEVICEDESC;
|
||||
|
||||
typedef struct _USBCONFIGDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
USHORT usTotalLength;
|
||||
BYTE bNumInterfaces;
|
||||
BYTE bConfigValue;
|
||||
BYTE bConfig;
|
||||
BYTE bAttributes;
|
||||
BYTE bMaxPower;
|
||||
} USBCONFIGDESC;
|
||||
|
||||
|
||||
typedef struct _USBINTERFACEDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
BYTE bInterfaceNumber;
|
||||
BYTE bAlternateSetting;
|
||||
BYTE bNumEndpoints;
|
||||
BYTE bClass;
|
||||
BYTE bSubClass;
|
||||
BYTE bProtocol;
|
||||
BYTE bDescription;
|
||||
} USBINTERFACEDESC;
|
||||
|
||||
#define ENDPOINT_DIRECTION_OUT 0
|
||||
#define ENDPOINT_DIRECTION_IN 1
|
||||
|
||||
typedef union _USBENDPOINTADDRESS {
|
||||
BYTE Byte;
|
||||
struct Bits {
|
||||
BYTE Number:4;
|
||||
BYTE Reserved:3;
|
||||
BYTE Direction:1;
|
||||
} Bits;
|
||||
} USBENDPOINTADDRESS;
|
||||
|
||||
C_ASSERT((sizeof(USBENDPOINTADDRESS) == sizeof(BYTE)));
|
||||
|
||||
#define USB_TRANSFER_TYPE_CONTROL 0
|
||||
#define USB_TRANSFER_TYPE_ISOCH 1
|
||||
#define USB_TRANSFER_TYPE_BULK 2
|
||||
#define USB_TRANSFER_TYPE_INTERRUPT 3
|
||||
|
||||
#define USB_SYNC_TYPE_NONE 0
|
||||
#define USB_SYNC_TYPE_ASYNC 1
|
||||
#define USB_SYNC_TYPE_ADAPTIVE 2
|
||||
#define USB_SYNC_TYPE_SYNC 3
|
||||
|
||||
#define USB_USAGE_TYPE_DATA 0
|
||||
#define USB_USAGE_TYPE_FEEDBACK 1
|
||||
#define USB_USAGE_TYPE_IMPLICIT 2
|
||||
#define USB_USAGE_TYPE_RESERVED 3
|
||||
|
||||
typedef union _USBENDPOINTATTRIBS {
|
||||
BYTE Byte;
|
||||
struct Bits {
|
||||
BYTE TransferType:2;
|
||||
BYTE SyncType:2;
|
||||
BYTE UsageType:2;
|
||||
BYTE Reserved:2;
|
||||
} Bits;
|
||||
} USBENDPOINTATTRIBS;
|
||||
|
||||
C_ASSERT((sizeof(USBENDPOINTATTRIBS) == sizeof(BYTE)));
|
||||
|
||||
typedef union _USBMAXPACKET {
|
||||
WORD Word;
|
||||
struct Bits {
|
||||
WORD Size:11;
|
||||
WORD AdditionalXactions:2;
|
||||
WORD Reserved:3;
|
||||
} Bits;
|
||||
} USBMAXPACKET;
|
||||
|
||||
C_ASSERT((sizeof(USBMAXPACKET) == sizeof(WORD)));
|
||||
|
||||
typedef struct _USBENDPOINTDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
USBENDPOINTADDRESS Address;
|
||||
USBENDPOINTATTRIBS Attributes;
|
||||
USBMAXPACKET MaxPacket;
|
||||
BYTE bInterval;
|
||||
} USBENDPOINTDESC;
|
||||
|
||||
typedef struct _USBQUALIFIERDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
USHORT usUSB;
|
||||
BYTE bDeviceClass;
|
||||
BYTE bDeviceSubClass;
|
||||
BYTE bProtocol;
|
||||
BYTE bMaxPacket;
|
||||
BYTE bNumConfigs;
|
||||
BYTE bReserved;
|
||||
} USBQUALIFIERDESC;
|
||||
|
||||
typedef struct _USBSTRINGDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
WCHAR wchData[1];
|
||||
} USBSTRINGDESC;
|
||||
|
||||
typedef struct _USBSTRINGLANGIDS {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
WORD wLANGIDs[1];
|
||||
} USBSTRINGLANGIDS;
|
||||
|
||||
typedef struct _USBHIDSTANDARDDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
USHORT bcdHID;
|
||||
BYTE bCountryCode;
|
||||
BYTE bNumDescriptors;
|
||||
} USBHIDSTANDARDDESC;
|
||||
|
||||
typedef struct _USBHIDOPTIONALDESC {
|
||||
BYTE bClassDescriptorType;
|
||||
USHORT usDescriptorLength;
|
||||
} USBHIDOPTIONALDESC;
|
||||
|
||||
typedef struct _USBPHYSICALDESCSET0 {
|
||||
BYTE bNumber;
|
||||
BYTE bLength;
|
||||
} USBPHYSICALDESCSET0;
|
||||
|
||||
typedef union _USBPHYSICALDESCSET {
|
||||
BYTE bPhysicalInfo;
|
||||
struct Bits {
|
||||
BYTE bPreference:5;
|
||||
BYTE bBias:3;
|
||||
} Bits;
|
||||
} USBPHYSICALDESCSET;
|
||||
|
||||
typedef struct _USBPHYSICALDESCITEM {
|
||||
BYTE bDesignator;
|
||||
union Flags {
|
||||
BYTE bFlags;
|
||||
struct Bits {
|
||||
BYTE bEffort:5;
|
||||
BYTE bQualifier:3;
|
||||
} Bits;
|
||||
} Flags;
|
||||
} USBPHYSICALDESCITEM;
|
||||
|
||||
typedef union _USBHUBCHARACTERISTICS {
|
||||
WORD wHubCharacteristics;
|
||||
struct Bits {
|
||||
BYTE bLogicalPowerSwitchingMode:2;
|
||||
BYTE fCompoundDevice:1;
|
||||
BYTE bOverCurrentMode:2;
|
||||
BYTE bTTThinkTime:2;
|
||||
BYTE fPortIndicatorSupport:1;
|
||||
BYTE bReserved:8;
|
||||
} Bits;
|
||||
} USBHUBCHARACTERISTICS;
|
||||
|
||||
#if !defined(MIDL_PASS)
|
||||
C_ASSERT((sizeof(USBHUBCHARACTERISTICS) == sizeof(WORD)));
|
||||
#endif
|
||||
|
||||
typedef struct _USBHUBDESC {
|
||||
BYTE bLength;
|
||||
BYTE bDescriptorType;
|
||||
BYTE bNumberOfPorts;
|
||||
USBHUBCHARACTERISTICS Characteristics;
|
||||
BYTE bPwrOn2PwrGood;
|
||||
BYTE bHubContrCurrent;
|
||||
BYTE bDeviceRemovable[32];
|
||||
BYTE bPortPwrCtrlMask[32];
|
||||
} USBHUBDESC;
|
||||
|
||||
#if !defined(MIDL_PASS)
|
||||
C_ASSERT((sizeof(USBHUBDESC) == 71));
|
||||
#endif
|
||||
|
||||
typedef union _USBHUBPORTSTATUS {
|
||||
WORD wPortStatus;
|
||||
struct Bits {
|
||||
BYTE fCurrentConnectionStatus:1;
|
||||
BYTE fEnabled:1;
|
||||
BYTE fSuspend:1;
|
||||
BYTE fOverCurrent:1;
|
||||
BYTE fReset:1;
|
||||
BYTE bReserved1:3;
|
||||
BYTE fPortPower:1;
|
||||
BYTE fLowSpeedDevice:1;
|
||||
BYTE fHighSpeedDevice:1;
|
||||
BYTE fTestMode:1;
|
||||
BYTE fPortIndicatorControl:1;
|
||||
BYTE bReserved2:3;
|
||||
} Bits;
|
||||
} USBHUBPORTSTATUS;
|
||||
|
||||
#if !defined(MIDL_PASS)
|
||||
C_ASSERT((sizeof(USBHUBPORTSTATUS) == sizeof(WORD)));
|
||||
#endif
|
||||
|
||||
typedef union _USBHUBPORTSTATUSCHANGE {
|
||||
WORD wPortStatusChange;
|
||||
struct Bits {
|
||||
BYTE fConnectionStatusChange:1;
|
||||
BYTE fEnabledChange:1;
|
||||
BYTE fSuspendChange:1;
|
||||
BYTE fOverCurrentChange:1;
|
||||
BYTE fResetChange:1;
|
||||
BYTE bReserved1:3;
|
||||
BYTE bReserved2:8;
|
||||
} Bits;
|
||||
} USBHUBPORTSTATUSCHANGE;
|
||||
|
||||
#if !defined(MIDL_PASS)
|
||||
C_ASSERT((sizeof(USBHUBPORTSTATUSCHANGE) == sizeof(WORD)));
|
||||
#endif
|
||||
|
||||
typedef struct _USBHUBPORTDATA {
|
||||
USBHUBPORTSTATUS PortStatus;
|
||||
USBHUBPORTSTATUSCHANGE PortStatusChange;
|
||||
} USBHUBPORTDATA;
|
||||
|
||||
#define USB_MAKE_LANGID(lang, sublang) ((((USHORT)(sublang)) << 10) | (USHORT)(lang))
|
||||
|
||||
#define USB_LANG_RESERVED 0x00
|
||||
#define USB_LANG_ARABIC 0x01
|
||||
#define USB_LANG_BULGARIAN 0x02
|
||||
#define USB_LANG_CATALAN 0x03
|
||||
#define USB_LANG_CHINESE 0x04
|
||||
#define USB_LANG_CZECH 0x05
|
||||
#define USB_LANG_DANISH 0x06
|
||||
#define USB_LANG_GERMAN 0x07
|
||||
#define USB_LANG_GREEK 0x08
|
||||
#define USB_LANG_ENGLISH 0x09
|
||||
#define USB_LANG_SPANISH 0x0a
|
||||
#define USB_LANG_FINNISH 0x0b
|
||||
#define USB_LANG_FRENCH 0x0c
|
||||
#define USB_LANG_HEBREW 0x0d
|
||||
#define USB_LANG_HUNGARIAN 0x0e
|
||||
#define USB_LANG_ICELANDIC 0x0f
|
||||
#define USB_LANG_ITALIAN 0x10
|
||||
#define USB_LANG_JAPANESE 0x11
|
||||
#define USB_LANG_KOREAN 0x12
|
||||
#define USB_LANG_DUTCH 0x13
|
||||
#define USB_LANG_NORWEGIAN 0x14
|
||||
#define USB_LANG_POLISH 0x15
|
||||
#define USB_LANG_PORTUGUESE 0x16
|
||||
#define USB_LANG_ROMANIAN 0x18
|
||||
#define USB_LANG_RUSSIAN 0x19
|
||||
#define USB_LANG_CROATIAN 0x1a
|
||||
#define USB_LANG_SERBIAN 0x1a
|
||||
#define USB_LANG_SLOVAK 0x1b
|
||||
#define USB_LANG_ALBANIAN 0x1c
|
||||
#define USB_LANG_SWEDISH 0x1d
|
||||
#define USB_LANG_THAI 0x1e
|
||||
#define USB_LANG_TURKISH 0x1f
|
||||
#define USB_LANG_URDU 0x20
|
||||
#define USB_LANG_INDONESIAN 0x21
|
||||
#define USB_LANG_UKRANIAN 0x22
|
||||
#define USB_LANG_BELARUSIAN 0x23
|
||||
#define USB_LANG_SLOVENIAN 0x24
|
||||
#define USB_LANG_ESTONIAN 0x25
|
||||
#define USB_LANG_LATVIAN 0x26
|
||||
#define USB_LANG_LITHUANIAN 0x27
|
||||
#define USB_LANG_FARSI 0x29
|
||||
#define USB_LANG_VIETNAMESE 0x2a
|
||||
#define USB_LANG_ARMENIAN 0x2b
|
||||
#define USB_LANG_AZERI 0x2c
|
||||
#define USB_LANG_BASQUE 0x2d
|
||||
#define USB_LANG_MACEDONIAN 0x2f
|
||||
#define USB_LANG_AFRIKAANS 0x36
|
||||
#define USB_LANG_GEORGIAN 0x37
|
||||
#define USB_LANG_FAEROESE 0x38
|
||||
#define USB_LANG_HINDI 0x39
|
||||
#define USB_LANG_MALAY 0x3e
|
||||
#define USB_LANG_KAZAK 0x3f
|
||||
#define USB_LANG_SWAHILI 0x41
|
||||
#define USB_LANG_UZBEK 0x43
|
||||
#define USB_LANG_TATAR 0x44
|
||||
#define USB_LANG_BENGALI 0x45
|
||||
#define USB_LANG_PUNJABI 0x46
|
||||
#define USB_LANG_GUJARATI 0x47
|
||||
#define USB_LANG_ORIYA 0x48
|
||||
#define USB_LANG_TAMIL 0x49
|
||||
#define USB_LANG_TELUGU 0x4a
|
||||
#define USB_LANG_KANNADA 0x4b
|
||||
#define USB_LANG_MALAYALAM 0x4c
|
||||
#define USB_LANG_ASSAMESE 0x4d
|
||||
#define USB_LANG_MARATHI 0x4e
|
||||
#define USB_LANG_SANSKRIT 0x4f
|
||||
#define USB_LANG_KONKANI 0x57
|
||||
#define USB_LANG_MANIPURI 0x58
|
||||
#define USB_LANG_SINDHI 0x59
|
||||
#define USB_LANG_KASHMIRI 0x60
|
||||
#define USB_LANG_NEPALI 0x61
|
||||
#define USB_LANG_HID 0xff
|
||||
|
||||
#define USB_SUBLANG_ARABIC_SAUDI_ARABIA 0x01
|
||||
#define USB_SUBLANG_ARABIC_SAUDI_ARABIA 0x01
|
||||
#define USB_SUBLANG_ARABIC_IRAQ 0x02
|
||||
#define USB_SUBLANG_ARABIC_EGYPT 0x03
|
||||
#define USB_SUBLANG_ARABIC_LIBYA 0x04
|
||||
#define USB_SUBLANG_ARABIC_ALGERIA 0x05
|
||||
#define USB_SUBLANG_ARABIC_MOROCCO 0x06
|
||||
#define USB_SUBLANG_ARABIC_TUNISIA 0x07
|
||||
#define USB_SUBLANG_ARABIC_OMAN 0x08
|
||||
#define USB_SUBLANG_ARABIC_YEMEN 0x09
|
||||
#define USB_SUBLANG_ARABIC_SYRIA 0x10
|
||||
#define USB_SUBLANG_ARABIC_JORDAN 0x11
|
||||
#define USB_SUBLANG_ARABIC_LEBANON 0x12
|
||||
#define USB_SUBLANG_ARABIC_KUWAIT 0x13
|
||||
#define USB_SUBLANG_ARABIC_UAE 0x14
|
||||
#define USB_SUBLANG_ARABIC_BAHRAIN 0x15
|
||||
#define USB_SUBLANG_ARABIC_QATAR 0x16
|
||||
#define USB_SUBLANG_AZERI_CYRILLIC 0x01
|
||||
#define USB_SUBLANG_AZERI_LATIN 0x02
|
||||
#define USB_SUBLANG_CHINESE_TRADITIONAL 0x01
|
||||
#define USB_SUBLANG_CHINESE_SIMPLIFIED 0x02
|
||||
#define USB_SUBLANG_CHINESE_HONGKONG 0x03
|
||||
#define USB_SUBLANG_CHINESE_SINGAPORE 0x04
|
||||
#define USB_SUBLANG_CHINESE_MACAU 0x05
|
||||
#define USB_SUBLANG_DUTCH 0x01
|
||||
#define USB_SUBLANG_DUTCH_BELGIAN 0x02
|
||||
#define USB_SUBLANG_ENGLISH_US 0x01
|
||||
#define USB_SUBLANG_ENGLISH_UK 0x02
|
||||
#define USB_SUBLANG_ENGLISH_AUS 0x03
|
||||
#define USB_SUBLANG_ENGLISH_CAN 0x04
|
||||
#define USB_SUBLANG_ENGLISH_NZ 0x05
|
||||
#define USB_SUBLANG_ENGLISH_EIRE 0x06
|
||||
#define USB_SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
|
||||
#define USB_SUBLANG_ENGLISH_JAMAICA 0x08
|
||||
#define USB_SUBLANG_ENGLISH_CARIBBEAN 0x09
|
||||
#define USB_SUBLANG_ENGLISH_BELIZE 0x0a
|
||||
#define USB_SUBLANG_ENGLISH_TRINIDAD 0x0b
|
||||
#define USB_SUBLANG_ENGLISH_PHILIPPINES 0x0c
|
||||
#define USB_SUBLANG_ENGLISH_ZIMBABWE 0x0d
|
||||
#define USB_SUBLANG_FRENCH 0x01
|
||||
#define USB_SUBLANG_FRENCH_BELGIAN 0x02
|
||||
#define USB_SUBLANG_FRENCH_CANADIAN 0x03
|
||||
#define USB_SUBLANG_FRENCH_SWISS 0x04
|
||||
#define USB_SUBLANG_FRENCH_LUXEMBOURG 0x05
|
||||
#define USB_SUBLANG_FRENCH_MONACO 0x06
|
||||
#define USB_SUBLANG_GERMAN 0x01
|
||||
#define USB_SUBLANG_GERMAN_SWISS 0x02
|
||||
#define USB_SUBLANG_GERMAN_AUSTRIAN 0x03
|
||||
#define USB_SUBLANG_GERMAN_LUXEMBOURG 0x04
|
||||
#define USB_SUBLANG_GERMAN_LIECHTENSTEIN 0x05
|
||||
#define USB_SUBLANG_ITALIAN 0x01
|
||||
#define USB_SUBLANG_ITALIAN_SWISS 0x02
|
||||
#define USB_SUBLANG_KASHMIRI_INDIA 0x02
|
||||
#define USB_SUBLANG_KOREAN 0x01
|
||||
#define USB_SUBLANG_LITHUANIAN 0x01
|
||||
#define USB_SUBLANG_MALAY_MALAYSIA 0x01
|
||||
#define USB_SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
|
||||
#define USB_SUBLANG_NEPALI_INDIA 0x02
|
||||
#define USB_SUBLANG_NORWEGIAN_BOKMAL 0x01
|
||||
#define USB_SUBLANG_NORWEGIAN_NYNORSK 0x02
|
||||
#define USB_SUBLANG_PORTUGUESE 0x01
|
||||
#define USB_SUBLANG_PORTUGUESE_BRAZILIAN 0x02
|
||||
#define USB_SUBLANG_SERBIAN_LATIN 0x02
|
||||
#define USB_SUBLANG_SERBIAN_CYRILLIC 0x03
|
||||
#define USB_SUBLANG_SPANISH 0x01
|
||||
#define USB_SUBLANG_SPANISH_MEXICAN 0x02
|
||||
#define USB_SUBLANG_SPANISH_MODERN 0x03
|
||||
#define USB_SUBLANG_SPANISH_GUATEMALA 0x04
|
||||
#define USB_SUBLANG_SPANISH_COSTA_RICA 0x05
|
||||
#define USB_SUBLANG_SPANISH_PANAMA 0x06
|
||||
#define USB_SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
|
||||
#define USB_SUBLANG_SPANISH_VENEZUELA 0x08
|
||||
#define USB_SUBLANG_SPANISH_COLOMBIA 0x09
|
||||
#define USB_SUBLANG_SPANISH_PERU 0x0a
|
||||
#define USB_SUBLANG_SPANISH_ARGENTINA 0x0b
|
||||
#define USB_SUBLANG_SPANISH_ECUADOR 0x0c
|
||||
#define USB_SUBLANG_SPANISH_CHILE 0x0d
|
||||
#define USB_SUBLANG_SPANISH_URUGUAY 0x0e
|
||||
#define USB_SUBLANG_SPANISH_PARAGUAY 0x0f
|
||||
#define USB_SUBLANG_SPANISH_BOLIVIA 0x10
|
||||
#define USB_SUBLANG_SPANISH_EL_SALVADOR 0x11
|
||||
#define USB_SUBLANG_SPANISH_HONDURAS 0x12
|
||||
#define USB_SUBLANG_SPANISH_NICARAGUA 0x13
|
||||
#define USB_SUBLANG_SPANISH_PUERTO_RICO 0x14
|
||||
#define USB_SUBLANG_SWEDISH 0x01
|
||||
#define USB_SUBLANG_SWEDISH_FINLAND 0x02
|
||||
#define USB_SUBLANG_URDU_PAKISTAN 0x01
|
||||
#define USB_SUBLANG_URDU_INDIA 0x02
|
||||
#define USB_SUBLANG_UZBEK_LATIN 0x01
|
||||
#define USB_SUBLANG_UZBEK_CYRILLIC 0x02
|
||||
#define USB_SUBLANG_HID_USAGE_DATA_DESCRIPTOR 0x01
|
||||
#define USB_SUBLANG_HID_VENDOR_DEFINED_1 0x3c
|
||||
#define USB_SUBLANG_HID_VENDOR_DEFINED_2 0x3d
|
||||
#define USB_SUBLANG_HID_VENDOR_DEFINED_3 0x3e
|
||||
#define USB_SUBLANG_HID_VENDOR_DEFINED_4 0x3f
|
||||
|
||||
#endif // !defined(MIDL_PASS)
|
||||
|
||||
#include <poppack.h>
|
|
@ -20,21 +20,115 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#ifndef __USBSCAN_H
|
||||
#define __USBSCAN_H
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
|
||||
#pragma pack(push,8)
|
||||
|
||||
#ifndef MAX_NUM_PIPES
|
||||
#define MAX_NUM_PIPES 8
|
||||
#endif
|
||||
|
||||
#define BULKIN_FLAG 0x80
|
||||
|
||||
typedef struct _DRV_VERSION {
|
||||
OUT ULONG major;
|
||||
OUT ULONG minor;
|
||||
OUT ULONG internal;
|
||||
} DRV_VERSION, *PDRV_VERSION;
|
||||
|
||||
typedef struct _IO_BLOCK {
|
||||
IN ULONG uOffset;
|
||||
IN ULONG uLength;
|
||||
IN OUT PUCHAR pbyData;
|
||||
IN ULONG uIndex;
|
||||
} IO_BLOCK, *PIO_BLOCK;
|
||||
|
||||
typedef struct _IO_BLOCK_EX {
|
||||
IN ULONG uOffset;
|
||||
IN ULONG uLength;
|
||||
IN OUT PUCHAR pbyData;
|
||||
IN ULONG uIndex;
|
||||
IN UCHAR bRequest;
|
||||
IN UCHAR bmRequestType;
|
||||
IN UCHAR fTransferDirectionIn;
|
||||
} IO_BLOCK_EX, *PIO_BLOCK_EX;
|
||||
|
||||
typedef struct _CHANNEL_INFO {
|
||||
OUT ULONG EventChannelSize;
|
||||
OUT ULONG uReadDataAlignment;
|
||||
OUT ULONG uWriteDataAlignment;
|
||||
}CHANNEL_INFO, *PCHANNEL_INFO;
|
||||
|
||||
typedef enum _PIPE_TYPE {
|
||||
EVENT_PIPE,
|
||||
READ_DATA_PIPE,
|
||||
WRITE_DATA_PIPE,
|
||||
ALL_PIPE
|
||||
} PIPE_TYPE;
|
||||
|
||||
typedef struct _USBSCAN_GET_DESCRIPTOR {
|
||||
IN UCHAR DescriptorType;
|
||||
IN UCHAR Index;
|
||||
IN USHORT LanguageId;
|
||||
} USBSCAN_GET_DESCRIPTOR, *PUSBSCAN_GET_DESCRIPTOR;
|
||||
|
||||
typedef struct _DEVICE_DESCRIPTOR {
|
||||
OUT USHORT usVendorId;
|
||||
OUT USHORT usProductId;
|
||||
OUT USHORT usBcdDevice;
|
||||
OUT USHORT usLanguageId;
|
||||
} DEVICE_DESCRIPTOR, *PDEVICE_DESCRIPTOR;
|
||||
|
||||
typedef enum _RAW_PIPE_TYPE {
|
||||
USBSCAN_PIPE_CONTROL,
|
||||
USBSCAN_PIPE_ISOCHRONOUS,
|
||||
USBSCAN_PIPE_BULK,
|
||||
USBSCAN_PIPE_INTERRUPT
|
||||
} RAW_PIPE_TYPE;
|
||||
|
||||
typedef struct _USBSCAN_PIPE_INFORMATION {
|
||||
USHORT MaximumPacketSize;
|
||||
UCHAR EndpointAddress;
|
||||
UCHAR Interval;
|
||||
RAW_PIPE_TYPE PipeType;
|
||||
} USBSCAN_PIPE_INFORMATION, *PUSBSCAN_PIPE_INFORMATION;
|
||||
|
||||
typedef struct _USBSCAN_PIPE_CONFIGURATION {
|
||||
OUT ULONG NumberOfPipes;
|
||||
OUT USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES];
|
||||
} USBSCAN_PIPE_CONFIGURATION, *PUSBSCAN_PIPE_CONFIGURATION;
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
typedef struct _USBSCAN_TIMEOUT {
|
||||
IN ULONG TimeoutRead;
|
||||
IN ULONG TimeoutWrite;
|
||||
IN ULONG TimeoutEvent;
|
||||
} USBSCAN_TIMEOUT, *PUSBSCAN_TIMEOUT;
|
||||
#endif
|
||||
|
||||
#define FILE_DEVICE_USB_SCAN 0x8000
|
||||
#define IOCTL_INDEX 0x0800
|
||||
|
||||
#define IOCTL_GET_VERSION \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 0, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_CANCEL_IO \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 1, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_GET_VERSION \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 0, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
#define IOCTL_WAIT_ON_DEVICE_EVENT \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 2, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_READ_REGISTERS \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 3, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_WRITE_REGISTERS \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_GET_CHANNEL_ALIGN_RQST \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 5, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
@ -42,111 +136,27 @@ extern "C" {
|
|||
#define IOCTL_GET_DEVICE_DESCRIPTOR \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 6, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_GET_PIPE_CONFIGURATION \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 10,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
#define IOCTL_RESET_PIPE \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 7, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_GET_USB_DESCRIPTOR \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 8, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_READ_REGISTERS \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 3, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_RESET_PIPE \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 7, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_SEND_USB_REQUEST \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 9, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_GET_PIPE_CONFIGURATION \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 10,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
#define IOCTL_SET_TIMEOUT \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 11,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#define IOCTL_WAIT_ON_DEVICE_EVENT \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 2, METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
#pragma pack(pop)
|
||||
|
||||
#define IOCTL_WRITE_REGISTERS \
|
||||
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
|
||||
#define MAX_NUM_PIPES 8
|
||||
|
||||
#define BULKIN_FLAG 0x80
|
||||
|
||||
typedef struct _CHANNEL_INFO {
|
||||
OUT ULONG EventChannelSize;
|
||||
OUT ULONG uReadDataAlignment;
|
||||
OUT ULONG uWriteDataAlignment;
|
||||
}CHANNEL_INFO, *PCHANNEL_INFO;
|
||||
|
||||
typedef struct _DEVICE_DESCRIPTOR {
|
||||
OUT USHORT usVendorId;
|
||||
OUT USHORT usProductId;
|
||||
OUT USHORT usBcdDevice;
|
||||
OUT USHORT usLanguageId;
|
||||
} DEVICE_DESCRIPTOR, *PDEVICE_DESCRIPTOR;
|
||||
|
||||
typedef struct _DRV_VERSION {
|
||||
OUT ULONG major;
|
||||
OUT ULONG minor;
|
||||
OUT ULONG internal;
|
||||
} DRV_VERSION, *PDRV_VERSION;
|
||||
|
||||
typedef struct _IO_BLOCK {
|
||||
IN ULONG uOffset;
|
||||
IN ULONG uLength;
|
||||
IN OUT PUCHAR pbyData;
|
||||
IN ULONG uIndex;
|
||||
} IO_BLOCK, *PIO_BLOCK;
|
||||
|
||||
typedef struct _IO_BLOCK_EX {
|
||||
IN ULONG uOffset;
|
||||
IN ULONG uLength;
|
||||
IN OUT PUCHAR pbyData;
|
||||
IN ULONG uIndex;
|
||||
IN UCHAR bRequest;
|
||||
IN UCHAR bmRequestType;
|
||||
IN UCHAR fTransferDirectionIn;
|
||||
} IO_BLOCK_EX, *PIO_BLOCK_EX;
|
||||
|
||||
typedef struct _USBSCAN_GET_DESCRIPTOR {
|
||||
IN UCHAR DescriptorType;
|
||||
IN UCHAR Index;
|
||||
IN USHORT LanguageId;
|
||||
} USBSCAN_GET_DESCRIPTOR, *PUSBSCAN_GET_DESCRIPTOR;
|
||||
|
||||
typedef enum _RAW_PIPE_TYPE {
|
||||
USBSCAN_PIPE_CONTROL,
|
||||
USBSCAN_PIPE_ISOCHRONOUS,
|
||||
USBSCAN_PIPE_BULK,
|
||||
USBSCAN_PIPE_INTERRUPT
|
||||
} RAW_PIPE_TYPE;
|
||||
|
||||
typedef struct _USBSCAN_PIPE_INFORMATION {
|
||||
USHORT MaximumPacketSize;
|
||||
UCHAR EndpointAddress;
|
||||
UCHAR Interval;
|
||||
RAW_PIPE_TYPE PipeType;
|
||||
} USBSCAN_PIPE_INFORMATION, *PUSBSCAN_PIPE_INFORMATION;
|
||||
|
||||
typedef struct _USBSCAN_PIPE_CONFIGURATION {
|
||||
OUT ULONG NumberOfPipes;
|
||||
OUT USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES];
|
||||
} USBSCAN_PIPE_CONFIGURATION, *PUSBSCAN_PIPE_CONFIGURATION;
|
||||
|
||||
typedef struct _USBSCAN_TIMEOUT {
|
||||
IN ULONG TimeoutRead;
|
||||
IN ULONG TimeoutWrite;
|
||||
IN ULONG TimeoutEvent;
|
||||
} USBSCAN_TIMEOUT, *PUSBSCAN_TIMEOUT;
|
||||
|
||||
typedef enum _PIPE_TYPE {
|
||||
EVENT_PIPE,
|
||||
READ_DATA_PIPE,
|
||||
WRITE_DATA_PIPE,
|
||||
ALL_PIPE
|
||||
} PIPE_TYPE;
|
||||
#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __USBSCAN_H */
|
||||
|
|
64
reactos/include/ddk/usbstorioctl.h
Normal file
64
reactos/include/ddk/usbstorioctl.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef MAX_PATH
|
||||
#define MAX_PATH 260
|
||||
#endif
|
||||
|
||||
typedef struct tagACT_AUTHZ_STATE {
|
||||
UCHAR ACT;
|
||||
BOOLEAN fAuthorized;
|
||||
} ACT_AUTHZ_STATE, *PACT_AUTHZ_STATE;
|
||||
|
||||
typedef struct tagSILO_COMMAND {
|
||||
UCHAR SiloIndex;
|
||||
UCHAR Command;
|
||||
ULONG cbCommandBuffer;
|
||||
UCHAR rgbCommandBuffer[ANYSIZE_ARRAY];
|
||||
} SILO_COMMAND, *PSILO_COMMAND;
|
||||
|
||||
typedef enum _PDO_TYPE {
|
||||
PDO_TYPE_UNDEFINED = 0,
|
||||
PDO_TYPE_DISK,
|
||||
PDO_TYPE_CONTROL,
|
||||
PDO_TYPE_SILO,
|
||||
PDO_TYPE_THIS = 256
|
||||
} PDO_TYPE;
|
||||
|
||||
typedef enum _PDO_STATE {
|
||||
PDO_STATE_UNDEFINED = 0,
|
||||
PDO_STATE_STARTED,
|
||||
PDO_STATE_NOT_STARTED
|
||||
} PDO_STATE;
|
||||
|
||||
typedef enum _PDO_CAPS {
|
||||
PDO_CAPABILITY_UNDEFINED = 0,
|
||||
PDO_CAPABILITY_INC512_SET = 1,
|
||||
PDO_CAPABILITY_INC512_CLEAR = 2
|
||||
} PDO_CAPS;
|
||||
|
||||
typedef struct _ENUM_PDO_ENTRY {
|
||||
UCHAR type;
|
||||
UCHAR state;
|
||||
UCHAR capabilities;
|
||||
ULONG ulSTID;
|
||||
UCHAR bSpecificationMajor;
|
||||
UCHAR bSpecificationMinor;
|
||||
UCHAR bImplementationMajor;
|
||||
UCHAR bImplementationMinor;
|
||||
WCHAR wszDeviceInstancePath[(2 * MAX_PATH) + 1];
|
||||
} ENUM_PDO_ENTRY, *PENUM_PDO_ENTRY;
|
||||
|
||||
typedef struct _ENUM_PDO_RESULTS {
|
||||
ULONG cEntries;
|
||||
ENUM_PDO_ENTRY rgEntries[ANYSIZE_ARRAY];
|
||||
} ENUM_PDO_RESULTS, *PENUM_PDO_RESULTS;
|
||||
|
||||
#define SIZE_ENUM_PDO_RESULTS_HEADER (sizeof(ENUM_PDO_RESULTS) - sizeof(ENUM_PDO_ENTRY))
|
||||
|
||||
#define IOCTL_EHSTOR_DEVICE_SET_AUTHZ_STATE CTL_CODE(IOCTL_STORAGE_BASE, 0x501, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_EHSTOR_DEVICE_GET_AUTHZ_STATE CTL_CODE(IOCTL_STORAGE_BASE, 0x502, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_EHSTOR_DEVICE_SILO_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x503, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_EHSTOR_DEVICE_ENUMERATE_PDOS CTL_CODE(IOCTL_STORAGE_BASE, 0x504, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
DEFINE_GUID(GUID_USBSTOR_EHSTOR_SILO_INTERFACE, 0x7c2bcf57, 0x2bea, 0x46da, 0xad, 0x26, 0x78, 0xfd, 0xc8, 0x3c, 0xee, 0x46);
|
||||
DEFINE_GUID(GUID_USBSTOR_EHSTOR_CONTROL_INTERFACE, 0x4f40006f, 0xb933, 0x4550, 0xb5, 0x32, 0x2b, 0x58, 0xce, 0xe6, 0x14, 0xd3);
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
129
reactos/include/ddk/wmlib.h
Normal file
129
reactos/include/ddk/wmlib.h
Normal file
|
@ -0,0 +1,129 @@
|
|||
|
||||
#ifndef _WMILIB_
|
||||
#define _WMILIB_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct _WMIGUIDREGINFO {
|
||||
LPCGUID Guid;
|
||||
ULONG InstanceCount;
|
||||
ULONG Flags;
|
||||
} WMIGUIDREGINFO, *PWMIGUIDREGINFO;
|
||||
|
||||
typedef enum _WMIENABLEDISABLECONTROL {
|
||||
WmiEventControl,
|
||||
WmiDataBlockControl
|
||||
} WMIENABLEDISABLECONTROL, *PWMIENABLEDISABLECONTROL;
|
||||
|
||||
typedef enum _SYSCTL_IRP_DISPOSITION {
|
||||
IrpProcessed,
|
||||
IrpNotCompleted,
|
||||
IrpNotWmi,
|
||||
IrpForward
|
||||
} SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI WMI_QUERY_REGINFO_CALLBACK)(
|
||||
IN OUT PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PULONG RegFlags,
|
||||
IN OUT PUNICODE_STRING InstanceName,
|
||||
IN OUT PUNICODE_STRING *RegistryPath OPTIONAL,
|
||||
IN OUT PUNICODE_STRING MofResourceName,
|
||||
OUT PDEVICE_OBJECT *Pdo OPTIONAL);
|
||||
|
||||
typedef WMI_QUERY_REGINFO_CALLBACK *PWMI_QUERY_REGINFO;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI WMI_QUERY_DATABLOCK_CALLBACK)(
|
||||
IN OUT PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PIRP Irp,
|
||||
IN OUT ULONG GuidIndex,
|
||||
IN ULONG InstanceIndex,
|
||||
IN ULONG InstanceCount,
|
||||
OUT PULONG InstanceLengthArray OPTIONAL,
|
||||
IN ULONG BufferAvail,
|
||||
OUT PUCHAR Buffer OPTIONAL);
|
||||
|
||||
typedef WMI_QUERY_DATABLOCK_CALLBACK *PWMI_QUERY_DATABLOCK;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI WMI_SET_DATABLOCK_CALLBACK)(
|
||||
IN OUT PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PIRP Irp,
|
||||
IN ULONG GuidIndex,
|
||||
IN ULONG InstanceIndex,
|
||||
IN ULONG BufferSize,
|
||||
IN PUCHAR Buffer);
|
||||
|
||||
typedef WMI_SET_DATABLOCK_CALLBACK *PWMI_SET_DATABLOCK;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI WMI_SET_DATAITEM_CALLBACK)(
|
||||
IN OUT PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PIRP Irp,
|
||||
IN ULONG GuidIndex,
|
||||
IN ULONG InstanceIndex,
|
||||
IN ULONG DataItemId,
|
||||
IN ULONG BufferSize,
|
||||
IN PUCHAR Buffer);
|
||||
|
||||
typedef WMI_SET_DATAITEM_CALLBACK *PWMI_SET_DATAITEM;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI WMI_EXECUTE_METHOD_CALLBACK)(
|
||||
IN OUT PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PIRP Irp,
|
||||
IN ULONG GuidIndex,
|
||||
IN ULONG InstanceIndex,
|
||||
IN ULONG MethodId,
|
||||
IN ULONG InBufferSize,
|
||||
IN ULONG OutBufferSize,
|
||||
IN OUT PUCHAR Buffer);
|
||||
|
||||
typedef WMI_EXECUTE_METHOD_CALLBACK *PWMI_EXECUTE_METHOD;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI WMI_FUNCTION_CONTROL_CALLBACK)(
|
||||
IN OUT PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PIRP Irp,
|
||||
IN ULONG GuidIndex,
|
||||
IN WMIENABLEDISABLECONTROL Function,
|
||||
IN BOOLEAN Enable);
|
||||
|
||||
typedef WMI_FUNCTION_CONTROL_CALLBACK *PWMI_FUNCTION_CONTROL;
|
||||
|
||||
typedef struct _WMILIB_CONTEXT {
|
||||
ULONG GuidCount;
|
||||
PWMIGUIDREGINFO GuidList;
|
||||
PWMI_QUERY_REGINFO QueryWmiRegInfo;
|
||||
PWMI_QUERY_DATABLOCK QueryWmiDataBlock;
|
||||
PWMI_SET_DATABLOCK SetWmiDataBlock;
|
||||
PWMI_SET_DATAITEM SetWmiDataItem;
|
||||
PWMI_EXECUTE_METHOD ExecuteWmiMethod;
|
||||
PWMI_FUNCTION_CONTROL WmiFunctionControl;
|
||||
} WMILIB_CONTEXT, *PWMILIB_CONTEXT;
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
WmiSystemControl(
|
||||
IN PWMILIB_CONTEXT WmiLibInfo,
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PIRP Irp,
|
||||
OUT PSYSCTL_IRP_DISPOSITION IrpDisposition);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_WMILIB_ */
|
||||
|
|
@ -54,7 +54,7 @@ Author:
|
|||
#define CmResourceTypeDma 4
|
||||
#define CmResourceTypeDeviceSpecific 5
|
||||
#define CmResourceTypeBusNumber 6
|
||||
#define CmResourceTypeMaximum 7
|
||||
#define CmResourceTypeMemoryLarge 7
|
||||
#define CmResourceTypeNonArbitrated 128
|
||||
#define CmResourceTypeConfigData 128
|
||||
#define CmResourceTypeDevicePrivate 129
|
||||
|
@ -142,11 +142,14 @@ typedef enum _KEY_VALUE_INFORMATION_CLASS
|
|||
KeyValuePartialInformationAlign64
|
||||
} KEY_VALUE_INFORMATION_CLASS;
|
||||
|
||||
typedef enum _KEY_SET_INFORMATION_CLASS
|
||||
{
|
||||
KeyWriteTimeInformation,
|
||||
KeyUserFlagsInformation,
|
||||
MaxKeySetInfoClass
|
||||
typedef enum _KEY_SET_INFORMATION_CLASS {
|
||||
KeyWriteTimeInformation,
|
||||
KeyWow64FlagsInformation,
|
||||
KeyControlFlagsInformation,
|
||||
KeySetVirtualizationInformation,
|
||||
KeySetDebugInformation,
|
||||
KeySetHandleTagsInformation,
|
||||
MaxKeySetInfoClass
|
||||
} KEY_SET_INFORMATION_CLASS;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -732,7 +732,7 @@ ZwFindAtom(
|
|||
OUT PRTL_ATOM Atom OPTIONAL
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
NTSYSCALLAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
ZwOpenEvent(
|
||||
|
|
|
@ -30,7 +30,7 @@ Author:
|
|||
#define PCR ((KPCR * const)K0IPCR)
|
||||
#if defined(CONFIG_SMP) || defined(NT_BUILD)
|
||||
#undef KeGetPcr
|
||||
#define KeGetPcr() ((KPCR * const)__readfsdword(FIELD_OFFSET(KPCR, Self)))
|
||||
#define KeGetPcr() ((KPCR * const)__readfsdword(FIELD_OFFSET(KPCR, SelfPcr)))
|
||||
#endif
|
||||
|
||||
//
|
||||
|
|
|
@ -21,6 +21,7 @@ Author:
|
|||
|
||||
#define TOKEN_SOURCE_LENGTH 8
|
||||
|
||||
#ifndef _NTIFS_
|
||||
typedef enum _TOKEN_TYPE
|
||||
{
|
||||
TokenPrimary = 1,
|
||||
|
@ -281,5 +282,7 @@ typedef struct _TOKEN_DEFAULT_DACL
|
|||
#define HEAP_CREATE_ENABLE_TRACING 0x00020000
|
||||
#define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
|
||||
|
||||
#endif
|
||||
|
||||
#endif // !NTOS_MODE_USER
|
||||
#endif // _NTIFS_
|
||||
|
|
|
@ -107,7 +107,7 @@ extern POBJECT_TYPE NTSYSAPI IoDriverObjectType;
|
|||
#define FILE_CREATE_TREE_CONNECTION 0x00000080
|
||||
#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
|
||||
#define FILE_NO_EA_KNOWLEDGE 0x00000200
|
||||
#define FILE_OPEN_FOR_RECOVERY 0x00000400
|
||||
#define FILE_OPEN_REMOTE_INSTANCE 0x00000400
|
||||
#define FILE_RANDOM_ACCESS 0x00000800
|
||||
#define FILE_DELETE_ON_CLOSE 0x00001000
|
||||
#define FILE_OPEN_BY_FILE_ID 0x00002000
|
||||
|
|
|
@ -74,6 +74,14 @@ ObCreateObjectType(
|
|||
OUT POBJECT_TYPE *ObjectType
|
||||
);
|
||||
|
||||
NTKERNELAPI
|
||||
VOID
|
||||
NTAPI
|
||||
ObDereferenceSecurityDescriptor(
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
ULONG Count
|
||||
);
|
||||
|
||||
NTKERNELAPI
|
||||
ULONG
|
||||
NTAPI
|
||||
|
@ -81,6 +89,15 @@ ObGetObjectPointerCount(
|
|||
IN PVOID Object
|
||||
);
|
||||
|
||||
NTKERNELAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
ObLogSecurityDescriptor(
|
||||
IN PSECURITY_DESCRIPTOR InputSecurityDescriptor,
|
||||
OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor,
|
||||
IN ULONG RefBias
|
||||
);
|
||||
|
||||
NTKERNELAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
|
@ -108,6 +125,14 @@ ObReferenceObjectByName(
|
|||
OUT PVOID *Object
|
||||
);
|
||||
|
||||
NTKERNELAPI
|
||||
VOID
|
||||
NTAPI
|
||||
ObReferenceSecurityDescriptor(
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN ULONG Count
|
||||
);
|
||||
|
||||
NTKERNELAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
|
|
|
@ -1478,7 +1478,7 @@ RtlUpcaseUnicodeToOemN(
|
|||
PCHAR OemString,
|
||||
ULONG OemSize,
|
||||
PULONG ResultSize,
|
||||
PWCHAR UnicodeString,
|
||||
PCWCH UnicodeString,
|
||||
ULONG UnicodeSize
|
||||
);
|
||||
|
||||
|
@ -1508,7 +1508,7 @@ RtlUnicodeToOemN(
|
|||
PCHAR OemString,
|
||||
ULONG OemSize,
|
||||
PULONG ResultSize,
|
||||
PWCHAR UnicodeString,
|
||||
PCWCH UnicodeString,
|
||||
ULONG UnicodeSize
|
||||
);
|
||||
|
||||
|
@ -1533,7 +1533,7 @@ RtlUpcaseUnicodeToMultiByteN(
|
|||
PCHAR MbString,
|
||||
ULONG MbSize,
|
||||
PULONG ResultSize,
|
||||
PWCHAR UnicodeString,
|
||||
PCWCH UnicodeString,
|
||||
ULONG UnicodeSize
|
||||
);
|
||||
|
||||
|
@ -1542,7 +1542,7 @@ NTSTATUS
|
|||
NTAPI
|
||||
RtlUnicodeToMultiByteSize(
|
||||
PULONG MbSize,
|
||||
PWCHAR UnicodeString,
|
||||
PCWCH UnicodeString,
|
||||
ULONG UnicodeSize
|
||||
);
|
||||
|
||||
|
@ -1570,7 +1570,7 @@ RtlOemToUnicodeN(
|
|||
PWSTR UnicodeString,
|
||||
ULONG MaxBytesInUnicodeString,
|
||||
PULONG BytesInUnicodeString,
|
||||
IN PCHAR OemString,
|
||||
IN PCCH OemString,
|
||||
ULONG BytesInOemString
|
||||
);
|
||||
|
||||
|
@ -2652,6 +2652,7 @@ DbgPrintEx(
|
|||
IN ...
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
ULONG
|
||||
NTAPI
|
||||
DbgPrompt(
|
||||
|
|
|
@ -274,10 +274,10 @@ NTSTATUS
|
|||
DDKAPI
|
||||
BatteryClassSystemControl(
|
||||
IN PVOID ClassData,
|
||||
IN PWMILIB_CONTEXT WmiLibContext,
|
||||
IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
OUT PSYSCTL_IRP_DISPOSITION Disposition);
|
||||
OUT PVOID Disposition); /* PSYSCTL_IRP_DISPOSITION */
|
||||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
|
|
267
reactos/include/psdk/dpfilter.h
Normal file
267
reactos/include/psdk/dpfilter.h
Normal file
|
@ -0,0 +1,267 @@
|
|||
|
||||
#define DPFLTR_ERROR_LEVEL 0
|
||||
#define DPFLTR_WARNING_LEVEL 1
|
||||
#define DPFLTR_TRACE_LEVEL 2
|
||||
#define DPFLTR_INFO_LEVEL 3
|
||||
#define DPFLTR_MASK 0x80000000
|
||||
|
||||
#if 1
|
||||
typedef enum _DPFLTR_TYPE
|
||||
{
|
||||
DPFLTR_SYSTEM_ID = 0,
|
||||
DPFLTR_SMSS_ID = 1,
|
||||
DPFLTR_SETUP_ID = 2,
|
||||
DPFLTR_NTFS_ID = 3,
|
||||
DPFLTR_FSTUB_ID = 4,
|
||||
DPFLTR_CRASHDUMP_ID = 5,
|
||||
DPFLTR_CDAUDIO_ID = 6,
|
||||
DPFLTR_CDROM_ID = 7,
|
||||
DPFLTR_CLASSPNP_ID = 8,
|
||||
DPFLTR_DISK_ID = 9,
|
||||
DPFLTR_REDBOOK_ID = 10,
|
||||
DPFLTR_STORPROP_ID = 11,
|
||||
DPFLTR_SCSIPORT_ID = 12,
|
||||
DPFLTR_SCSIMINIPORT_ID = 13,
|
||||
DPFLTR_CONFIG_ID = 14,
|
||||
DPFLTR_I8042PRT_ID = 15,
|
||||
DPFLTR_SERMOUSE_ID = 16,
|
||||
DPFLTR_LSERMOUS_ID = 17,
|
||||
DPFLTR_KBDHID_ID = 18,
|
||||
DPFLTR_MOUHID_ID = 19,
|
||||
DPFLTR_KBDCLASS_ID = 20,
|
||||
DPFLTR_MOUCLASS_ID = 21,
|
||||
DPFLTR_TWOTRACK_ID = 22,
|
||||
DPFLTR_WMILIB_ID = 23,
|
||||
DPFLTR_ACPI_ID = 24,
|
||||
DPFLTR_AMLI_ID = 25,
|
||||
DPFLTR_HALIA64_ID = 26,
|
||||
DPFLTR_VIDEO_ID = 27,
|
||||
DPFLTR_SVCHOST_ID = 28,
|
||||
DPFLTR_VIDEOPRT_ID = 29,
|
||||
DPFLTR_TCPIP_ID = 30,
|
||||
DPFLTR_DMSYNTH_ID = 31,
|
||||
DPFLTR_NTOSPNP_ID = 32,
|
||||
DPFLTR_FASTFAT_ID = 33,
|
||||
DPFLTR_SAMSS_ID = 34,
|
||||
DPFLTR_PNPMGR_ID = 35,
|
||||
DPFLTR_NETAPI_ID = 36,
|
||||
DPFLTR_SCSERVER_ID = 37,
|
||||
DPFLTR_SCCLIENT_ID = 38,
|
||||
DPFLTR_SERIAL_ID = 39,
|
||||
DPFLTR_SERENUM_ID = 40,
|
||||
DPFLTR_UHCD_ID = 41,
|
||||
DPFLTR_BOOTOK_ID = 42,
|
||||
DPFLTR_BOOTVRFY_ID = 43,
|
||||
DPFLTR_RPCPROXY_ID = 44,
|
||||
DPFLTR_AUTOCHK_ID = 45,
|
||||
DPFLTR_DCOMSS_ID = 46,
|
||||
DPFLTR_UNIMODEM_ID = 47,
|
||||
DPFLTR_SIS_ID = 48,
|
||||
DPFLTR_FLTMGR_ID = 49,
|
||||
DPFLTR_WMICORE_ID = 50,
|
||||
DPFLTR_BURNENG_ID = 51,
|
||||
DPFLTR_IMAPI_ID = 52,
|
||||
DPFLTR_SXS_ID = 53,
|
||||
DPFLTR_FUSION_ID = 54,
|
||||
DPFLTR_IDLETASK_ID = 55,
|
||||
DPFLTR_SOFTPCI_ID = 56,
|
||||
DPFLTR_TAPE_ID = 57,
|
||||
DPFLTR_MCHGR_ID = 58,
|
||||
DPFLTR_IDEP_ID = 59,
|
||||
DPFLTR_PCIIDE_ID = 60,
|
||||
DPFLTR_FLOPPY_ID = 61,
|
||||
DPFLTR_FDC_ID = 62,
|
||||
DPFLTR_TERMSRV_ID = 63,
|
||||
DPFLTR_W32TIME_ID = 64,
|
||||
DPFLTR_PREFETCHER_ID = 65,
|
||||
DPFLTR_RSFILTER_ID = 66,
|
||||
DPFLTR_FCPORT_ID = 67,
|
||||
DPFLTR_PCI_ID = 68,
|
||||
DPFLTR_DMIO_ID = 69,
|
||||
DPFLTR_DMCONFIG_ID = 70,
|
||||
DPFLTR_DMADMIN_ID = 71,
|
||||
DPFLTR_WSOCKTRANSPORT_ID = 72,
|
||||
DPFLTR_VSS_ID = 73,
|
||||
DPFLTR_PNPMEM_ID = 74,
|
||||
DPFLTR_PROCESSOR_ID = 75,
|
||||
DPFLTR_DMSERVER_ID = 76,
|
||||
DPFLTR_SR_ID = 77,
|
||||
DPFLTR_INFINIBAND_ID = 78,
|
||||
DPFLTR_IHVDRIVER_ID = 79,
|
||||
DPFLTR_IHVVIDEO_ID = 80,
|
||||
DPFLTR_IHVAUDIO_ID = 81,
|
||||
DPFLTR_IHVNETWORK_ID = 82,
|
||||
DPFLTR_IHVSTREAMING_ID = 83,
|
||||
DPFLTR_IHVBUS_ID = 84,
|
||||
DPFLTR_HPS_ID = 85,
|
||||
DPFLTR_RTLTHREADPOOL_ID = 86,
|
||||
DPFLTR_LDR_ID = 87,
|
||||
DPFLTR_TCPIP6_ID = 88,
|
||||
DPFLTR_ISAPNP_ID = 89,
|
||||
DPFLTR_SHPC_ID = 90,
|
||||
DPFLTR_STORPORT_ID = 91,
|
||||
DPFLTR_STORMINIPORT_ID = 92,
|
||||
DPFLTR_PRINTSPOOLER_ID = 93,
|
||||
DPFLTR_VDS_ID = 94,
|
||||
DPFLTR_VDSBAS_ID = 95,
|
||||
DPFLTR_VDSDYNDR_ID = 96,
|
||||
DPFLTR_VDSUTIL_ID = 97,
|
||||
DPFLTR_DFRGIFC_ID = 98,
|
||||
DPFLTR_DEFAULT_ID = 99,
|
||||
DPFLTR_MM_ID = 100,
|
||||
DPFLTR_DFSC_ID = 101,
|
||||
DPFLTR_WOW64_ID = 102,
|
||||
DPFLTR_ENDOFTABLE_ID
|
||||
} DPFLTR_TYPE;
|
||||
#else
|
||||
typedef enum _DPFLTR_TYPE
|
||||
{
|
||||
DPFLTR_SYSTEM_ID = 0,
|
||||
DPFLTR_SMSS_ID = 1,
|
||||
DPFLTR_SETUP_ID = 2,
|
||||
DPFLTR_NTFS_ID = 3,
|
||||
DPFLTR_FSTUB_ID = 4,
|
||||
DPFLTR_CRASHDUMP_ID = 5,
|
||||
DPFLTR_CDAUDIO_ID = 6,
|
||||
DPFLTR_CDROM_ID = 7,
|
||||
DPFLTR_CLASSPNP_ID = 8,
|
||||
DPFLTR_DISK_ID = 9,
|
||||
DPFLTR_REDBOOK_ID = 10,
|
||||
DPFLTR_STORPROP_ID = 11,
|
||||
DPFLTR_SCSIPORT_ID = 12,
|
||||
DPFLTR_SCSIMINIPORT_ID = 13,
|
||||
DPFLTR_CONFIG_ID = 14,
|
||||
DPFLTR_I8042PRT_ID = 15,
|
||||
DPFLTR_SERMOUSE_ID = 16,
|
||||
DPFLTR_LSERMOUS_ID = 17,
|
||||
DPFLTR_KBDHID_ID = 18,
|
||||
DPFLTR_MOUHID_ID = 19,
|
||||
DPFLTR_KBDCLASS_ID = 20,
|
||||
DPFLTR_MOUCLASS_ID = 21,
|
||||
DPFLTR_TWOTRACK_ID = 22,
|
||||
DPFLTR_WMILIB_ID = 23,
|
||||
DPFLTR_ACPI_ID = 24,
|
||||
DPFLTR_AMLI_ID = 25,
|
||||
DPFLTR_HALIA64_ID = 26,
|
||||
DPFLTR_VIDEO_ID = 27,
|
||||
DPFLTR_SVCHOST_ID = 28,
|
||||
DPFLTR_VIDEOPRT_ID = 29,
|
||||
DPFLTR_TCPIP_ID = 30,
|
||||
DPFLTR_DMSYNTH_ID = 31,
|
||||
DPFLTR_NTOSPNP_ID = 32,
|
||||
DPFLTR_FASTFAT_ID = 33,
|
||||
DPFLTR_SAMSS_ID = 34,
|
||||
DPFLTR_PNPMGR_ID = 35,
|
||||
DPFLTR_NETAPI_ID = 36,
|
||||
DPFLTR_SCSERVER_ID = 37,
|
||||
DPFLTR_SCCLIENT_ID = 38,
|
||||
DPFLTR_SERIAL_ID = 39,
|
||||
DPFLTR_SERENUM_ID = 40,
|
||||
DPFLTR_UHCD_ID = 41,
|
||||
DPFLTR_RPCPROXY_ID = 42,
|
||||
DPFLTR_AUTOCHK_ID = 43,
|
||||
DPFLTR_DCOMSS_ID = 44,
|
||||
DPFLTR_UNIMODEM_ID = 45,
|
||||
DPFLTR_SIS_ID = 46,
|
||||
DPFLTR_FLTMGR_ID = 47,
|
||||
DPFLTR_WMICORE_ID = 48,
|
||||
DPFLTR_BURNENG_ID = 49,
|
||||
DPFLTR_IMAPI_ID = 50,
|
||||
DPFLTR_SXS_ID = 51,
|
||||
DPFLTR_FUSION_ID = 52,
|
||||
DPFLTR_IDLETASK_ID = 53,
|
||||
DPFLTR_SOFTPCI_ID = 54,
|
||||
DPFLTR_TAPE_ID = 55,
|
||||
DPFLTR_MCHGR_ID = 56,
|
||||
DPFLTR_IDEP_ID = 57,
|
||||
DPFLTR_PCIIDE_ID = 58,
|
||||
DPFLTR_FLOPPY_ID = 59,
|
||||
DPFLTR_FDC_ID = 60,
|
||||
DPFLTR_TERMSRV_ID = 61,
|
||||
DPFLTR_W32TIME_ID = 62,
|
||||
DPFLTR_PREFETCHER_ID = 63,
|
||||
DPFLTR_RSFILTER_ID = 64,
|
||||
DPFLTR_FCPORT_ID = 65,
|
||||
DPFLTR_PCI_ID = 66,
|
||||
DPFLTR_DMIO_ID = 67,
|
||||
DPFLTR_DMCONFIG_ID = 68,
|
||||
DPFLTR_DMADMIN_ID = 69,
|
||||
DPFLTR_WSOCKTRANSPORT_ID = 70,
|
||||
DPFLTR_VSS_ID = 71,
|
||||
DPFLTR_PNPMEM_ID = 72,
|
||||
DPFLTR_PROCESSOR_ID = 73,
|
||||
DPFLTR_DMSERVER_ID = 74,
|
||||
DPFLTR_SR_ID = 75,
|
||||
DPFLTR_INFINIBAND_ID = 76,
|
||||
DPFLTR_IHVDRIVER_ID = 77,
|
||||
DPFLTR_IHVVIDEO_ID = 78,
|
||||
DPFLTR_IHVAUDIO_ID = 79,
|
||||
DPFLTR_IHVNETWORK_ID = 80,
|
||||
DPFLTR_IHVSTREAMING_ID = 81,
|
||||
DPFLTR_IHVBUS_ID = 82,
|
||||
DPFLTR_HPS_ID = 83,
|
||||
DPFLTR_RTLTHREADPOOL_ID = 84,
|
||||
DPFLTR_LDR_ID = 85,
|
||||
DPFLTR_TCPIP6_ID = 86,
|
||||
DPFLTR_ISAPNP_ID = 87,
|
||||
DPFLTR_SHPC_ID = 88,
|
||||
DPFLTR_STORPORT_ID = 89,
|
||||
DPFLTR_STORMINIPORT_ID = 90,
|
||||
DPFLTR_PRINTSPOOLER_ID = 91,
|
||||
DPFLTR_VSSDYNDISK_ID = 92,
|
||||
DPFLTR_VERIFIER_ID = 93,
|
||||
DPFLTR_VDS_ID = 94,
|
||||
DPFLTR_VDSBAS_ID = 95,
|
||||
DPFLTR_VDSDYN_ID = 96,
|
||||
DPFLTR_VDSDYNDR_ID = 97,
|
||||
DPFLTR_VDSLDR_ID = 98,
|
||||
DPFLTR_VDSUTIL_ID = 99,
|
||||
DPFLTR_DFRGIFC_ID = 100,
|
||||
DPFLTR_DEFAULT_ID = 101,
|
||||
DPFLTR_MM_ID = 102,
|
||||
DPFLTR_DFSC_ID = 103,
|
||||
DPFLTR_WOW64_ID = 104,
|
||||
DPFLTR_ALPC_ID = 105,
|
||||
DPFLTR_WDI_ID = 106,
|
||||
DPFLTR_PERFLIB_ID = 107,
|
||||
DPFLTR_KTM_ID = 108,
|
||||
DPFLTR_IOSTRESS_ID = 109,
|
||||
DPFLTR_HEAP_ID = 110,
|
||||
DPFLTR_WHEA_ID = 111,
|
||||
DPFLTR_USERGDI_ID = 112,
|
||||
DPFLTR_MMCSS_ID = 113,
|
||||
DPFLTR_TPM_ID = 114,
|
||||
DPFLTR_THREADORDER_ID = 115,
|
||||
DPFLTR_ENVIRON_ID = 116,
|
||||
DPFLTR_EMS_ID = 117,
|
||||
DPFLTR_WDT_ID = 118,
|
||||
DPFLTR_FVEVOL_ID = 119,
|
||||
DPFLTR_NDIS_ID = 120,
|
||||
DPFLTR_NVCTRACE_ID = 121,
|
||||
DPFLTR_LUAFV_ID = 122,
|
||||
DPFLTR_APPCOMPAT_ID = 123,
|
||||
DPFLTR_USBSTOR_ID = 124,
|
||||
DPFLTR_SBP2PORT_ID = 125,
|
||||
DPFLTR_COVERAGE_ID = 126,
|
||||
DPFLTR_CACHEMGR_ID = 127,
|
||||
DPFLTR_MOUNTMGR_ID = 128,
|
||||
DPFLTR_CFR_ID = 129,
|
||||
DPFLTR_TXF_ID = 130,
|
||||
DPFLTR_KSECDD_ID = 131,
|
||||
DPFLTR_FLTREGRESS_ID = 132,
|
||||
DPFLTR_MPIO_ID = 133,
|
||||
DPFLTR_MSDSM_ID = 134,
|
||||
DPFLTR_UDFS_ID = 135,
|
||||
DPFLTR_PSHED_ID = 136,
|
||||
DPFLTR_STORVSP_ID = 137,
|
||||
DPFLTR_LSASS_ID = 138,
|
||||
DPFLTR_SSPICLI_ID = 139,
|
||||
DPFLTR_CNG_ID = 140,
|
||||
DPFLTR_EXFAT_ID = 141,
|
||||
DPFLTR_FILETRACE_ID = 142,
|
||||
DPFLTR_XSAVE_ID = 143,
|
||||
DPFLTR_SE_ID = 144,
|
||||
DPFLTR_DRIVEEXTENDER_ID = 145,
|
||||
DPFLTR_ENDOFTABLE_ID
|
||||
} DPFLTR_TYPE;
|
||||
#endif
|
147
reactos/include/psdk/ktmtypes.h
Normal file
147
reactos/include/psdk/ktmtypes.h
Normal file
|
@ -0,0 +1,147 @@
|
|||
|
||||
#ifndef _KTMTYPES_
|
||||
#define _KTMTYPES_
|
||||
|
||||
#define TRANSACTION_MANAGER_VOLATILE 0x00000001
|
||||
#define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x00000000
|
||||
#define TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 0x00000002
|
||||
#define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x00000004
|
||||
#define TRANSACTION_MANAGER_COMMIT_LOWEST 0x00000008
|
||||
#define TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 0x00000010
|
||||
#define TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 0x00000020
|
||||
#define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x0000003F
|
||||
|
||||
#define TRANSACTION_DO_NOT_PROMOTE 0x00000001
|
||||
#define TRANSACTION_MAXIMUM_OPTION 0x00000001
|
||||
|
||||
#define RESOURCE_MANAGER_VOLATILE 0x00000001
|
||||
#define RESOURCE_MANAGER_COMMUNICATION 0x00000002
|
||||
#define RESOURCE_MANAGER_MAXIMUM_OPTION 0x00000003
|
||||
|
||||
#define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x00000001
|
||||
#define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x00000002
|
||||
#define CRM_PROTOCOL_MAXIMUM_OPTION 0x00000003
|
||||
|
||||
#define ENLISTMENT_SUPERIOR 0x00000001
|
||||
#define ENLISTMENT_MAXIMUM_OPTION 0x00000001
|
||||
|
||||
#define TRANSACTION_NOTIFY_MASK 0x3FFFFFFF
|
||||
#define TRANSACTION_NOTIFY_PREPREPARE 0x00000001
|
||||
#define TRANSACTION_NOTIFY_PREPARE 0x00000002
|
||||
#define TRANSACTION_NOTIFY_COMMIT 0x00000004
|
||||
#define TRANSACTION_NOTIFY_ROLLBACK 0x00000008
|
||||
#define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x00000010
|
||||
#define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x00000020
|
||||
#define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x00000040
|
||||
#define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x00000080
|
||||
#define TRANSACTION_NOTIFY_RECOVER 0x00000100
|
||||
#define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x00000200
|
||||
#define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x00000400
|
||||
#define TRANSACTION_NOTIFY_RECOVER_QUERY 0x00000800
|
||||
#define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x00001000
|
||||
#define TRANSACTION_NOTIFY_LAST_RECOVER 0x00002000
|
||||
#define TRANSACTION_NOTIFY_INDOUBT 0x00004000
|
||||
#define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x00008000
|
||||
#define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x00010000
|
||||
#define TRANSACTION_NOTIFY_MARSHAL 0x00020000
|
||||
#define TRANSACTION_NOTIFY_ENLIST_MASK 0x00040000
|
||||
#define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x01000000
|
||||
#define TRANSACTION_NOTIFY_TM_ONLINE 0x02000000
|
||||
#define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x04000000
|
||||
#define TRANSACTION_NOTIFY_PROMOTE 0x08000000
|
||||
#define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000
|
||||
#define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000
|
||||
|
||||
#define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000
|
||||
|
||||
#define TRANSACTIONMANAGER_OBJECT_PATH L"\\TransactionManager\\"
|
||||
#define TRANSACTION_OBJECT_PATH L"\\Transaction\\"
|
||||
#define ENLISTMENT_OBJECT_PATH L"\\Enlistment\\"
|
||||
#define RESOURCE_MANAGER_OBJECT_PATH L"\\ResourceManager\\"
|
||||
|
||||
#define TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(TRANSACTIONMANAGER_OBJECT_PATH)+(38*sizeof(WCHAR)))
|
||||
#define TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(TRANSACTION_OBJECT_PATH)+(38*sizeof(WCHAR)))
|
||||
#define ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(ENLISTMENT_OBJECT_PATH)+(38*sizeof(WCHAR)))
|
||||
#define RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(RESOURCE_MANAGER_OBJECT_PATH)+(38*sizeof(WCHAR)))
|
||||
|
||||
#define TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED 0x1
|
||||
|
||||
#define KTM_MARSHAL_BLOB_VERSION_MAJOR 1
|
||||
#define KTM_MARSHAL_BLOB_VERSION_MINOR 1
|
||||
|
||||
#define MAX_TRANSACTION_DESCRIPTION_LENGTH 64
|
||||
#define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64
|
||||
|
||||
typedef GUID UOW, *PUOW;
|
||||
typedef GUID CRM_PROTOCOL_ID, *PCRM_PROTOCOL_ID;
|
||||
typedef ULONG NOTIFICATION_MASK;
|
||||
typedef ULONG SAVEPOINT_ID, *PSAVEPOINT_ID;
|
||||
|
||||
typedef struct _TRANSACTION_NOTIFICATION {
|
||||
PVOID TransactionKey;
|
||||
ULONG TransactionNotification;
|
||||
LARGE_INTEGER TmVirtualClock;
|
||||
ULONG ArgumentLength;
|
||||
} TRANSACTION_NOTIFICATION, *PTRANSACTION_NOTIFICATION;
|
||||
|
||||
typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT {
|
||||
GUID EnlistmentId;
|
||||
#if defined(__cplusplus)
|
||||
::UOW UOW;
|
||||
#else
|
||||
UOW UOW;
|
||||
#endif
|
||||
} TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT, *PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT;
|
||||
|
||||
typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT {
|
||||
GUID TmIdentity;
|
||||
ULONG Flags;
|
||||
} TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT, *PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT;
|
||||
|
||||
typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT {
|
||||
SAVEPOINT_ID SavepointId;
|
||||
} TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT, *PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT;
|
||||
|
||||
typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT {
|
||||
ULONG PropagationCookie;
|
||||
GUID UOW;
|
||||
GUID TmIdentity;
|
||||
ULONG BufferLength;
|
||||
} TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT,
|
||||
TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT;
|
||||
|
||||
typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT {
|
||||
ULONG MarshalCookie;
|
||||
GUID UOW;
|
||||
} TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT, *PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT;
|
||||
|
||||
typedef struct _KCRM_MARSHAL_HEADER {
|
||||
ULONG VersionMajor;
|
||||
ULONG VersionMinor;
|
||||
ULONG NumProtocols;
|
||||
ULONG Unused;
|
||||
} KCRM_MARSHAL_HEADER, *PKCRM_MARSHAL_HEADER, *RESTRICTED_POINTER PRKCRM_MARSHAL_HEADER;
|
||||
|
||||
typedef struct _KCRM_TRANSACTION_BLOB {
|
||||
#if defined(__cplusplus)
|
||||
::UOW UOW;
|
||||
#else
|
||||
UOW UOW;
|
||||
#endif
|
||||
GUID TmIdentity;
|
||||
ULONG IsolationLevel;
|
||||
ULONG IsolationFlags;
|
||||
ULONG Timeout;
|
||||
WCHAR Description[MAX_TRANSACTION_DESCRIPTION_LENGTH];
|
||||
} KCRM_TRANSACTION_BLOB, *PKCRM_TRANSACTION_BLOB, *RESTRICTED_POINTER PRKCRM_TRANSACTION_BLOB;
|
||||
|
||||
typedef struct _KCRM_PROTOCOL_BLOB {
|
||||
CRM_PROTOCOL_ID ProtocolId;
|
||||
ULONG StaticInfoLength;
|
||||
ULONG TransactionIdInfoLength;
|
||||
ULONG Unused1;
|
||||
ULONG Unused2;
|
||||
} KCRM_PROTOCOL_BLOB, *PKCRM_PROTOCOL_BLOB, *RESTRICTED_POINTER PRKCRM_PROTOCOL_BLOB;
|
||||
|
||||
#endif /* _KTMTYPES_ */
|
||||
|
|
@ -63,6 +63,13 @@ DEFINE_GUID(GUID_DEVINTERFACE_KEYBOARD, \
|
|||
#define KEY_E0 2
|
||||
#define KEY_E1 4
|
||||
|
||||
#define KEYBOARD_LED_INJECTED 0x8000
|
||||
#define KEYBOARD_SHADOW 0x4000
|
||||
#define KEYBOARD_KANA_LOCK_ON 8
|
||||
#define KEYBOARD_CAPS_LOCK_ON 4
|
||||
#define KEYBOARD_NUM_LOCK_ON 2
|
||||
#define KEYBOARD_SCROLL_LOCK_ON 1
|
||||
|
||||
typedef struct _KEYBOARD_INPUT_DATA {
|
||||
USHORT UnitId;
|
||||
USHORT MakeCode;
|
|
@ -13,6 +13,14 @@
|
|||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef unsigned long POINTER_64; // FIXME! HACK!!!
|
||||
|
||||
|
@ -79,22 +87,33 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!!
|
|||
#endif
|
||||
#endif // NULL
|
||||
|
||||
typedef enum _EVENT_TYPE {
|
||||
NotificationEvent,
|
||||
SynchronizationEvent
|
||||
} EVENT_TYPE;
|
||||
|
||||
typedef enum _TIMER_TYPE {
|
||||
NotificationTimer,
|
||||
SynchronizationTimer
|
||||
} TIMER_TYPE;
|
||||
|
||||
typedef enum _WAIT_TYPE {
|
||||
WaitAll,
|
||||
WaitAny
|
||||
} WAIT_TYPE;
|
||||
|
||||
//
|
||||
// FIXME
|
||||
// We should use the -fms-extensions compiler flag for gcc,
|
||||
// and clean up the mess.
|
||||
//
|
||||
#ifndef __ANONYMOUS_DEFINED
|
||||
#define __ANONYMOUS_DEFINED
|
||||
|
||||
#ifndef NONAMELESSUNION
|
||||
#ifdef __GNUC__
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
|
||||
#define _ANONYMOUS_UNION __extension__
|
||||
#define _ANONYMOUS_STRUCT __extension__
|
||||
#else
|
||||
#if defined(__cplusplus)
|
||||
#define _ANONYMOUS_UNION __extension__
|
||||
#endif /* __cplusplus */
|
||||
#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
|
||||
#define _ANONYMOUS_UNION __GNU_EXTENSION
|
||||
#define _ANONYMOUS_STRUCT __GNU_EXTENSION
|
||||
#elif defined(__WATCOMC__) || defined(_MSC_VER)
|
||||
#define _ANONYMOUS_UNION
|
||||
#define _ANONYMOUS_STRUCT
|
||||
|
@ -130,20 +149,28 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!!
|
|||
#define DUMMYSTRUCTNAME s
|
||||
#define DUMMYSTRUCTNAME2 s2
|
||||
#define DUMMYSTRUCTNAME3 s3
|
||||
#define DUMMYSTRUCTNAME4 s4
|
||||
#define DUMMYSTRUCTNAME5 s5
|
||||
#else
|
||||
#define _STRUCT_NAME(x)
|
||||
#define DUMMYSTRUCTNAME
|
||||
#define DUMMYSTRUCTNAME2
|
||||
#define DUMMYSTRUCTNAME3
|
||||
#define DUMMYSTRUCTNAME4
|
||||
#define DUMMYSTRUCTNAME5
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __ANONYMOUS_DEFINED */
|
||||
|
||||
// FIXME
|
||||
#undef UNALIGNED
|
||||
#define UNALIGNED
|
||||
#define RESTRICTED_POINTER
|
||||
|
||||
|
||||
#define ARGUMENT_PRESENT(ArgumentPointer) \
|
||||
((CHAR*)((ULONG_PTR)(ArgumentPointer)) != (CHAR*)NULL)
|
||||
|
||||
//
|
||||
// Returns the base address of a structure from a structure member
|
||||
//
|
||||
|
@ -332,7 +359,7 @@ typedef struct _QUAD
|
|||
{
|
||||
_ANONYMOUS_UNION union
|
||||
{
|
||||
__int64 UseThisFieldToCopy;
|
||||
__GNU_EXTENSION __int64 UseThisFieldToCopy;
|
||||
double DoNotUseThisField;
|
||||
};
|
||||
} QUAD, *PQUAD, UQUAD, *PUQUAD;
|
||||
|
@ -354,6 +381,9 @@ typedef ULONG FLONG;
|
|||
typedef UCHAR BOOLEAN;
|
||||
typedef BOOLEAN *PBOOLEAN;
|
||||
|
||||
typedef ULONG LOGICAL;
|
||||
typedef ULONG *PLOGICAL;
|
||||
|
||||
//
|
||||
// Signed Types
|
||||
//
|
||||
|
@ -374,8 +404,8 @@ typedef LONG HRESULT;
|
|||
//
|
||||
// 64-bit types
|
||||
//
|
||||
typedef __int64 LONGLONG, *PLONGLONG;
|
||||
typedef unsigned __int64 ULONGLONG, *PULONGLONG;
|
||||
__GNU_EXTENSION typedef __int64 LONGLONG, *PLONGLONG;
|
||||
__GNU_EXTENSION typedef unsigned __int64 ULONGLONG, *PULONGLONG;
|
||||
typedef ULONGLONG DWORDLONG, *PDWORDLONG;
|
||||
|
||||
//
|
||||
|
@ -644,6 +674,19 @@ typedef struct _SINGLE_LIST_ENTRY {
|
|||
} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
||||
|
||||
|
||||
typedef struct _PROCESSOR_NUMBER {
|
||||
USHORT Group;
|
||||
UCHAR Number;
|
||||
UCHAR Reserved;
|
||||
} PROCESSOR_NUMBER, *PPROCESSOR_NUMBER;
|
||||
|
||||
typedef EXCEPTION_DISPOSITION
|
||||
(DDKAPI *PEXCEPTION_ROUTINE)(
|
||||
IN struct _EXCEPTION_RECORD *ExceptionRecord,
|
||||
IN PVOID EstablisherFrame,
|
||||
IN OUT struct _CONTEXT *ContextRecord,
|
||||
IN OUT PVOID DispatcherContext);
|
||||
|
||||
|
||||
//
|
||||
// Helper Macros
|
|
@ -24,6 +24,7 @@ Abstract:
|
|||
#define _WIN32_WINNT_VISTA 0x0600
|
||||
#define _WIN32_WINNT_WS08 0x0600
|
||||
#define _WIN32_WINNT_LONGHORN 0x0600
|
||||
#define _WIN32_WINNT_WIN7 0x0601
|
||||
|
||||
/* _WIN32_IE */
|
||||
#define _WIN32_IE_IE20 0x0200
|
||||
|
@ -38,6 +39,7 @@ Abstract:
|
|||
#define _WIN32_IE_IE60SP1 0x0601
|
||||
#define _WIN32_IE_IE60SP2 0x0603
|
||||
#define _WIN32_IE_IE70 0x0700
|
||||
#define _WIN32_IE_IE80 0x0800
|
||||
|
||||
/* Mappings Between IE Version and Windows Version */
|
||||
#define _WIN32_IE_NT4 _WIN32_IE_IE20
|
||||
|
@ -62,6 +64,7 @@ Abstract:
|
|||
#define _WIN32_IE_WS03SP1 _WIN32_IE_IE60SP2
|
||||
#define _WIN32_IE_WIN6 _WIN32_IE_IE70
|
||||
#define _WIN32_IE_LONGHORN _WIN32_IE_IE70
|
||||
#define _WIN32_IE_WIN7 _WIN32_IE_IE80
|
||||
|
||||
/* NTDDI_VERSION */
|
||||
#define NTDDI_WIN2K 0x05000000
|
||||
|
@ -94,6 +97,7 @@ Abstract:
|
|||
#define NTDDI_WS08SP2 NTDDI_WIN6SP2
|
||||
#define NTDDI_WS08SP3 NTDDI_WIN6SP3
|
||||
#define NTDDI_WS08SP4 NTDDI_WIN6SP4
|
||||
#define NTDDI_WIN7 0x06010000
|
||||
|
||||
/* Version Fields in NTDDI_VERSION */
|
||||
#define OSVERSION_MASK 0xFFFF0000
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#ifndef __USB_H__
|
||||
#define __USB_H__
|
||||
|
||||
#ifdef __USBDI_H__
|
||||
error
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef OSR21_COMPAT
|
||||
|
@ -18,358 +20,45 @@ typedef PVOID PMDL;
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#define USBDI_VERSION 0x00000500
|
||||
#define USBDI_VERSION 0x00000600
|
||||
|
||||
#include "usb200.h"
|
||||
|
||||
typedef LONG USBD_STATUS;
|
||||
typedef PVOID USBD_PIPE_HANDLE;
|
||||
typedef PVOID USBD_CONFIGURATION_HANDLE;
|
||||
typedef PVOID USBD_INTERFACE_HANDLE;
|
||||
|
||||
typedef enum _USB_CONTROLLER_FLAVOR
|
||||
{
|
||||
USB_HcGeneric = 0,
|
||||
OHCI_Generic = 100,
|
||||
OHCI_Hydra,
|
||||
OHCI_NEC,
|
||||
UHCI_Generic = 200,
|
||||
UHCI_Piix4,
|
||||
UHCI_Piix3,
|
||||
UHCI_Ich2_1,
|
||||
UHCI_Ich2_2,
|
||||
UHCI_Ich1,
|
||||
UHCI_VIA = 250,
|
||||
EHCI_Generic = 1000,
|
||||
EHCI_NEC = 2000,
|
||||
EHCI_Lucent = 3000
|
||||
} USB_CONTROLLER_FLAVOR;
|
||||
|
||||
typedef enum _USBD_PIPE_TYPE
|
||||
{
|
||||
UsbdPipeTypeControl,
|
||||
UsbdPipeTypeIsochronous,
|
||||
UsbdPipeTypeBulk,
|
||||
UsbdPipeTypeInterrupt
|
||||
} USBD_PIPE_TYPE;
|
||||
|
||||
typedef struct _USBD_VERSION_INFORMATION
|
||||
{
|
||||
ULONG USBDI_Version;
|
||||
ULONG Supported_USB_Version;
|
||||
} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
|
||||
|
||||
typedef struct _USBD_PIPE_INFORMATION
|
||||
{
|
||||
USHORT MaximumPacketSize;
|
||||
UCHAR EndpointAddress;
|
||||
UCHAR Interval;
|
||||
USBD_PIPE_TYPE PipeType;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG MaximumTransferSize;
|
||||
ULONG PipeFlags;
|
||||
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
|
||||
|
||||
typedef struct _USBD_DEVICE_INFORMATION
|
||||
{
|
||||
ULONG OffsetNext;
|
||||
PVOID UsbdDeviceHandle;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION;
|
||||
|
||||
typedef struct _USBD_INTERFACE_INFORMATION
|
||||
{
|
||||
USHORT Length;
|
||||
UCHAR InterfaceNumber;
|
||||
UCHAR AlternateSetting;
|
||||
UCHAR Class;
|
||||
UCHAR SubClass;
|
||||
UCHAR Protocol;
|
||||
UCHAR Reserved;
|
||||
USBD_INTERFACE_HANDLE InterfaceHandle;
|
||||
ULONG NumberOfPipes;
|
||||
USBD_PIPE_INFORMATION Pipes[1];
|
||||
} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
|
||||
|
||||
struct _URB_HCD_AREA
|
||||
{
|
||||
PVOID Reserved8[8];
|
||||
};
|
||||
|
||||
struct _URB_HEADER
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT Function;
|
||||
USBD_STATUS Status;
|
||||
PVOID UsbdDeviceHandle;
|
||||
ULONG UsbdFlags;
|
||||
};
|
||||
|
||||
struct _URB_SELECT_INTERFACE
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
|
||||
USBD_INTERFACE_INFORMATION Interface;
|
||||
};
|
||||
|
||||
struct _URB_SELECT_CONFIGURATION
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
|
||||
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
|
||||
USBD_INTERFACE_INFORMATION Interface;
|
||||
};
|
||||
|
||||
struct _URB_PIPE_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG Reserved;
|
||||
};
|
||||
|
||||
struct _URB_FRAME_LENGTH_CONTROL
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
};
|
||||
|
||||
struct _URB_GET_FRAME_LENGTH
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
ULONG FrameLength;
|
||||
ULONG FrameNumber;
|
||||
};
|
||||
|
||||
struct _URB_SET_FRAME_LENGTH
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
LONG FrameLengthDelta;
|
||||
};
|
||||
|
||||
struct _URB_GET_CURRENT_FRAME_NUMBER
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
ULONG FrameNumber;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_DESCRIPTOR_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
USHORT Reserved1;
|
||||
UCHAR Index;
|
||||
UCHAR DescriptorType;
|
||||
USHORT LanguageId;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_STATUS_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[4];
|
||||
USHORT Index;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_FEATURE_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved2;
|
||||
ULONG Reserved3;
|
||||
PVOID Reserved4;
|
||||
PMDL Reserved5;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
USHORT Reserved0;
|
||||
USHORT FeatureSelector;
|
||||
USHORT Index;
|
||||
USHORT Reserved1;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR RequestTypeReservedBits;
|
||||
UCHAR Request;
|
||||
USHORT Value;
|
||||
USHORT Index;
|
||||
USHORT Reserved1;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_INTERFACE_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[4];
|
||||
USHORT Interface;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[8];
|
||||
};
|
||||
|
||||
typedef struct _OS_STRING
|
||||
{
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
WCHAR MicrosoftString[7];
|
||||
UCHAR bVendorCode;
|
||||
UCHAR bPad;
|
||||
} OS_STRING, *POS_STRING;
|
||||
|
||||
|
||||
struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Recipient:5;
|
||||
UCHAR Reserved1:3;
|
||||
UCHAR Reserved2;
|
||||
UCHAR InterfaceNumber;
|
||||
UCHAR MS_PageIndex;
|
||||
USHORT MS_FeatureDescriptorIndex;
|
||||
USHORT Reserved3;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_TRANSFER
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR SetupPacket[8];
|
||||
};
|
||||
|
||||
struct _URB_BULK_OR_INTERRUPT_TRANSFER
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
};
|
||||
|
||||
typedef struct _USBD_ISO_PACKET_DESCRIPTOR
|
||||
{
|
||||
ULONG Offset;
|
||||
ULONG Length;
|
||||
USBD_STATUS Status;
|
||||
} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
|
||||
|
||||
struct _URB_ISOCH_TRANSFER
|
||||
{
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
ULONG StartFrame;
|
||||
ULONG NumberOfPackets;
|
||||
ULONG ErrorCount;
|
||||
USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
|
||||
};
|
||||
|
||||
typedef struct _URB
|
||||
{
|
||||
union
|
||||
{
|
||||
struct _URB_HEADER
|
||||
UrbHeader;
|
||||
struct _URB_SELECT_INTERFACE
|
||||
UrbSelectInterface;
|
||||
struct _URB_SELECT_CONFIGURATION
|
||||
UrbSelectConfiguration;
|
||||
struct _URB_PIPE_REQUEST
|
||||
UrbPipeRequest;
|
||||
struct _URB_FRAME_LENGTH_CONTROL
|
||||
UrbFrameLengthControl;
|
||||
struct _URB_GET_FRAME_LENGTH
|
||||
UrbGetFrameLength;
|
||||
struct _URB_SET_FRAME_LENGTH
|
||||
UrbSetFrameLength;
|
||||
struct _URB_GET_CURRENT_FRAME_NUMBER
|
||||
UrbGetCurrentFrameNumber;
|
||||
struct _URB_CONTROL_TRANSFER
|
||||
UrbControlTransfer;
|
||||
struct _URB_BULK_OR_INTERRUPT_TRANSFER
|
||||
UrbBulkOrInterruptTransfer;
|
||||
struct _URB_ISOCH_TRANSFER
|
||||
UrbIsochronousTransfer;
|
||||
struct _URB_CONTROL_DESCRIPTOR_REQUEST
|
||||
UrbControlDescriptorRequest;
|
||||
struct _URB_CONTROL_GET_STATUS_REQUEST
|
||||
UrbControlGetStatusRequest;
|
||||
struct _URB_CONTROL_FEATURE_REQUEST
|
||||
UrbControlFeatureRequest;
|
||||
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST
|
||||
UrbControlVendorClassRequest;
|
||||
struct _URB_CONTROL_GET_INTERFACE_REQUEST
|
||||
UrbControlGetInterfaceRequest;
|
||||
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST
|
||||
UrbControlGetConfigurationRequest;
|
||||
struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST
|
||||
UrbOSFeatureDescriptorRequest;
|
||||
};
|
||||
} URB, *PURB;
|
||||
|
||||
#define USB_PORTATTR_NO_CONNECTOR 0x00000001
|
||||
#define USB_PORTATTR_SHARED_USB2 0x00000002
|
||||
#define USB_PORTATTR_MINI_CONNECTOR 0x00000004
|
||||
#define USB_PORTATTR_OEM_CONNECTOR 0x00000008
|
||||
#define USB_PORTATTR_OWNED_BY_CC 0x01000000
|
||||
#define USB_PORTATTR_NO_OVERCURRENT_UI 0x02000000
|
||||
|
||||
typedef enum _USB_CONTROLLER_FLAVOR {
|
||||
USB_HcGeneric = 0,
|
||||
OHCI_Generic = 100,
|
||||
OHCI_Hydra,
|
||||
OHCI_NEC,
|
||||
UHCI_Generic = 200,
|
||||
UHCI_Piix4 = 201,
|
||||
UHCI_Piix3 = 202,
|
||||
UHCI_Ich2 = 203,
|
||||
UHCI_Reserved204 = 204,
|
||||
UHCI_Ich1 = 205,
|
||||
UHCI_Ich3m = 206,
|
||||
UHCI_Ich4 = 207,
|
||||
UHCI_Ich5 = 208,
|
||||
UHCI_Ich6 = 209,
|
||||
UHCI_Intel = 249,
|
||||
UHCI_VIA = 250,
|
||||
UHCI_VIA_x01 = 251,
|
||||
UHCI_VIA_x02 = 252,
|
||||
UHCI_VIA_x03 = 253,
|
||||
UHCI_VIA_x04 = 254,
|
||||
UHCI_VIA_x0E_FIFO = 264,
|
||||
EHCI_Generic = 1000,
|
||||
EHCI_NEC = 2000,
|
||||
EHCI_Lucent = 3000
|
||||
} USB_CONTROLLER_FLAVOR;
|
||||
|
||||
|
||||
#define USB_DEFAULT_DEVICE_ADDRESS 0
|
||||
#define USB_DEFAULT_ENDPOINT_ADDRESS 0
|
||||
#define USB_DEFAULT_MAX_PACKET 64
|
||||
|
@ -416,15 +105,31 @@ typedef struct _URB
|
|||
#define URB_FUNCTION_GET_INTERFACE 0x0027
|
||||
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE 0x0028
|
||||
#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE 0x0029
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
#define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR 0x002A
|
||||
#define URB_FUNCTION_SYNC_RESET_PIPE 0x0030
|
||||
#define URB_FUNCTION_SYNC_CLEAR_STALL 0x0031
|
||||
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
#define URB_FUNCTION_CONTROL_TRANSFER_EX 0x0032
|
||||
#define URB_FUNCTION_RESERVE_0X0033 0x0033
|
||||
#define URB_FUNCTION_RESERVE_0X0034 0x0034
|
||||
|
||||
#endif
|
||||
|
||||
#define URB_FUNCTION_RESERVE_0X002B 0x002B
|
||||
#define URB_FUNCTION_RESERVE_0X002C 0x002C
|
||||
#define URB_FUNCTION_RESERVE_0X002D 0x002D
|
||||
#define URB_FUNCTION_RESERVE_0X002E 0x002E
|
||||
#define URB_FUNCTION_RESERVE_0X002F 0x002F
|
||||
#define URB_FUNCTION_SYNC_RESET_PIPE 0x0030
|
||||
#define URB_FUNCTION_SYNC_CLEAR_STALL 0x0031
|
||||
|
||||
#define URB_FUNCTION_RESET_PIPE URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL
|
||||
|
||||
#define USBD_TRANSFER_DIRECTION 0x00000001
|
||||
#define USBD_SHORT_TRANSFER_OK 0x00000002
|
||||
#define USBD_START_ISO_TRANSFER_ASAP 0x00000004
|
||||
|
@ -436,6 +141,9 @@ typedef struct _URB
|
|||
#define VALID_TRANSFER_FLAGS_MASK (USBD_SHORT_TRANSFER_OK | USBD_TRANSFER_DIRECTION | \
|
||||
USBD_START_ISO_TRANSFER_ASAP | USBD_DEFAULT_PIPE_TRANSFER)
|
||||
#define USBD_ISO_START_FRAME_RANGE 1024
|
||||
|
||||
typedef LONG USBD_STATUS;
|
||||
|
||||
#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
|
||||
#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)
|
||||
#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)
|
||||
|
@ -481,22 +189,347 @@ typedef struct _URB
|
|||
#define USBD_STATUS_TIMEOUT ((USBD_STATUS)0xC0006000L)
|
||||
#define USBD_STATUS_DEVICE_GONE ((USBD_STATUS)0xC0007000L)
|
||||
#define USBD_STATUS_STATUS_NOT_MAPPED ((USBD_STATUS)0xC0008000L)
|
||||
#define USBD_STATUS_HUB_INTERNAL_ERROR ((USBD_STATUS)0xC0009000L)
|
||||
#define USBD_STATUS_CANCELED ((USBD_STATUS)0xC0010000L)
|
||||
#define USBD_STATUS_ISO_NOT_ACCESSED_BY_HW ((USBD_STATUS)0xC0020000L)
|
||||
#define USBD_STATUS_ISO_TD_ERROR ((USBD_STATUS)0xC0030000L)
|
||||
#define USBD_STATUS_ISO_NA_LATE_USBPORT ((USBD_STATUS)0xC0040000L)
|
||||
#define USBD_STATUS_ISO_NOT_ACCESSED_LATE ((USBD_STATUS)0xC0050000L)
|
||||
#define USBD_STATUS_BAD_DESCRIPTOR ((USBD_STATUS)0xC0100000L)
|
||||
#define USBD_STATUS_BAD_DESCRIPTOR_BLEN ((USBD_STATUS)0xC0100001L)
|
||||
#define USBD_STATUS_BAD_DESCRIPTOR_TYPE ((USBD_STATUS)0xC0100002L)
|
||||
#define USBD_STATUS_BAD_INTERFACE_DESCRIPTOR ((USBD_STATUS)0xC0100003L)
|
||||
#define USBD_STATUS_BAD_ENDPOINT_DESCRIPTOR ((USBD_STATUS)0xC0100004L)
|
||||
#define USBD_STATUS_BAD_INTERFACE_ASSOC_DESCRIPTOR ((USBD_STATUS)0xC0100005L)
|
||||
#define USBD_STATUS_BAD_CONFIG_DESC_LENGTH ((USBD_STATUS)0xC0100006L)
|
||||
#define USBD_STATUS_BAD_NUMBER_OF_INTERFACES ((USBD_STATUS)0xC0100007L)
|
||||
#define USBD_STATUS_BAD_NUMBER_OF_ENDPOINTS ((USBD_STATUS)0xC0100008L)
|
||||
#define USBD_STATUS_BAD_ENDPOINT_ADDRESS ((USBD_STATUS)0xC0100009L)
|
||||
|
||||
typedef PVOID USBD_PIPE_HANDLE;
|
||||
typedef PVOID USBD_CONFIGURATION_HANDLE;
|
||||
typedef PVOID USBD_INTERFACE_HANDLE;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE 0xFFFFFFFF
|
||||
#else
|
||||
#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE PAGE_SIZE
|
||||
#endif
|
||||
|
||||
typedef struct _USBD_VERSION_INFORMATION {
|
||||
ULONG USBDI_Version;
|
||||
ULONG Supported_USB_Version;
|
||||
} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
|
||||
|
||||
typedef enum _USBD_PIPE_TYPE {
|
||||
UsbdPipeTypeControl,
|
||||
UsbdPipeTypeIsochronous,
|
||||
UsbdPipeTypeBulk,
|
||||
UsbdPipeTypeInterrupt
|
||||
} USBD_PIPE_TYPE;
|
||||
|
||||
#define USBD_PIPE_DIRECTION_IN(pipeInformation) ((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
|
||||
|
||||
typedef struct _USBD_DEVICE_INFORMATION {
|
||||
ULONG OffsetNext;
|
||||
PVOID UsbdDeviceHandle;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION;
|
||||
|
||||
typedef struct _USBD_PIPE_INFORMATION {
|
||||
USHORT MaximumPacketSize;
|
||||
UCHAR EndpointAddress;
|
||||
UCHAR Interval;
|
||||
USBD_PIPE_TYPE PipeType;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG MaximumTransferSize;
|
||||
ULONG PipeFlags;
|
||||
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
|
||||
|
||||
#define USBD_PF_CHANGE_MAX_PACKET 0x00000001
|
||||
#define USBD_PF_SHORT_PACKET_OPT 0x00000002
|
||||
#define USBD_PF_ENABLE_RT_THREAD_ACCESS 0x00000004
|
||||
#define USBD_PF_MAP_ADD_TRANSFERS 0x00000008
|
||||
#define USBD_PF_VALID_MASK (USBD_PF_CHANGE_MAX_PACKET | USBD_PF_SHORT_PACKET_OPT | \
|
||||
USBD_PF_ENABLE_RT_THREAD_ACCESS | USBD_PF_MAP_ADD_TRANSFERS)
|
||||
|
||||
typedef struct _USBD_INTERFACE_INFORMATION {
|
||||
USHORT Length;
|
||||
UCHAR InterfaceNumber;
|
||||
UCHAR AlternateSetting;
|
||||
UCHAR Class;
|
||||
UCHAR SubClass;
|
||||
UCHAR Protocol;
|
||||
UCHAR Reserved;
|
||||
USBD_INTERFACE_HANDLE InterfaceHandle;
|
||||
ULONG NumberOfPipes;
|
||||
USBD_PIPE_INFORMATION Pipes[1];
|
||||
} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
|
||||
|
||||
struct _URB_HCD_AREA {
|
||||
PVOID Reserved8[8];
|
||||
};
|
||||
|
||||
struct _URB_HEADER {
|
||||
USHORT Length;
|
||||
USHORT Function;
|
||||
USBD_STATUS Status;
|
||||
PVOID UsbdDeviceHandle;
|
||||
ULONG UsbdFlags;
|
||||
};
|
||||
|
||||
struct _URB_SELECT_INTERFACE {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
|
||||
USBD_INTERFACE_INFORMATION Interface;
|
||||
};
|
||||
|
||||
struct _URB_SELECT_CONFIGURATION {
|
||||
struct _URB_HEADER Hdr;
|
||||
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
|
||||
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
|
||||
USBD_INTERFACE_INFORMATION Interface;
|
||||
};
|
||||
|
||||
struct _URB_PIPE_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG Reserved;
|
||||
};
|
||||
|
||||
struct _URB_FRAME_LENGTH_CONTROL {
|
||||
struct _URB_HEADER Hdr;
|
||||
};
|
||||
|
||||
struct _URB_GET_FRAME_LENGTH {
|
||||
struct _URB_HEADER Hdr;
|
||||
ULONG FrameLength;
|
||||
ULONG FrameNumber;
|
||||
};
|
||||
|
||||
struct _URB_SET_FRAME_LENGTH {
|
||||
struct _URB_HEADER Hdr;
|
||||
LONG FrameLengthDelta;
|
||||
};
|
||||
|
||||
struct _URB_GET_CURRENT_FRAME_NUMBER {
|
||||
struct _URB_HEADER Hdr;
|
||||
ULONG FrameNumber;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_DESCRIPTOR_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
USHORT Reserved1;
|
||||
UCHAR Index;
|
||||
UCHAR DescriptorType;
|
||||
USHORT LanguageId;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_STATUS_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[4];
|
||||
USHORT Index;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_FEATURE_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved2;
|
||||
ULONG Reserved3;
|
||||
PVOID Reserved4;
|
||||
PMDL Reserved5;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
USHORT Reserved0;
|
||||
USHORT FeatureSelector;
|
||||
USHORT Index;
|
||||
USHORT Reserved1;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR RequestTypeReservedBits;
|
||||
UCHAR Request;
|
||||
USHORT Value;
|
||||
USHORT Index;
|
||||
USHORT Reserved1;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_INTERFACE_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[4];
|
||||
USHORT Interface;
|
||||
USHORT Reserved2;
|
||||
};
|
||||
|
||||
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Reserved1[8];
|
||||
};
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
#define OS_STRING_DESCRIPTOR_INDEX 0xEE
|
||||
#define MS_GENRE_DESCRIPTOR_INDEX 0x0001
|
||||
#define MS_POWER_DESCRIPTOR_INDEX 0x0002
|
||||
#define MS_OS_STRING_SIGNATURE L"MSFT100"
|
||||
#define USBD_PIPE_DIRECTION_IN(pipeInformation) ((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
|
||||
#define MS_OS_FLAGS_CONTAINERID 0x02
|
||||
|
||||
#endif /* __USB_H */
|
||||
typedef struct _OS_STRING {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
WCHAR MicrosoftString[7];
|
||||
UCHAR bVendorCode;
|
||||
union {
|
||||
UCHAR bPad;
|
||||
UCHAR bFlags;
|
||||
};
|
||||
} OS_STRING, *POS_STRING;
|
||||
|
||||
struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST {
|
||||
struct _URB_HEADER Hdr;
|
||||
PVOID Reserved;
|
||||
ULONG Reserved0;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR Recipient:5;
|
||||
UCHAR Reserved1:3;
|
||||
UCHAR Reserved2;
|
||||
UCHAR InterfaceNumber;
|
||||
UCHAR MS_PageIndex;
|
||||
USHORT MS_FeatureDescriptorIndex;
|
||||
USHORT Reserved3;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
struct _URB_CONTROL_TRANSFER {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR SetupPacket[8];
|
||||
};
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
struct _URB_CONTROL_TRANSFER_EX {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
ULONG Timeout;
|
||||
#ifdef WIN64
|
||||
ULONG Pad;
|
||||
#endif
|
||||
struct _URB_HCD_AREA hca;
|
||||
UCHAR SetupPacket[8];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
struct _URB_BULK_OR_INTERRUPT_TRANSFER {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
};
|
||||
|
||||
typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
|
||||
ULONG Offset;
|
||||
ULONG Length;
|
||||
USBD_STATUS Status;
|
||||
} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
|
||||
|
||||
struct _URB_ISOCH_TRANSFER {
|
||||
struct _URB_HEADER Hdr;
|
||||
USBD_PIPE_HANDLE PipeHandle;
|
||||
ULONG TransferFlags;
|
||||
ULONG TransferBufferLength;
|
||||
PVOID TransferBuffer;
|
||||
PMDL TransferBufferMDL;
|
||||
struct _URB *UrbLink;
|
||||
struct _URB_HCD_AREA hca;
|
||||
ULONG StartFrame;
|
||||
ULONG NumberOfPackets;
|
||||
ULONG ErrorCount;
|
||||
USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
|
||||
};
|
||||
|
||||
typedef struct _URB {
|
||||
__GNU_EXTENSION union {
|
||||
struct _URB_HEADER UrbHeader;
|
||||
struct _URB_SELECT_INTERFACE UrbSelectInterface;
|
||||
struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
|
||||
struct _URB_PIPE_REQUEST UrbPipeRequest;
|
||||
struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
|
||||
struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
|
||||
struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
|
||||
struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
|
||||
struct _URB_CONTROL_TRANSFER UrbControlTransfer;
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
struct _URB_CONTROL_TRANSFER_EX UrbControlTransferEx;
|
||||
#endif
|
||||
struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
|
||||
struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
|
||||
struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
|
||||
struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
|
||||
struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
|
||||
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
|
||||
struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
|
||||
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST UrbOSFeatureDescriptorRequest;
|
||||
#endif
|
||||
};
|
||||
} URB, *PURB;
|
|
@ -20,45 +20,13 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#ifndef __USB100_H
|
||||
#define __USB100_H
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MAXIMUM_USB_STRING_LENGTH 255
|
||||
|
||||
#define USB_DEVICE_CLASS_RESERVED 0x00
|
||||
#define USB_DEVICE_CLASS_AUDIO 0x01
|
||||
#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
|
||||
#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
|
||||
#define USB_DEVICE_CLASS_MONITOR 0x04
|
||||
#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
|
||||
#define USB_DEVICE_CLASS_POWER 0x06
|
||||
#define USB_DEVICE_CLASS_PRINTER 0x07
|
||||
#define USB_DEVICE_CLASS_STORAGE 0x08
|
||||
#define USB_DEVICE_CLASS_HUB 0x09
|
||||
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
|
||||
|
||||
#define USB_RESERVED_DESCRIPTOR_TYPE 0x06
|
||||
#define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07
|
||||
#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
|
||||
|
||||
#define USB_REQUEST_GET_STATUS 0x00
|
||||
#define USB_REQUEST_CLEAR_FEATURE 0x01
|
||||
#define USB_REQUEST_SET_FEATURE 0x03
|
||||
#define USB_REQUEST_SET_ADDRESS 0x05
|
||||
#define USB_REQUEST_GET_DESCRIPTOR 0x06
|
||||
#define USB_REQUEST_SET_DESCRIPTOR 0x07
|
||||
#define USB_REQUEST_GET_CONFIGURATION 0x08
|
||||
#define USB_REQUEST_SET_CONFIGURATION 0x09
|
||||
#define USB_REQUEST_GET_INTERFACE 0x0A
|
||||
#define USB_REQUEST_SET_INTERFACE 0x0B
|
||||
#define USB_REQUEST_SYNC_FRAME 0x0C
|
||||
|
||||
#define USB_GETSTATUS_SELF_POWERED 0x01
|
||||
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
|
||||
#include <pshpack1.h>
|
||||
|
||||
#define BMREQUEST_HOST_TO_DEVICE 0
|
||||
#define BMREQUEST_DEVICE_TO_HOST 1
|
||||
|
@ -72,61 +40,23 @@ extern "C" {
|
|||
#define BMREQUEST_TO_ENDPOINT 2
|
||||
#define BMREQUEST_TO_OTHER 3
|
||||
|
||||
#define MAXIMUM_USB_STRING_LENGTH 255
|
||||
|
||||
#define USB_GETSTATUS_SELF_POWERED 0x01
|
||||
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
|
||||
|
||||
/* USB_COMMON_DESCRIPTOR.bDescriptorType constants */
|
||||
#define USB_DEVICE_DESCRIPTOR_TYPE 0x01
|
||||
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
|
||||
#define USB_STRING_DESCRIPTOR_TYPE 0x03
|
||||
#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
|
||||
#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
|
||||
|
||||
typedef struct _USB_COMMON_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;
|
||||
#define USB_RESERVED_DESCRIPTOR_TYPE 0x06
|
||||
#define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07
|
||||
#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
|
||||
|
||||
#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d << 8 | i))
|
||||
|
||||
/* USB_CONFIGURATION_DESCRIPTOR.bmAttributes constants */
|
||||
#define USB_CONFIG_POWERED_MASK 0xc0
|
||||
#define USB_CONFIG_BUS_POWERED 0x80
|
||||
#define USB_CONFIG_SELF_POWERED 0x40
|
||||
#define USB_CONFIG_REMOTE_WAKEUP 0x20
|
||||
|
||||
#include <pshpack1.h>
|
||||
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
USHORT wTotalLength;
|
||||
UCHAR bNumInterfaces;
|
||||
UCHAR bConfigurationValue;
|
||||
UCHAR iConfiguration;
|
||||
UCHAR bmAttributes;
|
||||
UCHAR MaxPower;
|
||||
} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;
|
||||
#include <poppack.h>
|
||||
|
||||
typedef struct _USB_DEVICE_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
USHORT bcdUSB;
|
||||
UCHAR bDeviceClass;
|
||||
UCHAR bDeviceSubClass;
|
||||
UCHAR bDeviceProtocol;
|
||||
UCHAR bMaxPacketSize0;
|
||||
USHORT idVendor;
|
||||
USHORT idProduct;
|
||||
USHORT bcdDevice;
|
||||
UCHAR iManufacturer;
|
||||
UCHAR iProduct;
|
||||
UCHAR iSerialNumber;
|
||||
UCHAR bNumConfigurations;
|
||||
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
|
||||
|
||||
#define USB_ENDPOINT_DIRECTION_MASK 0x80
|
||||
|
||||
#define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK))
|
||||
#define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK)
|
||||
|
||||
/* USB_ENDPOINT_DESCRIPTOR.bmAttributes constants */
|
||||
#define USB_ENDPOINT_TYPE_MASK 0x03
|
||||
#define USB_ENDPOINT_TYPE_CONTROL 0x00
|
||||
|
@ -134,49 +64,118 @@ typedef struct _USB_DEVICE_DESCRIPTOR {
|
|||
#define USB_ENDPOINT_TYPE_BULK 0x02
|
||||
#define USB_ENDPOINT_TYPE_INTERRUPT 0x03
|
||||
|
||||
#include <pshpack1.h>
|
||||
typedef struct _USB_ENDPOINT_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bEndpointAddress;
|
||||
UCHAR bmAttributes;
|
||||
USHORT wMaxPacketSize;
|
||||
UCHAR bInterval;
|
||||
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
|
||||
#include <poppack.h>
|
||||
/* USB_CONFIGURATION_DESCRIPTOR.bmAttributes constants */
|
||||
#define USB_CONFIG_POWERED_MASK 0xc0
|
||||
#define USB_CONFIG_BUS_POWERED 0x80
|
||||
#define USB_CONFIG_SELF_POWERED 0x40
|
||||
#define USB_CONFIG_REMOTE_WAKEUP 0x20
|
||||
|
||||
#define USB_ENDPOINT_DIRECTION_MASK 0x80
|
||||
|
||||
#define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK))
|
||||
#define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK)
|
||||
|
||||
#define USB_REQUEST_GET_STATUS 0x00
|
||||
#define USB_REQUEST_CLEAR_FEATURE 0x01
|
||||
#define USB_REQUEST_SET_FEATURE 0x03
|
||||
#define USB_REQUEST_SET_ADDRESS 0x05
|
||||
#define USB_REQUEST_GET_DESCRIPTOR 0x06
|
||||
#define USB_REQUEST_SET_DESCRIPTOR 0x07
|
||||
#define USB_REQUEST_GET_CONFIGURATION 0x08
|
||||
#define USB_REQUEST_SET_CONFIGURATION 0x09
|
||||
#define USB_REQUEST_GET_INTERFACE 0x0A
|
||||
#define USB_REQUEST_SET_INTERFACE 0x0B
|
||||
#define USB_REQUEST_SYNC_FRAME 0x0C
|
||||
|
||||
#define USB_DEVICE_CLASS_RESERVED 0x00
|
||||
#define USB_DEVICE_CLASS_AUDIO 0x01
|
||||
#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
|
||||
#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
|
||||
#define USB_DEVICE_CLASS_MONITOR 0x04
|
||||
#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
|
||||
#define USB_DEVICE_CLASS_POWER 0x06
|
||||
#define USB_DEVICE_CLASS_PRINTER 0x07
|
||||
#define USB_DEVICE_CLASS_STORAGE 0x08
|
||||
#define USB_DEVICE_CLASS_HUB 0x09
|
||||
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
|
||||
|
||||
#define USB_FEATURE_ENDPOINT_STALL 0x0000
|
||||
#define USB_FEATURE_REMOTE_WAKEUP 0x0001
|
||||
|
||||
#define USB_FEATURE_INTERFACE_POWER_D0 0x0002
|
||||
#define USB_FEATURE_INTERFACE_POWER_D1 0x0003
|
||||
#define USB_FEATURE_INTERFACE_POWER_D2 0x0004
|
||||
#define USB_FEATURE_INTERFACE_POWER_D3 0x0005
|
||||
|
||||
typedef struct _USB_DEVICE_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
USHORT bcdUSB;
|
||||
UCHAR bDeviceClass;
|
||||
UCHAR bDeviceSubClass;
|
||||
UCHAR bDeviceProtocol;
|
||||
UCHAR bMaxPacketSize0;
|
||||
USHORT idVendor;
|
||||
USHORT idProduct;
|
||||
USHORT bcdDevice;
|
||||
UCHAR iManufacturer;
|
||||
UCHAR iProduct;
|
||||
UCHAR iSerialNumber;
|
||||
UCHAR bNumConfigurations;
|
||||
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
|
||||
|
||||
typedef struct _USB_ENDPOINT_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bEndpointAddress;
|
||||
UCHAR bmAttributes;
|
||||
USHORT wMaxPacketSize;
|
||||
UCHAR bInterval;
|
||||
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
|
||||
|
||||
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
USHORT wTotalLength;
|
||||
UCHAR bNumInterfaces;
|
||||
UCHAR bConfigurationValue;
|
||||
UCHAR iConfiguration;
|
||||
UCHAR bmAttributes;
|
||||
UCHAR MaxPower;
|
||||
} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;
|
||||
|
||||
typedef struct _USB_INTERFACE_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bInterfaceNumber;
|
||||
UCHAR bAlternateSetting;
|
||||
UCHAR bNumEndpoints;
|
||||
UCHAR bInterfaceClass;
|
||||
UCHAR bInterfaceSubClass;
|
||||
UCHAR bInterfaceProtocol;
|
||||
UCHAR iInterface;
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bInterfaceNumber;
|
||||
UCHAR bAlternateSetting;
|
||||
UCHAR bNumEndpoints;
|
||||
UCHAR bInterfaceClass;
|
||||
UCHAR bInterfaceSubClass;
|
||||
UCHAR bInterfaceProtocol;
|
||||
UCHAR iInterface;
|
||||
} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;
|
||||
|
||||
typedef struct _USB_STRING_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
WCHAR bString[1];
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
WCHAR bString[1];
|
||||
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
|
||||
|
||||
#include <pshpack1.h>
|
||||
typedef struct _USB_COMMON_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;
|
||||
|
||||
typedef struct _USB_HUB_DESCRIPTOR {
|
||||
UCHAR bDescriptorLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bNumberOfPorts;
|
||||
USHORT wHubCharacteristics;
|
||||
UCHAR bPowerOnToPowerGood;
|
||||
UCHAR bHubControlCurrent;
|
||||
UCHAR bRemoveAndPowerMask[64];
|
||||
UCHAR bDescriptorLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bNumberOfPorts;
|
||||
USHORT wHubCharacteristics;
|
||||
UCHAR bPowerOnToPowerGood;
|
||||
UCHAR bHubControlCurrent;
|
||||
UCHAR bRemoveAndPowerMask[64];
|
||||
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
|
||||
#include <poppack.h>
|
||||
|
||||
#define USB_SUPPORT_D0_COMMAND 0x01
|
||||
#define USB_SUPPORT_D1_COMMAND 0x02
|
||||
|
@ -187,45 +186,38 @@ typedef struct _USB_HUB_DESCRIPTOR {
|
|||
#define USB_SUPPORT_D2_WAKEUP 0x20
|
||||
|
||||
typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR SelfPowerConsumedD0[3];
|
||||
UCHAR bPowerSummaryId;
|
||||
UCHAR bBusPowerSavingD1;
|
||||
UCHAR bSelfPowerSavingD1;
|
||||
UCHAR bBusPowerSavingD2;
|
||||
UCHAR bSelfPowerSavingD2;
|
||||
UCHAR bBusPowerSavingD3;
|
||||
UCHAR bSelfPowerSavingD3;
|
||||
USHORT TransitionTimeFromD1;
|
||||
USHORT TransitionTimeFromD2;
|
||||
USHORT TransitionTimeFromD3;
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR SelfPowerConsumedD0[3];
|
||||
UCHAR bPowerSummaryId;
|
||||
UCHAR bBusPowerSavingD1;
|
||||
UCHAR bSelfPowerSavingD1;
|
||||
UCHAR bBusPowerSavingD2;
|
||||
UCHAR bSelfPowerSavingD2;
|
||||
UCHAR bBusPowerSavingD3;
|
||||
UCHAR bSelfPowerSavingD3;
|
||||
USHORT TransitionTimeFromD1;
|
||||
USHORT TransitionTimeFromD2;
|
||||
USHORT TransitionTimeFromD3;
|
||||
} USB_CONFIGURATION_POWER_DESCRIPTOR, *PUSB_CONFIGURATION_POWER_DESCRIPTOR;
|
||||
|
||||
#define USB_FEATURE_INTERFACE_POWER_D0 0x0002
|
||||
#define USB_FEATURE_INTERFACE_POWER_D1 0x0003
|
||||
#define USB_FEATURE_INTERFACE_POWER_D2 0x0004
|
||||
#define USB_FEATURE_INTERFACE_POWER_D3 0x0005
|
||||
|
||||
#include <pshpack1.h>
|
||||
typedef struct _USB_INTERFACE_POWER_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bmCapabilitiesFlags;
|
||||
UCHAR bBusPowerSavingD1;
|
||||
UCHAR bSelfPowerSavingD1;
|
||||
UCHAR bBusPowerSavingD2;
|
||||
UCHAR bSelfPowerSavingD2;
|
||||
UCHAR bBusPowerSavingD3;
|
||||
UCHAR bSelfPowerSavingD3;
|
||||
USHORT TransitionTimeFromD1;
|
||||
USHORT TransitionTimeFromD2;
|
||||
USHORT TransitionTimeFromD3;
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bmCapabilitiesFlags;
|
||||
UCHAR bBusPowerSavingD1;
|
||||
UCHAR bSelfPowerSavingD1;
|
||||
UCHAR bBusPowerSavingD2;
|
||||
UCHAR bSelfPowerSavingD2;
|
||||
UCHAR bBusPowerSavingD3;
|
||||
UCHAR bSelfPowerSavingD3;
|
||||
USHORT TransitionTimeFromD1;
|
||||
USHORT TransitionTimeFromD2;
|
||||
USHORT TransitionTimeFromD3;
|
||||
} USB_INTERFACE_POWER_DESCRIPTOR, *PUSB_INTERFACE_POWER_DESCRIPTOR;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __USB100_H */
|
106
reactos/include/psdk/usb200.h
Normal file
106
reactos/include/psdk/usb200.h
Normal file
|
@ -0,0 +1,106 @@
|
|||
#pragma once
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "usb100.h"
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef enum _USB_DEVICE_TYPE {
|
||||
Usb11Device = 0,
|
||||
Usb20Device
|
||||
} USB_DEVICE_TYPE;
|
||||
|
||||
typedef enum _USB_DEVICE_SPEED {
|
||||
UsbLowSpeed = 0,
|
||||
UsbFullSpeed,
|
||||
UsbHighSpeed
|
||||
} USB_DEVICE_SPEED;
|
||||
|
||||
#define USB_PORT_STATUS_CONNECT 0x0001
|
||||
#define USB_PORT_STATUS_ENABLE 0x0002
|
||||
#define USB_PORT_STATUS_SUSPEND 0x0004
|
||||
#define USB_PORT_STATUS_OVER_CURRENT 0x0008
|
||||
#define USB_PORT_STATUS_RESET 0x0010
|
||||
#define USB_PORT_STATUS_POWER 0x0100
|
||||
#define USB_PORT_STATUS_LOW_SPEED 0x0200
|
||||
#define USB_PORT_STATUS_HIGH_SPEED 0x0400
|
||||
|
||||
|
||||
typedef union _BM_REQUEST_TYPE {
|
||||
struct _BM {
|
||||
UCHAR Recipient:2;
|
||||
UCHAR Reserved:3;
|
||||
UCHAR Type:2;
|
||||
UCHAR Dir:1;
|
||||
} _BM;
|
||||
UCHAR B;
|
||||
} BM_REQUEST_TYPE, *PBM_REQUEST_TYPE;
|
||||
|
||||
typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET {
|
||||
BM_REQUEST_TYPE bmRequestType;
|
||||
UCHAR bRequest;
|
||||
union _wValue {
|
||||
__GNU_EXTENSION struct {
|
||||
UCHAR LowByte;
|
||||
UCHAR HiByte;
|
||||
};
|
||||
USHORT W;
|
||||
} wValue;
|
||||
union _wIndex {
|
||||
__GNU_EXTENSION struct {
|
||||
UCHAR LowByte;
|
||||
UCHAR HiByte;
|
||||
};
|
||||
USHORT W;
|
||||
} wIndex;
|
||||
USHORT wLength;
|
||||
} USB_DEFAULT_PIPE_SETUP_PACKET, *PUSB_DEFAULT_PIPE_SETUP_PACKET;
|
||||
|
||||
C_ASSERT(sizeof(USB_DEFAULT_PIPE_SETUP_PACKET) == 8);
|
||||
|
||||
#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 0x06
|
||||
#define USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE 0x07
|
||||
|
||||
typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
USHORT bcdUSB;
|
||||
UCHAR bDeviceClass;
|
||||
UCHAR bDeviceSubClass;
|
||||
UCHAR bDeviceProtocol;
|
||||
UCHAR bMaxPacketSize0;
|
||||
UCHAR bNumConfigurations;
|
||||
UCHAR bReserved;
|
||||
} USB_DEVICE_QUALIFIER_DESCRIPTOR, *PUSB_DEVICE_QUALIFIER_DESCRIPTOR;
|
||||
|
||||
typedef union _USB_HIGH_SPEED_MAXPACKET {
|
||||
struct _MP {
|
||||
USHORT MaxPacket:11;
|
||||
USHORT HSmux:2;
|
||||
USHORT Reserved:3;
|
||||
} _MP;
|
||||
USHORT us;
|
||||
} USB_HIGH_SPEED_MAXPACKET, *PUSB_HIGH_SPEED_MAXPACKET;
|
||||
|
||||
#define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 0x0B
|
||||
|
||||
typedef struct _USB_INTERFACE_ASSOCIATION_DESCRIPTOR {
|
||||
UCHAR bLength;
|
||||
UCHAR bDescriptorType;
|
||||
UCHAR bFirstInterface;
|
||||
UCHAR bInterfaceCount;
|
||||
UCHAR bFunctionClass;
|
||||
UCHAR bFunctionSubClass;
|
||||
UCHAR bFunctionProtocol;
|
||||
UCHAR iFunction;
|
||||
} USB_INTERFACE_ASSOCIATION_DESCRIPTOR, *PUSB_INTERFACE_ASSOCIATION_DESCRIPTOR;
|
||||
|
||||
#include <poppack.h>
|
384
reactos/include/psdk/usbcamdi.h
Normal file
384
reactos/include/psdk/usbcamdi.h
Normal file
|
@ -0,0 +1,384 @@
|
|||
/*
|
||||
* usbcamdi.h
|
||||
*
|
||||
* USB Camera driver interface.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(_BATTERYCLASS_)
|
||||
#define USBCAMAPI
|
||||
#else
|
||||
#define USBCAMAPI DECLSPEC_IMPORT
|
||||
#endif
|
||||
|
||||
typedef struct _pipe_config_descriptor {
|
||||
CHAR StreamAssociation;
|
||||
UCHAR PipeConfigFlags;
|
||||
} USBCAMD_Pipe_Config_Descriptor, *PUSBCAMD_Pipe_Config_Descriptor;
|
||||
|
||||
#define USBCAMD_DATA_PIPE 0x0001
|
||||
#define USBCAMD_MULTIPLEX_PIPE 0x0002
|
||||
#define USBCAMD_SYNC_PIPE 0x0004
|
||||
#define USBCAMD_DONT_CARE_PIPE 0x0008
|
||||
|
||||
#define USBCAMD_VIDEO_STREAM 0x1
|
||||
#define USBCAMD_STILL_STREAM 0x2
|
||||
#define USBCAMD_VIDEO_STILL_STREAM (USBCAMD_VIDEO_STREAM | USBCAMD_STILL_STREAM)
|
||||
|
||||
#define USBCAMD_PROCESSPACKETEX_DropFrame 0x0002
|
||||
#define USBCAMD_PROCESSPACKETEX_NextFrameIsStill 0x0004
|
||||
#define USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill 0x0008
|
||||
|
||||
#define USBCAMD_STOP_STREAM 0x00000001
|
||||
#define USBCAMD_START_STREAM 0x00000000
|
||||
|
||||
typedef enum {
|
||||
USBCAMD_CamControlFlag_NoVideoRawProcessing = 1,
|
||||
USBCAMD_CamControlFlag_NoStillRawProcessing = 2,
|
||||
USBCAMD_CamControlFlag_AssociatedFormat = 4,
|
||||
USBCAMD_CamControlFlag_EnableDeviceEvents = 8
|
||||
} USBCAMD_CamControlFlags;
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCOMMAND_COMPLETE_FUNCTION)(
|
||||
IN PVOID DeviceContext,
|
||||
IN OUT PVOID CommandContext,
|
||||
IN NTSTATUS NtStatus);
|
||||
|
||||
typedef VOID
|
||||
(NTAPI *PSTREAM_RECEIVE_PACKET)(
|
||||
IN PVOID Srb,
|
||||
IN PVOID DeviceContext,
|
||||
IN PBOOLEAN Completed);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_INITIALIZE_ROUTINE)(
|
||||
PDEVICE_OBJECT BusDeviceObject,
|
||||
PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_CONFIGURE_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PUSBD_INTERFACE_INFORMATION Interface,
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN PLONG DataPipeIndex,
|
||||
IN PLONG SyncPipeIndex);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_CONFIGURE_ROUTINE_EX)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PUSBD_INTERFACE_INFORMATION Interface,
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
IN ULONG PipeConfigListSize,
|
||||
IN PUSBCAMD_Pipe_Config_Descriptor PipeConfig,
|
||||
IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_START_CAPTURE_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_START_CAPTURE_ROUTINE_EX)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG StreamNumber);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_ALLOCATE_BW_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PULONG RawFrameLength,
|
||||
IN PVOID Format);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_ALLOCATE_BW_ROUTINE_EX)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PULONG RawFrameLength,
|
||||
IN PVOID Format,
|
||||
IN ULONG StreamNumber);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_FREE_BW_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_FREE_BW_ROUTINE_EX)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG StreamNumber);
|
||||
|
||||
typedef VOID
|
||||
(NTAPI *PADAPTER_RECEIVE_PACKET_ROUTINE)(
|
||||
IN OUT PHW_STREAM_REQUEST_BLOCK Srb);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_STOP_CAPTURE_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_STOP_CAPTURE_ROUTINE_EX)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG StreamNumber);
|
||||
|
||||
typedef ULONG
|
||||
(NTAPI *PCAM_PROCESS_PACKET_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID CurrentFrameContext,
|
||||
IN PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket OPTIONAL,
|
||||
IN PVOID SyncBuffer OPTIONAL,
|
||||
IN PUSBD_ISO_PACKET_DESCRIPTOR DataPacket OPTIONAL,
|
||||
IN OUT PVOID DataBuffer,
|
||||
OUT PBOOLEAN FrameComplete,
|
||||
OUT PBOOLEAN NextFrameIsStill);
|
||||
|
||||
typedef ULONG
|
||||
(NTAPI *PCAM_PROCESS_PACKET_ROUTINE_EX)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID CurrentFrameContext,
|
||||
IN PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket OPTIONAL,
|
||||
IN PVOID SyncBuffer OPTIONAL,
|
||||
IN PUSBD_ISO_PACKET_DESCRIPTOR DataPacket OPTIONAL,
|
||||
IN OUT PVOID DataBuffer,
|
||||
OUT PBOOLEAN FrameComplete,
|
||||
OUT PULONG PacketFlag,
|
||||
OUT PULONG ValidDataOffset);
|
||||
|
||||
typedef VOID
|
||||
(NTAPI *PCAM_NEW_FRAME_ROUTINE)(
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID FrameContext);
|
||||
|
||||
typedef VOID
|
||||
(NTAPI *PCAM_NEW_FRAME_ROUTINE_EX)(
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID FrameContext,
|
||||
IN ULONG StreamNumber,
|
||||
OUT PULONG FrameLength);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_PROCESS_RAW_FRAME_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID FrameContext,
|
||||
IN PVOID FrameBuffer,
|
||||
IN ULONG FrameLength,
|
||||
OUT PVOID RawFrameBuffer,
|
||||
IN ULONG RawFrameLength,
|
||||
IN ULONG NumberOfPackets,
|
||||
OUT PULONG BytesReturned);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_PROCESS_RAW_FRAME_ROUTINE_EX)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID FrameContext,
|
||||
IN PVOID FrameBuffer,
|
||||
IN ULONG FrameLength,
|
||||
OUT PVOID RawFrameBuffer,
|
||||
IN ULONG RawFrameLength,
|
||||
IN ULONG NumberOfPackets,
|
||||
OUT PULONG BytesReturned,
|
||||
IN ULONG ActualRawFrameLength,
|
||||
IN ULONG StreamNumber);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCAM_STATE_ROUTINE)(
|
||||
IN PDEVICE_OBJECT BusDeviceObject,
|
||||
IN PVOID DeviceContext);
|
||||
|
||||
#if defined(DEBUG_LOG)
|
||||
|
||||
USBCAMAPI
|
||||
VOID
|
||||
NTAPI
|
||||
USBCAMD_Debug_LogEntry(
|
||||
IN CHAR *Name,
|
||||
IN ULONG Info1,
|
||||
IN ULONG Info2,
|
||||
IN ULONG Info3);
|
||||
|
||||
#define ILOGENTRY(sig, info1, info2, info3) \
|
||||
USBCAMD_Debug_LogEntry(sig, (ULONG)info1, (ULONG)info2, (ULONG)info3)
|
||||
|
||||
#else
|
||||
|
||||
#define ILOGENTRY(sig, info1, info2, info3)
|
||||
|
||||
#endif /* DEBUG_LOG */
|
||||
|
||||
typedef struct _USBCAMD_DEVICE_DATA {
|
||||
ULONG Sig;
|
||||
PCAM_INITIALIZE_ROUTINE CamInitialize;
|
||||
PCAM_INITIALIZE_ROUTINE CamUnInitialize;
|
||||
PCAM_PROCESS_PACKET_ROUTINE CamProcessUSBPacket;
|
||||
PCAM_NEW_FRAME_ROUTINE CamNewVideoFrame;
|
||||
PCAM_PROCESS_RAW_FRAME_ROUTINE CamProcessRawVideoFrame;
|
||||
PCAM_START_CAPTURE_ROUTINE CamStartCapture;
|
||||
PCAM_STOP_CAPTURE_ROUTINE CamStopCapture;
|
||||
PCAM_CONFIGURE_ROUTINE CamConfigure;
|
||||
PCAM_STATE_ROUTINE CamSaveState;
|
||||
PCAM_STATE_ROUTINE CamRestoreState;
|
||||
PCAM_ALLOCATE_BW_ROUTINE CamAllocateBandwidth;
|
||||
PCAM_FREE_BW_ROUTINE CamFreeBandwidth;
|
||||
} USBCAMD_DEVICE_DATA, *PUSBCAMD_DEVICE_DATA;
|
||||
|
||||
typedef struct _USBCAMD_DEVICE_DATA2 {
|
||||
ULONG Sig;
|
||||
PCAM_INITIALIZE_ROUTINE CamInitialize;
|
||||
PCAM_INITIALIZE_ROUTINE CamUnInitialize;
|
||||
PCAM_PROCESS_PACKET_ROUTINE_EX CamProcessUSBPacketEx;
|
||||
PCAM_NEW_FRAME_ROUTINE_EX CamNewVideoFrameEx;
|
||||
PCAM_PROCESS_RAW_FRAME_ROUTINE_EX CamProcessRawVideoFrameEx;
|
||||
PCAM_START_CAPTURE_ROUTINE_EX CamStartCaptureEx;
|
||||
PCAM_STOP_CAPTURE_ROUTINE_EX CamStopCaptureEx;
|
||||
PCAM_CONFIGURE_ROUTINE_EX CamConfigureEx;
|
||||
PCAM_STATE_ROUTINE CamSaveState;
|
||||
PCAM_STATE_ROUTINE CamRestoreState;
|
||||
PCAM_ALLOCATE_BW_ROUTINE_EX CamAllocateBandwidthEx;
|
||||
PCAM_FREE_BW_ROUTINE_EX CamFreeBandwidthEx;
|
||||
} USBCAMD_DEVICE_DATA2, *PUSBCAMD_DEVICE_DATA2;
|
||||
|
||||
DEFINE_GUID(GUID_USBCAMD_INTERFACE,
|
||||
0x2bcb75c0, 0xb27f, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PFNUSBCAMD_SetVideoFormat)(
|
||||
IN PVOID DeviceContext,
|
||||
IN PHW_STREAM_REQUEST_BLOCK pSrb);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PFNUSBCAMD_WaitOnDeviceEvent)(
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG PipeIndex,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG BufferLength,
|
||||
IN PCOMMAND_COMPLETE_FUNCTION EventComplete,
|
||||
IN PVOID EventContext,
|
||||
IN BOOLEAN LoopBack);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PFNUSBCAMD_CancelBulkReadWrite)(
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG PipeIndex);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PFNUSBCAMD_SetIsoPipeState)(
|
||||
IN PVOID DeviceContext,
|
||||
IN ULONG PipeStateFlags);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PFNUSBCAMD_BulkReadWrite)(
|
||||
IN PVOID DeviceContext,
|
||||
IN USHORT PipeIndex,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG BufferLength,
|
||||
IN PCOMMAND_COMPLETE_FUNCTION CommandComplete,
|
||||
IN PVOID CommandContext);
|
||||
|
||||
#define USBCAMD_VERSION_200 0x200
|
||||
|
||||
typedef struct _USBCAMD_INTERFACE {
|
||||
INTERFACE Interface;
|
||||
PFNUSBCAMD_WaitOnDeviceEvent USBCAMD_WaitOnDeviceEvent;
|
||||
PFNUSBCAMD_BulkReadWrite USBCAMD_BulkReadWrite;
|
||||
PFNUSBCAMD_SetVideoFormat USBCAMD_SetVideoFormat;
|
||||
PFNUSBCAMD_SetIsoPipeState USBCAMD_SetIsoPipeState;
|
||||
PFNUSBCAMD_CancelBulkReadWrite USBCAMD_CancelBulkReadWrite;
|
||||
} USBCAMD_INTERFACE, *PUSBCAMD_INTERFACE;
|
||||
|
||||
/* FIXME : Do we need USBCAMAPI here ? */
|
||||
|
||||
USBCAMAPI
|
||||
ULONG
|
||||
NTAPI
|
||||
USBCAMD_DriverEntry(
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2,
|
||||
IN ULONG DeviceContextSize,
|
||||
IN ULONG FrameContextSize,
|
||||
IN PADAPTER_RECEIVE_PACKET_ROUTINE ReceivePacket);
|
||||
|
||||
USBCAMAPI
|
||||
PVOID
|
||||
NTAPI
|
||||
USBCAMD_AdapterReceivePacket(
|
||||
IN PHW_STREAM_REQUEST_BLOCK Srb,
|
||||
IN PUSBCAMD_DEVICE_DATA DeviceData,
|
||||
IN PDEVICE_OBJECT *DeviceObject,
|
||||
IN BOOLEAN NeedsCompletion);
|
||||
|
||||
USBCAMAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
USBCAMD_ControlVendorCommand(
|
||||
IN PVOID DeviceContext,
|
||||
IN UCHAR Request,
|
||||
IN USHORT Value,
|
||||
IN USHORT Index,
|
||||
IN OUT PVOID Buffer,
|
||||
IN OUT PULONG BufferLength,
|
||||
IN BOOLEAN GetData,
|
||||
IN PCOMMAND_COMPLETE_FUNCTION CommandComplete OPTIONAL,
|
||||
IN PVOID CommandContext OPTIONAL);
|
||||
|
||||
USBCAMAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
USBCAMD_SelectAlternateInterface(
|
||||
IN PVOID DeviceContext,
|
||||
IN OUT PUSBD_INTERFACE_INFORMATION RequestInterface);
|
||||
|
||||
USBCAMAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
USBCAMD_GetRegistryKeyValue(
|
||||
IN HANDLE Handle,
|
||||
IN PWCHAR KeyNameString,
|
||||
IN ULONG KeyNameStringLength,
|
||||
IN PVOID Data,
|
||||
IN ULONG DataLength);
|
||||
|
||||
USBCAMAPI
|
||||
ULONG
|
||||
NTAPI
|
||||
USBCAMD_InitializeNewInterface(
|
||||
IN PVOID DeviceContext,
|
||||
IN PVOID DeviceData,
|
||||
IN ULONG Version,
|
||||
IN ULONG CamControlFlag);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__USB_H) && !defined(__USBDI_H) */
|
79
reactos/include/psdk/usbdi.h
Normal file
79
reactos/include/psdk/usbdi.h
Normal file
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* usbdi.h
|
||||
*
|
||||
* USBD and USB device driver definitions
|
||||
*
|
||||
* FIXME : Obsolete header.. Use usb.h instead.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Helper macro to enable gcc's extension. */
|
||||
#ifndef __GNU_EXTENSION
|
||||
#ifdef __GNUC__
|
||||
#define __GNU_EXTENSION __extension__
|
||||
#else
|
||||
#define __GNU_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <usb.h>
|
||||
#include <usbioctl.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define USBD_STATUS_CANCELLING ((USBD_STATUS)0x00020000L)
|
||||
#define USBD_STATUS_CANCELING ((USBD_STATUS)0x00020000L)
|
||||
#define USBD_STATUS_NO_MEMORY ((USBD_STATUS)0x80000100L)
|
||||
#define USBD_STATUS_ERROR ((USBD_STATUS)0x80000000L)
|
||||
#define USBD_STATUS_REQUEST_FAILED ((USBD_STATUS)0x80000500L)
|
||||
#define USBD_STATUS_HALTED ((USBD_STATUS)0xC0000000L)
|
||||
|
||||
|
||||
#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3)
|
||||
#define USBD_STATUS(Status) ((ULONG)(Status) & 0x0FFFFFFFL)
|
||||
|
||||
#define URB_FUNCTION_RESERVED0 0x0016
|
||||
#define URB_FUNCTION_RESERVED 0x001D
|
||||
#define URB_FUNCTION_LAST 0x0029
|
||||
|
||||
#define USBD_PF_DOUBLE_BUFFER 0x00000002
|
||||
|
||||
#ifdef USBD_PF_VALID_MASK
|
||||
#undef USBD_PF_VALID_MASK
|
||||
#endif
|
||||
|
||||
#define USBD_PF_VALID_MASK (USBD_PF_CHANGE_MAX_PACKET | USBD_PF_DOUBLE_BUFFER | \
|
||||
USBD_PF_ENABLE_RT_THREAD_ACCESS | USBD_PF_MAP_ADD_TRANSFERS)
|
||||
|
||||
#define USBD_TRANSFER_DIRECTION_BIT 0
|
||||
#define USBD_SHORT_TRANSFER_OK_BIT 1
|
||||
#define USBD_START_ISO_TRANSFER_ASAP_BIT 2
|
||||
|
||||
#ifdef USBD_TRANSFER_DIRECTION
|
||||
#undef USBD_TRANSFER_DIRECTION
|
||||
#endif
|
||||
|
||||
#define USBD_TRANSFER_DIRECTION(x) ((x) & USBD_TRANSFER_DIRECTION_IN)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
670
reactos/include/psdk/usbioctl.h
Normal file
670
reactos/include/psdk/usbioctl.h
Normal file
|
@ -0,0 +1,670 @@
|
|||
/*
|
||||
* usbioctl.h
|
||||
*
|
||||
* USB IOCTL interface.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "usb100.h"
|
||||
#include "usbiodef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_URB \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_RESET_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define USBD_PORT_ENABLED 1
|
||||
#define USBD_PORT_CONNECTED 2
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_CYCLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUS_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_REQ_GLOBAL_SUSPEND, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_REQ_GLOBAL_RESUME, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#ifdef USB20_API
|
||||
typedef struct _USB_START_FAILDATA {
|
||||
ULONG LengthInBytes;
|
||||
NTSTATUS NtStatus;
|
||||
USBD_STATUS UsbdStatus;
|
||||
ULONG ConnectStatus;
|
||||
UCHAR DriverData[4];
|
||||
} USB_START_FAILDATA, *PUSB_START_FAILDATA;
|
||||
#endif
|
||||
|
||||
#define IOCTL_INTERNAL_USB_RECORD_FAILURE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RECORD_FAILURE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_TT_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
typedef struct _USB_TOPOLOGY_ADDRESS {
|
||||
ULONG PciBusNumber;
|
||||
ULONG PciDeviceNumber;
|
||||
ULONG PciFunctionNumber;
|
||||
ULONG Reserved;
|
||||
USHORT RootHubPortNumber;
|
||||
USHORT HubPortNumber[5];
|
||||
USHORT Reserved2;
|
||||
} USB_TOPOLOGY_ADDRESS, *PUSB_TOPOLOGY_ADDRESS;
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_TOPOLOGY_ADDRESS, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CONFIG_INFO, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef USB_KERNEL_IOCTL
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_1 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_2 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_DISABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_DISABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#ifndef IOCTL_USB_GET_ROOT_HUB_NAME
|
||||
#define IOCTL_USB_GET_ROOT_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#ifndef IOCTL_GET_HCD_DRIVERKEY_NAME
|
||||
#define IOCTL_GET_HCD_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#define IOCTL_USB_GET_NODE_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
#define IOCTL_USB_GET_HUB_CAPABILITIES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HUB_CYCLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_HUB_CYCLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
#define IOCTL_USB_RESET_HUB \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RESET_HUB, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_HUB_CAPABILITIES_EX \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef enum _USB_HUB_NODE {
|
||||
UsbHub,
|
||||
UsbMIParent
|
||||
} USB_HUB_NODE;
|
||||
|
||||
typedef struct _USB_HUB_INFORMATION {
|
||||
USB_HUB_DESCRIPTOR HubDescriptor;
|
||||
BOOLEAN HubIsBusPowered;
|
||||
} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
|
||||
|
||||
typedef struct _USB_MI_PARENT_INFORMATION {
|
||||
ULONG NumberOfInterfaces;
|
||||
} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_INFORMATION {
|
||||
USB_HUB_NODE NodeType;
|
||||
union {
|
||||
USB_HUB_INFORMATION HubInformation;
|
||||
USB_MI_PARENT_INFORMATION MiParentInformation;
|
||||
} u;
|
||||
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
|
||||
|
||||
typedef struct _USB_PIPE_INFO {
|
||||
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
|
||||
ULONG ScheduleOffset;
|
||||
} USB_PIPE_INFO, *PUSB_PIPE_INFO;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth,
|
||||
DeviceHubNestedTooDeeply,
|
||||
DeviceInLegacyHub,
|
||||
DeviceEnumerating,
|
||||
DeviceReset
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#elif (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth,
|
||||
DeviceHubNestedTooDeeply,
|
||||
DeviceInLegacyHub
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#else
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_INFORMATION {
|
||||
ULONG ConnectionIndex;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
BOOLEAN LowSpeed;
|
||||
BOOLEAN DeviceIsHub;
|
||||
USHORT DeviceAddress;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
USB_PIPE_INFO PipeList[0];
|
||||
} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR NodeName[1];
|
||||
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
|
||||
|
||||
typedef struct _USB_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR HubName[1];
|
||||
} USB_HUB_NAME, *PUSB_HUB_NAME;
|
||||
|
||||
typedef struct _USB_ROOT_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR RootHubName[1];
|
||||
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
|
||||
|
||||
typedef struct _USB_HCD_DRIVERKEY_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _USB_DESCRIPTOR_REQUEST {
|
||||
ULONG ConnectionIndex;
|
||||
struct {
|
||||
UCHAR bmRequest;
|
||||
UCHAR bRequest;
|
||||
USHORT wValue;
|
||||
USHORT wIndex;
|
||||
USHORT wLength;
|
||||
} SetupPacket;
|
||||
UCHAR Data[0];
|
||||
} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
typedef struct _USB_HUB_CAPABILITIES {
|
||||
ULONG HubIs2xCapable:1;
|
||||
} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
ULONG PortAttributes;
|
||||
} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
|
||||
ULONG ConnectionIndex;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
UCHAR Speed;
|
||||
BOOLEAN DeviceIsHub;
|
||||
USHORT DeviceAddress;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
USB_PIPE_INFO PipeList[0];
|
||||
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;
|
||||
|
||||
C_ASSERT(sizeof(USB_NODE_CONNECTION_INFORMATION_EX) == sizeof(USB_NODE_CONNECTION_INFORMATION));
|
||||
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
typedef union _USB_HUB_CAP_FLAGS {
|
||||
ULONG ul;
|
||||
struct {
|
||||
ULONG HubIsHighSpeedCapable:1;
|
||||
ULONG HubIsHighSpeed:1;
|
||||
ULONG HubIsMultiTtCapable:1;
|
||||
ULONG HubIsMultiTt:1;
|
||||
ULONG HubIsRoot:1;
|
||||
ULONG HubIsArmedWakeOnConnect:1;
|
||||
ULONG HubIsBusPowered:1;
|
||||
ULONG ReservedMBZ:25;
|
||||
};
|
||||
} USB_HUB_CAP_FLAGS, *PUSB_HUB_CAP_FLAGS;
|
||||
|
||||
C_ASSERT(sizeof(USB_HUB_CAP_FLAGS) == sizeof(ULONG));
|
||||
|
||||
typedef struct _USB_HUB_CAPABILITIES_EX {
|
||||
USB_HUB_CAP_FLAGS CapabilityFlags;
|
||||
} USB_HUB_CAPABILITIES_EX, *PUSB_HUB_CAPABILITIES_EX;
|
||||
|
||||
typedef struct _USB_CYCLE_PORT_PARAMS {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG StatusReturned;
|
||||
} USB_CYCLE_PORT_PARAMS, *PUSB_CYCLE_PORT_PARAMS;
|
||||
|
||||
typedef struct _USB_ID_STRING {
|
||||
USHORT LanguageId;
|
||||
USHORT Pad;
|
||||
ULONG LengthInBytes;
|
||||
PWCHAR Buffer;
|
||||
} USB_ID_STRING, *PUSB_ID_STRING;
|
||||
|
||||
typedef struct _USB_HUB_DEVICE_UXD_SETTINGS {
|
||||
ULONG Version;
|
||||
GUID PnpGuid;
|
||||
GUID OwnerGuid;
|
||||
ULONG DeleteOnShutdown;
|
||||
ULONG DeleteOnReload;
|
||||
ULONG DeleteOnDisconnect;
|
||||
ULONG Reserved[5];
|
||||
} USB_HUB_DEVICE_UXD_SETTINGS, *PUSB_HUB_DEVICE_UXD_SETTINGS;
|
||||
|
||||
typedef struct _HUB_DEVICE_CONFIG_INFO_V1 {
|
||||
ULONG Version;
|
||||
ULONG Length;
|
||||
USB_HUB_CAP_FLAGS HubFlags;
|
||||
USB_ID_STRING HardwareIds;
|
||||
USB_ID_STRING CompatibleIds;
|
||||
USB_ID_STRING DeviceDescription;
|
||||
ULONG Reserved[19];
|
||||
USB_HUB_DEVICE_UXD_SETTINGS UxdSettings;
|
||||
} HUB_DEVICE_CONFIG_INFO, *PHUB_DEVICE_CONFIG_INFO;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _HCD_ISO_STAT_COUNTERS {
|
||||
USHORT LateUrbs;
|
||||
USHORT DoubleBufferedPackets;
|
||||
USHORT TransfersCF_5ms;
|
||||
USHORT TransfersCF_2ms;
|
||||
USHORT TransfersCF_1ms;
|
||||
USHORT MaxInterruptLatency;
|
||||
USHORT BadStartFrame;
|
||||
USHORT StaleUrbs;
|
||||
USHORT IsoPacketNotAccesed;
|
||||
USHORT IsoPacketHWError;
|
||||
USHORT SmallestUrbPacketCount;
|
||||
USHORT LargestUrbPacketCount;
|
||||
USHORT IsoCRC_Error;
|
||||
USHORT IsoOVERRUN_Error;
|
||||
USHORT IsoINTERNAL_Error;
|
||||
USHORT IsoUNKNOWN_Error;
|
||||
ULONG IsoBytesTransferred;
|
||||
USHORT LateMissedCount;
|
||||
USHORT HWIsoMissedCount;
|
||||
ULONG Reserved7[8];
|
||||
} HCD_ISO_STAT_COUNTERS, *PHCD_ISO_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_COUNTERS {
|
||||
ULONG BytesTransferred;
|
||||
USHORT IsoMissedCount;
|
||||
USHORT DataOverrunErrorCount;
|
||||
USHORT CrcErrorCount;
|
||||
USHORT ScheduleOverrunCount;
|
||||
USHORT TimeoutErrorCount;
|
||||
USHORT InternalHcErrorCount;
|
||||
USHORT BufferOverrunErrorCount;
|
||||
USHORT SWErrorCount;
|
||||
USHORT StallPidCount;
|
||||
USHORT PortDisableCount;
|
||||
} HCD_STAT_COUNTERS, *PHCD_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_1 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
} HCD_STAT_INFORMATION_1, *PHCD_STAT_INFORMATION_1;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_2 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
LONG LockedMemoryUsed;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
HCD_ISO_STAT_COUNTERS IsoCounters;
|
||||
} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2;
|
||||
|
||||
#define WMI_USB_DRIVER_INFORMATION 0
|
||||
#define WMI_USB_DRIVER_NOTIFICATION 1
|
||||
#define WMI_USB_POWER_DEVICE_ENABLE 2
|
||||
#define WMI_USB_HUB_NODE_INFORMATION 4
|
||||
|
||||
#define WMI_USB_PERFORMANCE_INFORMATION 1
|
||||
#define WMI_USB_DEVICE_NODE_INFORMATION 2
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
typedef enum _USB_NOTIFICATION_TYPE {
|
||||
EnumerationFailure = 0,
|
||||
InsufficentBandwidth,
|
||||
InsufficentPower,
|
||||
OverCurrent,
|
||||
ResetOvercurrent,
|
||||
AcquireBusInfo,
|
||||
AcquireHubName,
|
||||
AcquireControllerName,
|
||||
HubOvercurrent,
|
||||
HubPowerChange,
|
||||
HubNestedTooDeeply,
|
||||
ModernDeviceInLegacyHub
|
||||
} USB_NOTIFICATION_TYPE;
|
||||
|
||||
#else
|
||||
|
||||
typedef enum _USB_NOTIFICATION_TYPE {
|
||||
EnumerationFailure = 0,
|
||||
InsufficentBandwidth,
|
||||
InsufficentPower,
|
||||
OverCurrent,
|
||||
ResetOvercurrent,
|
||||
AcquireBusInfo,
|
||||
AcquireHubName,
|
||||
AcquireControllerName,
|
||||
HubOvercurrent,
|
||||
HubPowerChange
|
||||
} USB_NOTIFICATION_TYPE;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _USB_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
} USB_NOTIFICATION, *PUSB_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_CONNECTION_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG ConnectionNumber;
|
||||
ULONG RequestedBandwidth;
|
||||
ULONG EnumerationFailReason;
|
||||
ULONG PowerRequested;
|
||||
ULONG HubNameLength;
|
||||
} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_BUS_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
ULONG ControllerNameLength;
|
||||
} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_ACQUIRE_INFO {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalSize;
|
||||
WCHAR Buffer[1];
|
||||
} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
#define USB_NODE_INFO_SIG 'USBN'
|
||||
|
||||
typedef enum _USB_WMI_DEVICE_NODE_TYPE {
|
||||
UsbDevice,
|
||||
HubDevice,
|
||||
CompositeDevice,
|
||||
UsbController
|
||||
} USB_WMI_DEVICE_NODE_TYPE, *PUSB_WMI_DEVICE_NODE_TYPE;
|
||||
|
||||
typedef struct _USB_DEVICE_STATE {
|
||||
ULONG DeviceConnected:1;
|
||||
ULONG DeviceStarted:1;
|
||||
} USB_DEVICE_STATE, *PUSB_DEVICE_STATE;
|
||||
|
||||
typedef struct _USB_HUB_PORT_INFORMATION {
|
||||
USB_DEVICE_STATE DeviceState;
|
||||
USHORT PortNumber;
|
||||
USHORT DeviceAddress;
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
} USB_HUB_PORT_INFORMATION, *PUSB_HUB_PORT_INFORMATION;
|
||||
|
||||
typedef struct _USB_HUB_DEVICE_INFO {
|
||||
USB_HUB_DESCRIPTOR HubDescriptor;
|
||||
ULONG HubNumber;
|
||||
USHORT DeviceAddress;
|
||||
BOOLEAN HubIsSelfPowered;
|
||||
BOOLEAN HubIsRootHub;
|
||||
USB_HUB_CAPABILITIES HubCapabilities;
|
||||
ULONG NumberOfHubPorts;
|
||||
USB_HUB_PORT_INFORMATION PortInfo[1];
|
||||
} USB_HUB_DEVICE_INFO, *PUSB_HUB_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_COMPOSITE_FUNCTION_INFO {
|
||||
UCHAR FunctionNumber;
|
||||
UCHAR BaseInterfaceNumber;
|
||||
UCHAR NumberOfInterfaces;
|
||||
BOOLEAN FunctionIsIdle;
|
||||
} USB_COMPOSITE_FUNCTION_INFO, *PUSB_COMPOSITE_FUNCTION_INFO;
|
||||
|
||||
typedef struct _USB_COMPOSITE_DEVICE_INFO {
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
USB_CONFIGURATION_DESCRIPTOR CurrentConfigDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
UCHAR NumberOfFunctions;
|
||||
USB_COMPOSITE_FUNCTION_INFO FunctionInfo[1];
|
||||
} USB_COMPOSITE_DEVICE_INFO, *PUSB_COMPOSITE_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_CONTROLLER_DEVICE_INFO {
|
||||
ULONG PciVendorId;
|
||||
ULONG PciDeviceId;
|
||||
ULONG PciRevision;
|
||||
ULONG NumberOfRootPorts;
|
||||
ULONG HcFeatureFlags;
|
||||
} USB_CONTROLLER_DEVICE_INFO, *PUSB_CONTROLLER_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_DEVICE_INFO {
|
||||
USB_DEVICE_STATE DeviceState;
|
||||
USHORT PortNumber;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
USB_DEVICE_SPEED Speed;
|
||||
USHORT DeviceAddress;
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
WCHAR PnpHardwareId[128];
|
||||
WCHAR PnpCompatibleId[128];
|
||||
WCHAR SerialNumberId[128];
|
||||
WCHAR PnpDeviceDescription[128];
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_PIPE_INFO PipeList[1];
|
||||
} USB_DEVICE_INFO, *PUSB_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_DEVICE_NODE_INFO {
|
||||
ULONG Sig;
|
||||
ULONG LengthInBytes;
|
||||
WCHAR DeviceDescription[40];
|
||||
USB_WMI_DEVICE_NODE_TYPE NodeType;
|
||||
USB_TOPOLOGY_ADDRESS BusAddress;
|
||||
union{
|
||||
USB_DEVICE_INFO UsbDeviceInfo;
|
||||
USB_HUB_DEVICE_INFO HubDeviceInfo;
|
||||
USB_COMPOSITE_DEVICE_INFO CompositeDeviceInfo;
|
||||
USB_CONTROLLER_DEVICE_INFO ControllerDeviceInfo;
|
||||
UCHAR DeviceInformation[4];
|
||||
};
|
||||
} USB_DEVICE_NODE_INFO, *PUSB_DEVICE_NODE_INFO;
|
||||
|
||||
typedef struct _USB_DEVICE_PERFORMANCE_INFO {
|
||||
ULONG BulkBytes;
|
||||
ULONG ControlDataBytes;
|
||||
ULONG IsoBytes;
|
||||
ULONG InterruptBytes;
|
||||
ULONG BulkUrbCount;
|
||||
ULONG ControlUrbCount;
|
||||
ULONG IsoUrbCount;
|
||||
ULONG InterruptUrbCount;
|
||||
ULONG AllocedInterrupt[6];
|
||||
ULONG AllocedIso;
|
||||
ULONG Total32secBandwidth;
|
||||
ULONG TotalTtBandwidth;
|
||||
WCHAR DeviceDescription[60];
|
||||
USB_DEVICE_SPEED DeviceSpeed;
|
||||
ULONG TotalIsoLatency;
|
||||
ULONG DroppedIsoPackets;
|
||||
ULONG TransferErrors;
|
||||
ULONG PciInterruptCount;
|
||||
ULONG HcIdleState;
|
||||
ULONG HcAsyncIdleState;
|
||||
ULONG HcAsyncCacheFlushCount;
|
||||
ULONG HcPeriodicIdleState;
|
||||
ULONG HcPeriodicCacheFlushCount;
|
||||
} USB_DEVICE_PERFORMANCE_INFO, *PUSB_DEVICE_PERFORMANCE_INFO;
|
||||
|
||||
#endif
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -1,26 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#ifndef __USBIODEF_H__
|
||||
#define __USBIODEF_H__
|
||||
|
||||
DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB, 0xF18A0E88, 0xc30C, 0x11D0, 0x88, 0x15, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0xD8);
|
||||
DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE, 0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);
|
||||
DEFINE_GUID(GUID_DEVINTERFACE_USB_HOST_CONTROLLER, 0x3ABF6F2D, 0x71C4, 0x462A, 0x8A, 0x92, 0x1E, 0x68, 0x61, 0xE6, 0xAF, 0x27);
|
||||
DEFINE_GUID(GUID_USB_WMI_STD_DATA, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
|
||||
DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
|
||||
|
||||
#define GUID_CLASS_USBHUB GUID_DEVINTERFACE_USB_HUB
|
||||
#define GUID_CLASS_USB_DEVICE GUID_DEVINTERFACE_USB_DEVICE
|
||||
#define GUID_CLASS_USB_HOST_CONTROLLER GUID_DEVINTERFACE_USB_HOST_CONTROLLER
|
||||
#define HCD_GET_STATS_1 255
|
||||
#define HCD_DIAGNOSTIC_MODE_ON 256
|
||||
#define HCD_DIAGNOSTIC_MODE_OFF 257
|
||||
#define HCD_GET_ROOT_HUB_NAME 258
|
||||
#define HCD_GET_DRIVERKEY_NAME 265
|
||||
#define HCD_GET_STATS_2 266
|
||||
#define HCD_DISABLE_PORT 268
|
||||
#define HCD_ENABLE_PORT 269
|
||||
#define HCD_USER_REQUEST 270
|
||||
#define USB_SUBMIT_URB 0
|
||||
#define USB_RESET_PORT 1
|
||||
#define USB_GET_ROOTHUB_PDO 3
|
||||
|
@ -30,11 +9,20 @@ DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x
|
|||
#define USB_CYCLE_PORT 7
|
||||
#define USB_GET_HUB_NAME 8
|
||||
#define USB_IDLE_NOTIFICATION 9
|
||||
#define USB_RECORD_FAILURE 10
|
||||
#define USB_GET_BUS_INFO 264
|
||||
#define USB_GET_CONTROLLER_NAME 265
|
||||
#define USB_GET_BUSGUID_INFO 266
|
||||
#define USB_GET_PARENT_HUB_INFO 267
|
||||
#define USB_GET_DEVICE_HANDLE 268
|
||||
#define USB_GET_DEVICE_HANDLE_EX 269
|
||||
#define USB_GET_TT_DEVICE_HANDLE 270
|
||||
#define USB_GET_TOPOLOGY_ADDRESS 271
|
||||
#define USB_IDLE_NOTIFICATION_EX 272
|
||||
#define USB_REQ_GLOBAL_SUSPEND 273
|
||||
#define USB_REQ_GLOBAL_RESUME 274
|
||||
#define USB_GET_HUB_CONFIG_INFO 275
|
||||
|
||||
#define USB_GET_NODE_INFORMATION 258
|
||||
#define USB_GET_NODE_CONNECTION_INFORMATION 259
|
||||
#define USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION 260
|
||||
|
@ -44,9 +32,57 @@ DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x
|
|||
#define USB_GET_NODE_CONNECTION_DRIVERKEY_NAME 264
|
||||
#define USB_GET_HUB_CAPABILITIES 271
|
||||
#define USB_GET_NODE_CONNECTION_ATTRIBUTES 272
|
||||
#define USB_HUB_CYCLE_PORT 273
|
||||
#define USB_HUB_CYCLE_PORT 273
|
||||
#define USB_GET_NODE_CONNECTION_INFORMATION_EX 274
|
||||
#define USB_RESET_HUB 275
|
||||
#define USB_GET_HUB_CAPABILITIES_EX 276
|
||||
|
||||
#define HCD_GET_STATS_1 255
|
||||
#define HCD_DIAGNOSTIC_MODE_ON 256
|
||||
#define HCD_DIAGNOSTIC_MODE_OFF 257
|
||||
#define HCD_GET_ROOT_HUB_NAME 258
|
||||
#define HCD_GET_DRIVERKEY_NAME 265
|
||||
#define HCD_GET_STATS_2 266
|
||||
#define HCD_DISABLE_PORT 268
|
||||
#define HCD_ENABLE_PORT 269
|
||||
#define HCD_USER_REQUEST 270
|
||||
#define HCD_TRACE_READ_REQUEST 275
|
||||
|
||||
#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN
|
||||
#define USB_CTL(id) CTL_CODE(FILE_DEVICE_USB, (id), METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define USB_KERNEL_CTL(id) CTL_CODE(FILE_DEVICE_USB, (id), METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
#define USB_KERNEL_CTL_BUFFERED(id) CTL_CODE(FILE_DEVICE_USB, (id), METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB, 0xF18A0E88, 0xc30C, 0x11D0, 0x88, 0x15, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0xD8);
|
||||
DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE, 0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);
|
||||
DEFINE_GUID(GUID_DEVINTERFACE_USB_HOST_CONTROLLER, 0x3ABF6F2D, 0x71C4, 0x462A, 0x8A, 0x92, 0x1E, 0x68, 0x61, 0xE6, 0xAF, 0x27);
|
||||
DEFINE_GUID(GUID_USB_WMI_STD_DATA, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
|
||||
DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
DEFINE_GUID(GUID_USB_WMI_DEVICE_PERF_INFO, 0x66c1aa3c, 0x499f, 0x49a0, 0xa9, 0xa5, 0x61, 0xe2, 0x35, 0x9f, 0x64, 0x7);
|
||||
DEFINE_GUID(GUID_USB_WMI_NODE_INFO, 0x9c179357, 0xdc7a, 0x4f41, 0xb6, 0x6b, 0x32, 0x3b, 0x9d, 0xdc, 0xb5, 0xb1);
|
||||
DEFINE_GUID(GUID_USB_WMI_HUB_DIAGNOSTICS, 0xad0379e4, 0x72db, 0x42ed, 0xba, 0x6e, 0x67, 0x57, 0x4, 0x79, 0x7, 0xd);
|
||||
DEFINE_GUID(GUID_USB_WMI_TRACING, 0x3a61881b, 0xb4e6, 0x4bf9, 0xae, 0xf, 0x3c, 0xd8, 0xf3, 0x94, 0xe5, 0x2f);
|
||||
DEFINE_GUID(GUID_USB_TRANSFER_TRACING, 0x681eb8aa, 0x403d, 0x452c, 0x9f, 0x8a, 0xf0, 0x61, 0x6f, 0xac, 0x95, 0x40);
|
||||
DEFINE_GUID(GUID_USB_PERFORMANCE_TRACING, 0xd5de77a6, 0x6ae9, 0x425c, 0xb1, 0xe2, 0xf5, 0x61, 0x5f, 0xd3, 0x48, 0xa9);
|
||||
|
||||
#endif
|
||||
|
||||
#define GUID_CLASS_USBHUB GUID_DEVINTERFACE_USB_HUB
|
||||
#define GUID_CLASS_USB_DEVICE GUID_DEVINTERFACE_USB_DEVICE
|
||||
#define GUID_CLASS_USB_HOST_CONTROLLER GUID_DEVINTERFACE_USB_HOST_CONTROLLER
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
typedef VOID
|
||||
(NTAPI *USB_IDLE_CALLBACK)(
|
||||
IN PVOID Context);
|
||||
|
||||
typedef struct _USB_IDLE_CALLBACK_INFO {
|
||||
USB_IDLE_CALLBACK IdleCallback;
|
||||
PVOID IdleContext;
|
||||
} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;
|
||||
|
||||
#endif
|
64
reactos/include/psdk/usbrpmif.h
Normal file
64
reactos/include/psdk/usbrpmif.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
#pragma once
|
||||
|
||||
#include "windef.h"
|
||||
#include "usb100.h"
|
||||
|
||||
#if !defined(_USBRPM_DRIVER_)
|
||||
#define USBRPMAPI DECLSPEC_IMPORT
|
||||
#else
|
||||
#define USBRPMAPI
|
||||
#endif
|
||||
|
||||
typedef struct _USBRPM_DEVICE_INFORMATION {
|
||||
ULONG64 HubId;
|
||||
ULONG ConnectionIndex;
|
||||
UCHAR DeviceClass;
|
||||
USHORT VendorId;
|
||||
USHORT ProductId;
|
||||
WCHAR ManufacturerString[MAXIMUM_USB_STRING_LENGTH];
|
||||
WCHAR ProductString[MAXIMUM_USB_STRING_LENGTH];
|
||||
WCHAR HubSymbolicLinkName[MAX_PATH];
|
||||
} USBRPM_DEVICE_INFORMATION, *PUSBRPM_DEVICE_INFORMATION;
|
||||
|
||||
typedef struct _USBRPM_DEVICE_LIST {
|
||||
ULONG NumberOfDevices;
|
||||
USBRPM_DEVICE_INFORMATION Device[0];
|
||||
} USBRPM_DEVICE_LIST, *PUSBRPM_DEVICE_LIST;
|
||||
|
||||
USBRPMAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RPMRegisterAlternateDriver(
|
||||
IN PDRIVER_OBJECT DriverObject,
|
||||
IN LPCWSTR CompatibleId,
|
||||
OUT PHANDLE RegisteredDriver);
|
||||
|
||||
USBRPMAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RPMUnregisterAlternateDriver(
|
||||
IN HANDLE RegisteredDriver);
|
||||
|
||||
USBRPMAPI
|
||||
NTSTATUS
|
||||
RPMGetAvailableDevices(
|
||||
IN HANDLE RegisteredDriver,
|
||||
IN USHORT Locale,
|
||||
OUT PUSBRPM_DEVICE_LIST *DeviceList);
|
||||
|
||||
USBRPMAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RPMLoadAlternateDriverForDevice(
|
||||
IN HANDLE RegisteredDriver,
|
||||
IN ULONG64 HubID,
|
||||
IN ULONG ConnectionIndex,
|
||||
IN OPTIONAL REFGUID OwnerGuid);
|
||||
|
||||
USBRPMAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RPMUnloadAlternateDriverForDevice(
|
||||
IN HANDLE RegisteredDriver,
|
||||
IN ULONG64 HubID,
|
||||
IN ULONG ConnectionIndex);
|
|
@ -20,16 +20,16 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#ifndef __USBUSER_H
|
||||
#define __USBUSER_H
|
||||
|
||||
#include "usb.h"
|
||||
#include "usbiodef.h"
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
#include "usbiodef.h"
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
#define USBUSER_VERSION 0x0004
|
||||
|
@ -51,17 +51,17 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
typedef enum _USB_USER_ERROR_CODE {
|
||||
UsbUserSuccess = 0,
|
||||
UsbUserNotSupported,
|
||||
UsbUserInvalidRequestCode,
|
||||
UsbUserFeatureDisabled,
|
||||
UsbUserInvalidHeaderParameter,
|
||||
UsbUserInvalidParameter,
|
||||
UsbUserMiniportError,
|
||||
UsbUserBufferTooSmall,
|
||||
UsbUserErrorNotMapped,
|
||||
UsbUserDeviceNotStarted,
|
||||
UsbUserNoDeviceConnected
|
||||
UsbUserSuccess = 0,
|
||||
UsbUserNotSupported,
|
||||
UsbUserInvalidRequestCode,
|
||||
UsbUserFeatureDisabled,
|
||||
UsbUserInvalidHeaderParameter,
|
||||
UsbUserInvalidParameter,
|
||||
UsbUserMiniportError,
|
||||
UsbUserBufferTooSmall,
|
||||
UsbUserErrorNotMapped,
|
||||
UsbUserDeviceNotStarted,
|
||||
UsbUserNoDeviceConnected
|
||||
} USB_USER_ERROR_CODE;
|
||||
|
||||
#define USBUSER_GET_CONTROLLER_INFO_0 0x00000001
|
||||
|
@ -73,11 +73,17 @@ typedef enum _USB_USER_ERROR_CODE {
|
|||
#define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007
|
||||
#define USBUSER_GET_USB_DRIVER_VERSION 0x00000008
|
||||
#define USBUSER_GET_USB2_HW_VERSION 0x00000009
|
||||
#define USBUSER_USB_REFRESH_HCT_REG 0x0000000a
|
||||
|
||||
#define USBUSER_OP_SEND_ONE_PACKET 0x10000001
|
||||
#define USBUSER_OP_RAW_RESET_PORT 0x20000001
|
||||
#define USBUSER_OP_OPEN_RAW_DEVICE 0x20000002
|
||||
#define USBUSER_OP_CLOSE_RAW_DEVICE 0x20000003
|
||||
#define USBUSER_OP_SEND_RAW_COMMAND 0x20000004
|
||||
#define USBUSER_SET_ROOTPORT_FEATURE 0x20000005
|
||||
#define USBUSER_CLEAR_ROOTPORT_FEATURE 0x20000006
|
||||
#define USBUSER_GET_ROOTPORT_STATUS 0x20000007
|
||||
|
||||
#define USBUSER_INVALID_REQUEST 0xFFFFFFF0
|
||||
#define USBUSER_OP_MASK_DEVONLY_API 0x10000000
|
||||
#define USBUSER_OP_MASK_HCTEST_API 0x20000000
|
||||
|
@ -93,231 +99,249 @@ typedef enum _USB_USER_ERROR_CODE {
|
|||
#define USB_PACKETFLAG_TOGGLE0 0x00000100
|
||||
#define USB_PACKETFLAG_TOGGLE1 0x00000200
|
||||
|
||||
typedef struct _PACKET_PARAMETERS {
|
||||
UCHAR DeviceAddress;
|
||||
UCHAR EndpointAddress;
|
||||
USHORT MaximumPacketSize;
|
||||
ULONG Timeout;
|
||||
ULONG Flags;
|
||||
ULONG DataLength;
|
||||
USHORT HubDeviceAddress;
|
||||
USHORT PortTTNumber;
|
||||
UCHAR ErrorCount;
|
||||
UCHAR Pad[3];
|
||||
USBD_STATUS UsbdStatusCode;
|
||||
UCHAR Data[4];
|
||||
} PACKET_PARAMETERS, *PPACKET_PARAMETERS;
|
||||
|
||||
typedef struct _RAW_RESET_PORT_PARAMETERS {
|
||||
USHORT PortNumber;
|
||||
USHORT PortStatus;
|
||||
} RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS;
|
||||
|
||||
typedef struct _USB_BANDWIDTH_INFO {
|
||||
ULONG DeviceCount;
|
||||
ULONG TotalBusBandwidth;
|
||||
ULONG Total32secBandwidth;
|
||||
ULONG AllocedBulkAndControl;
|
||||
ULONG AllocedIso;
|
||||
ULONG AllocedInterrupt_1ms;
|
||||
ULONG AllocedInterrupt_2ms;
|
||||
ULONG AllocedInterrupt_4ms;
|
||||
ULONG AllocedInterrupt_8ms;
|
||||
ULONG AllocedInterrupt_16ms;
|
||||
ULONG AllocedInterrupt_32ms;
|
||||
} USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO;
|
||||
|
||||
typedef struct _USBUSER_REQUEST_HEADER {
|
||||
ULONG UsbUserRequest;
|
||||
USB_USER_ERROR_CODE UsbUserStatusCode;
|
||||
ULONG RequestBufferLength;
|
||||
ULONG ActualBufferLength;
|
||||
} USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER;
|
||||
|
||||
typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_BANDWIDTH_INFO BandwidthInformation;
|
||||
} USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST;
|
||||
|
||||
typedef struct _USB_BUS_STATISTICS_0 {
|
||||
ULONG DeviceCount;
|
||||
LARGE_INTEGER CurrentSystemTime;
|
||||
ULONG CurrentUsbFrame;
|
||||
ULONG BulkBytes;
|
||||
ULONG IsoBytes;
|
||||
ULONG InterruptBytes;
|
||||
ULONG ControlDataBytes;
|
||||
ULONG PciInterruptCount;
|
||||
ULONG HardResetCount;
|
||||
ULONG WorkerSignalCount;
|
||||
ULONG CommonBufferBytes;
|
||||
ULONG WorkerIdleTimeMs;
|
||||
BOOLEAN RootHubEnabled;
|
||||
UCHAR RootHubDevicePowerState;
|
||||
UCHAR Unused;
|
||||
UCHAR NameIndex;
|
||||
} USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0;
|
||||
|
||||
typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_BUS_STATISTICS_0 BusStatistics0;
|
||||
} USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST;
|
||||
|
||||
/* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */
|
||||
#define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING 0x00000001
|
||||
#define USB_HC_FEATURE_FLAG_SEL_SUSPEND 0x00000002
|
||||
#define USB_HC_FEATURE_LEGACY_BIOS 0x00000004
|
||||
|
||||
typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS {
|
||||
ULONG xxx;
|
||||
} USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
|
||||
typedef struct _USBUSER_REQUEST_HEADER {
|
||||
ULONG UsbUserRequest;
|
||||
USB_USER_ERROR_CODE UsbUserStatusCode;
|
||||
ULONG RequestBufferLength;
|
||||
ULONG ActualBufferLength;
|
||||
} USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER;
|
||||
|
||||
typedef struct _USBUSER_CLOSE_RAW_DEVICE {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters;
|
||||
} USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE;
|
||||
typedef struct _PACKET_PARAMETERS {
|
||||
UCHAR DeviceAddress;
|
||||
UCHAR EndpointAddress;
|
||||
USHORT MaximumPacketSize;
|
||||
ULONG Timeout;
|
||||
ULONG Flags;
|
||||
ULONG DataLength;
|
||||
USHORT HubDeviceAddress;
|
||||
USHORT PortTTNumber;
|
||||
UCHAR ErrorCount;
|
||||
UCHAR Pad[3];
|
||||
USBD_STATUS UsbdStatusCode;
|
||||
UCHAR Data[4];
|
||||
} PACKET_PARAMETERS, *PPACKET_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_SEND_ONE_PACKET {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
PACKET_PARAMETERS PacketParameters;
|
||||
} USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET;
|
||||
|
||||
typedef struct _RAW_RESET_PORT_PARAMETERS {
|
||||
USHORT PortNumber;
|
||||
USHORT PortStatus;
|
||||
} RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_RAW_RESET_ROOT_PORT {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
RAW_RESET_PORT_PARAMETERS Parameters;
|
||||
} USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT;
|
||||
|
||||
typedef struct _RAW_ROOTPORT_FEATURE {
|
||||
USHORT PortNumber;
|
||||
USHORT PortFeature;
|
||||
USHORT PortStatus;
|
||||
} RAW_ROOTPORT_FEATURE, *PRAW_ROOTPORT_FEATURE;
|
||||
|
||||
typedef struct _USBUSER_ROOTPORT_FEATURE_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
RAW_ROOTPORT_FEATURE Parameters;
|
||||
} USBUSER_ROOTPORT_FEATURE_REQUEST, *PUSBUSER_ROOTPORT_FEATURE_REQUEST;
|
||||
|
||||
typedef struct _RAW_ROOTPORT_PARAMETERS {
|
||||
USHORT PortNumber;
|
||||
USHORT PortStatus;
|
||||
} RAW_ROOTPORT_PARAMETERS, *PRAW_ROOTPORT_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_ROOTPORT_PARAMETERS {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
RAW_ROOTPORT_PARAMETERS Parameters;
|
||||
} USBUSER_ROOTPORT_PARAMETERS, *PUSBUSER_ROOTPORT_PARAMETERS;
|
||||
|
||||
typedef struct _USB_CONTROLLER_INFO_0 {
|
||||
ULONG PciVendorId;
|
||||
ULONG PciDeviceId;
|
||||
ULONG PciRevision;
|
||||
ULONG NumberOfRootPorts;
|
||||
USB_CONTROLLER_FLAVOR ControllerFlavor;
|
||||
ULONG HcFeatureFlags;
|
||||
ULONG PciVendorId;
|
||||
ULONG PciDeviceId;
|
||||
ULONG PciRevision;
|
||||
ULONG NumberOfRootPorts;
|
||||
USB_CONTROLLER_FLAVOR ControllerFlavor;
|
||||
ULONG HcFeatureFlags;
|
||||
} USB_CONTROLLER_INFO_0 , *PUSB_CONTROLLER_INFO_0;
|
||||
|
||||
typedef struct _USBUSER_CONTROLLER_INFO_0 {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_CONTROLLER_INFO_0 Info0;
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_CONTROLLER_INFO_0 Info0;
|
||||
} USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0;
|
||||
|
||||
typedef struct _USB_DRIVER_VERSION_PARAMETERS {
|
||||
ULONG DriverTrackingCode;
|
||||
ULONG USBDI_Version;
|
||||
ULONG USBUSER_Version;
|
||||
BOOLEAN CheckedPortDriver;
|
||||
BOOLEAN CheckedMiniportDriver;
|
||||
USHORT USB_Version;
|
||||
} USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_GET_DRIVER_VERSION {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_DRIVER_VERSION_PARAMETERS Parameters;
|
||||
} USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION;
|
||||
|
||||
typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS {
|
||||
USHORT PortStatus;
|
||||
USHORT MaxPacketEp0;
|
||||
} USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_OPEN_RAW_DEVICE {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_OPEN_RAW_DEVICE_PARAMETERS Parameters;
|
||||
} USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE;
|
||||
|
||||
typedef enum _WDMUSB_POWER_STATE {
|
||||
WdmUsbPowerNotMapped = 0,
|
||||
WdmUsbPowerSystemUnspecified = 100,
|
||||
WdmUsbPowerSystemWorking,
|
||||
WdmUsbPowerSystemSleeping1,
|
||||
WdmUsbPowerSystemSleeping2,
|
||||
WdmUsbPowerSystemSleeping3,
|
||||
WdmUsbPowerSystemHibernate,
|
||||
WdmUsbPowerSystemShutdown,
|
||||
WdmUsbPowerDeviceUnspecified = 200,
|
||||
WdmUsbPowerDeviceD0,
|
||||
WdmUsbPowerDeviceD1,
|
||||
WdmUsbPowerDeviceD2,
|
||||
WdmUsbPowerDeviceD3
|
||||
} WDMUSB_POWER_STATE;
|
||||
|
||||
typedef struct _USB_POWER_INFO {
|
||||
WDMUSB_POWER_STATE SystemState;
|
||||
WDMUSB_POWER_STATE HcDevicePowerState;
|
||||
WDMUSB_POWER_STATE HcDeviceWake;
|
||||
WDMUSB_POWER_STATE HcSystemWake;
|
||||
WDMUSB_POWER_STATE RhDevicePowerState;
|
||||
WDMUSB_POWER_STATE RhDeviceWake;
|
||||
WDMUSB_POWER_STATE RhSystemWake;
|
||||
WDMUSB_POWER_STATE LastSystemSleepState;
|
||||
BOOLEAN CanWakeup;
|
||||
BOOLEAN IsPowered;
|
||||
} USB_POWER_INFO, *PUSB_POWER_INFO;
|
||||
|
||||
typedef struct _USBUSER_POWER_INFO_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_POWER_INFO PowerInformation;
|
||||
} USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST;
|
||||
|
||||
typedef struct _USB_UNICODE_NAME {
|
||||
ULONG Length;
|
||||
WCHAR String[1];
|
||||
ULONG Length;
|
||||
WCHAR String[1];
|
||||
} USB_UNICODE_NAME, *PUSB_UNICODE_NAME;
|
||||
|
||||
typedef struct _USBUSER_CONTROLLER_UNICODE_NAME {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_UNICODE_NAME UnicodeName;
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_UNICODE_NAME UnicodeName;
|
||||
} USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME;
|
||||
|
||||
typedef struct _USB_PASS_THRU_PARAMETERS {
|
||||
GUID FunctionGUID;
|
||||
ULONG ParameterLength;
|
||||
UCHAR Parameters[4];
|
||||
GUID FunctionGUID;
|
||||
ULONG ParameterLength;
|
||||
UCHAR Parameters[4];
|
||||
} USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_PASS_THRU_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_PASS_THRU_PARAMETERS PassThru;
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_PASS_THRU_PARAMETERS PassThru;
|
||||
} USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST;
|
||||
|
||||
typedef struct _USBUSER_RAW_RESET_ROOT_PORT {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
RAW_RESET_PORT_PARAMETERS Parameters;
|
||||
} USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT;
|
||||
typedef enum _WDMUSB_POWER_STATE {
|
||||
WdmUsbPowerNotMapped = 0,
|
||||
WdmUsbPowerSystemUnspecified = 100,
|
||||
WdmUsbPowerSystemWorking,
|
||||
WdmUsbPowerSystemSleeping1,
|
||||
WdmUsbPowerSystemSleeping2,
|
||||
WdmUsbPowerSystemSleeping3,
|
||||
WdmUsbPowerSystemHibernate,
|
||||
WdmUsbPowerSystemShutdown,
|
||||
WdmUsbPowerDeviceUnspecified = 200,
|
||||
WdmUsbPowerDeviceD0,
|
||||
WdmUsbPowerDeviceD1,
|
||||
WdmUsbPowerDeviceD2,
|
||||
WdmUsbPowerDeviceD3
|
||||
} WDMUSB_POWER_STATE;
|
||||
|
||||
typedef struct _USBUSER_SEND_ONE_PACKET {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
PACKET_PARAMETERS PacketParameters;
|
||||
} USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET;
|
||||
typedef struct _USB_POWER_INFO {
|
||||
WDMUSB_POWER_STATE SystemState;
|
||||
WDMUSB_POWER_STATE HcDevicePowerState;
|
||||
WDMUSB_POWER_STATE HcDeviceWake;
|
||||
WDMUSB_POWER_STATE HcSystemWake;
|
||||
WDMUSB_POWER_STATE RhDevicePowerState;
|
||||
WDMUSB_POWER_STATE RhDeviceWake;
|
||||
WDMUSB_POWER_STATE RhSystemWake;
|
||||
WDMUSB_POWER_STATE LastSystemSleepState;
|
||||
BOOLEAN CanWakeup;
|
||||
BOOLEAN IsPowered;
|
||||
} USB_POWER_INFO, *PUSB_POWER_INFO;
|
||||
|
||||
typedef struct _USBUSER_POWER_INFO_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_POWER_INFO PowerInformation;
|
||||
} USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST;
|
||||
|
||||
typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS {
|
||||
USHORT PortStatus;
|
||||
USHORT MaxPacketEp0;
|
||||
} USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_OPEN_RAW_DEVICE {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_OPEN_RAW_DEVICE_PARAMETERS Parameters;
|
||||
} USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE;
|
||||
|
||||
typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS {
|
||||
ULONG xxx;
|
||||
} USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_CLOSE_RAW_DEVICE {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters;
|
||||
} USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE;
|
||||
|
||||
typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS {
|
||||
UCHAR Usb_bmRequest;
|
||||
UCHAR Usb_bRequest;
|
||||
USHORT Usb_wVlaue;
|
||||
USHORT Usb_wIndex;
|
||||
USHORT Usb_wLength;
|
||||
USHORT DeviceAddress;
|
||||
USHORT MaximumPacketSize;
|
||||
ULONG Timeout;
|
||||
ULONG DataLength;
|
||||
USBD_STATUS UsbdStatusCode;
|
||||
UCHAR Data[4];
|
||||
UCHAR Usb_bmRequest;
|
||||
UCHAR Usb_bRequest;
|
||||
USHORT Usb_wVlaue;
|
||||
USHORT Usb_wIndex;
|
||||
USHORT Usb_wLength;
|
||||
USHORT DeviceAddress;
|
||||
USHORT MaximumPacketSize;
|
||||
ULONG Timeout;
|
||||
ULONG DataLength;
|
||||
USBD_STATUS UsbdStatusCode;
|
||||
UCHAR Data[4];
|
||||
} USB_SEND_RAW_COMMAND_PARAMETERS, *PUSB_SEND_RAW_COMMAND_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_SEND_RAW_COMMAND {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_SEND_RAW_COMMAND_PARAMETERS Parameters;
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_SEND_RAW_COMMAND_PARAMETERS Parameters;
|
||||
} USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND;
|
||||
|
||||
/* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */
|
||||
#define USB2HW_UNKNOWN 0x00
|
||||
#define USB2HW_A0 0xA0
|
||||
#define USB2HW_A1 0xA1
|
||||
#define USB2HW_B0 0xB0
|
||||
typedef struct _USB_BANDWIDTH_INFO {
|
||||
ULONG DeviceCount;
|
||||
ULONG TotalBusBandwidth;
|
||||
ULONG Total32secBandwidth;
|
||||
ULONG AllocedBulkAndControl;
|
||||
ULONG AllocedIso;
|
||||
ULONG AllocedInterrupt_1ms;
|
||||
ULONG AllocedInterrupt_2ms;
|
||||
ULONG AllocedInterrupt_4ms;
|
||||
ULONG AllocedInterrupt_8ms;
|
||||
ULONG AllocedInterrupt_16ms;
|
||||
ULONG AllocedInterrupt_32ms;
|
||||
} USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO;
|
||||
|
||||
typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_BANDWIDTH_INFO BandwidthInformation;
|
||||
} USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST;
|
||||
|
||||
typedef struct _USB_BUS_STATISTICS_0 {
|
||||
ULONG DeviceCount;
|
||||
LARGE_INTEGER CurrentSystemTime;
|
||||
ULONG CurrentUsbFrame;
|
||||
ULONG BulkBytes;
|
||||
ULONG IsoBytes;
|
||||
ULONG InterruptBytes;
|
||||
ULONG ControlDataBytes;
|
||||
ULONG PciInterruptCount;
|
||||
ULONG HardResetCount;
|
||||
ULONG WorkerSignalCount;
|
||||
ULONG CommonBufferBytes;
|
||||
ULONG WorkerIdleTimeMs;
|
||||
BOOLEAN RootHubEnabled;
|
||||
UCHAR RootHubDevicePowerState;
|
||||
UCHAR Unused;
|
||||
UCHAR NameIndex;
|
||||
} USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0;
|
||||
|
||||
typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_BUS_STATISTICS_0 BusStatistics0;
|
||||
} USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST;
|
||||
|
||||
typedef struct _USB_DRIVER_VERSION_PARAMETERS {
|
||||
ULONG DriverTrackingCode;
|
||||
ULONG USBDI_Version;
|
||||
ULONG USBUSER_Version;
|
||||
BOOLEAN CheckedPortDriver;
|
||||
BOOLEAN CheckedMiniportDriver;
|
||||
USHORT USB_Version;
|
||||
} USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_GET_DRIVER_VERSION {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_DRIVER_VERSION_PARAMETERS Parameters;
|
||||
} USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION;
|
||||
|
||||
typedef struct _USB_USB2HW_VERSION_PARAMETERS {
|
||||
UCHAR Usb2HwRevision;
|
||||
UCHAR Usb2HwRevision;
|
||||
} USB_USB2HW_VERSION_PARAMETERS, *PUSB_USB2HW_VERSION_PARAMETERS;
|
||||
|
||||
typedef struct _USBUSER_GET_USB2HW_VERSION {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_USB2HW_VERSION_PARAMETERS Parameters;
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
USB_USB2HW_VERSION_PARAMETERS Parameters;
|
||||
} USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION;
|
||||
|
||||
typedef struct _USBUSER_REFRESH_HCT_REG {
|
||||
USBUSER_REQUEST_HEADER Header;
|
||||
ULONG Flags;
|
||||
} USBUSER_REFRESH_HCT_REG, *PUSBUSER_REFRESH_HCT_REG;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __USBUSER_H */
|
|
@ -1807,9 +1807,7 @@ BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD);
|
|||
DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
|
||||
BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
|
||||
BOOL WINAPI InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
|
||||
#if !defined(__WINDDK_H) && _WIN32_WINNT >= 0x0501
|
||||
VOID WINAPI InitializeSListHead(PSLIST_HEADER);
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
VOID WINAPI InitializeSRWLock(PSRWLOCK);
|
||||
#endif
|
||||
|
@ -1881,7 +1879,15 @@ PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY);
|
|||
|
||||
#endif // !(defined (_M_AMD64) || defined (_M_IA64))
|
||||
|
||||
VOID WINAPI InitializeSListHead(PSLIST_HEADER);
|
||||
#if defined(_SLIST_HEADER_) && !defined(_NTOSP_)
|
||||
|
||||
WINBASEAPI
|
||||
VOID
|
||||
WINAPI
|
||||
InitializeSListHead (
|
||||
IN OUT PSLIST_HEADER ListHead);
|
||||
#endif
|
||||
|
||||
USHORT WINAPI QueryDepthSList(PSLIST_HEADER);
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue