|
|
/*++
Copyright (c) 1999 Microsoft Corporation All rights reserved.
Module Name:
enumports.h
Abstract:
USBMON header file
--*/
//
// Sizes
//
#define MAX_PORT_LEN 20
#define MAX_PORT_DESC_LEN 60
#define MAX_DEVICE_PATH 256
#define PAR_QUERY_TIMEOUT 5000
static const GUID USB_PRINTER_GUID = { 0x28d78fad, 0x5a12, 0x11d1, { 0xae, 0x5b, 0x0, 0x0, 0xf8, 0x3, 0xa8, 0xc2 } };
//
// Functions needed
#ifdef UNICODE
#define lstrchr wcschr
#define lstrncmpi _wcsnicmp
#else
#define lstrchr strchr
#define lstrncmpi _strnicmp
#endif
#define USB_SIGNATURE 0x89AB
typedef struct USBMON_PORT_INFO_DEF {
DWORD dwSignature; struct USBMON_PORT_INFO_DEF *pNext; DWORD cRef; DWORD dwFlags; DWORD dwDeviceFlags; DWORD dwJobId; HANDLE hDeviceHandle; HANDLE hPrinter; LPBYTE pWriteBuffer; //
// dwBufferSize : size of buffer
// dwDataSize : size of data in buffer
// (could be smaller than dwBufferSize)
// dwDataCompleted : size of data sent and acknowledged
// dwScheduledData : size of data we have scheduled using WriteFile
//
DWORD dwBufferSize, dwDataSize, dwDataCompleted, dwDataScheduled; OVERLAPPED Ov; CRITICAL_SECTION CriticalSection; DWORD ReadTimeoutMultiplier; DWORD ReadTimeoutConstant; DWORD WriteTimeoutMultiplier; DWORD WriteTimeoutConstant; TCHAR szPortName[MAX_PORT_LEN]; TCHAR szPortDescription[MAX_PORT_DESC_LEN]; TCHAR szDevicePath[256]; } USBMON_PORT_INFO, *PUSBMON_PORT_INFO;
#define USBMON_STARTDOC 0x00000001
typedef struct PORT_UPDATE_INFO_DEF { struct PORT_UPDATE_INFO_DEF *pNext; TCHAR szPortName[MAX_PORT_LEN]; HKEY hKey; BOOL bActive; } PORT_UPDATE_INFO, *PPORT_UPDATE_INFO;
typedef struct USELESS_PORT_INFO_DEF {
struct USELESS_PORT_INFO_DEF *pNext; TCHAR szDevicePath[256]; } USELESS_PORT_INFO, *PUSELESS_PORT_INFO;
typedef struct USBMON_MONITOR_INFO_DEF {
DWORD dwLastEnumIndex, dwEnumPortCount, dwPortCount, dwUselessPortCount; PUSBMON_PORT_INFO pPortInfo; PUSELESS_PORT_INFO pJunkList; CRITICAL_SECTION EnumPortsCS, BackThreadCS; } USBMON_MONITOR_INFO, *PUSBMON_MONITOR_INFO;
typedef struct BACKGROUND_THREAD_DEF {
PUSBMON_MONITOR_INFO pMonitorInfo; PPORT_UPDATE_INFO pPortUpdateList; HANDLE hWaitToStart; } BACKGROUND_THREAD_DATA, PBACKGROUND_THREAD_DATA;
extern USBMON_MONITOR_INFO gUsbmonInfo;
PUSBMON_PORT_INFO FindPort( PUSBMON_MONITOR_INFO pMonitorInfo, LPTSTR pszPortName, PUSBMON_PORT_INFO *pPrev );
BOOL WINAPI USBMON_EnumPorts( LPTSTR pszName, DWORD dwLevel, LPBYTE pPorts, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned );
|