245 lines
5.1 KiB
C
245 lines
5.1 KiB
C
#ifndef _LOCAL_H_
|
|
#define _LOCAL_H_
|
|
|
|
//*****************************************************************************
|
|
// D E F I N E S
|
|
//*****************************************************************************
|
|
|
|
#define USBTEST_SERVICE_NAME "USBTest"
|
|
#define USBTEST_SERVICE_DESC "USB Test Driver"
|
|
#define USBTEST_DRIVER_PATH "%windir%\\system32\\drivers\\usbtest.sys"
|
|
|
|
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
|
|
#define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035L)
|
|
|
|
//*****************************************************************************
|
|
// T Y P E D E F S
|
|
//*****************************************************************************
|
|
|
|
typedef struct _NODE_TO_TEXT_CONTEXT
|
|
{
|
|
HANDLE File;
|
|
ULONG Indentation;
|
|
} NODE_TO_TEXT_CONTEXT, *PNODE_TO_TEXT_CONTEXT;
|
|
|
|
|
|
//*****************************************************************************
|
|
// L O C A L F U N C T I O N P R O T O T Y P E S
|
|
//*****************************************************************************
|
|
|
|
//*****************************************************************************
|
|
// DEVNODE.C
|
|
//*****************************************************************************
|
|
|
|
BOOL
|
|
DriverNameToDeviceInstance(
|
|
IN PCHAR DriverName,
|
|
OUT DEVINST *DeviceInstance
|
|
);
|
|
|
|
PCHAR
|
|
GetDeviceDesc(
|
|
DEVINST DeviceInstance
|
|
);
|
|
|
|
PCHAR
|
|
GetSymbolicLink(
|
|
DEVINST DeviceInstance
|
|
);
|
|
|
|
PCHAR
|
|
GetDeviceClassName(
|
|
DEVINST DeviceInstance
|
|
);
|
|
|
|
BOOL
|
|
GetDeviceInfo(
|
|
IN DEVINST DeviceInstance,
|
|
IN BOOL IsHub,
|
|
IN OUT PUSB_DEVICE_NODE DeviceNode
|
|
);
|
|
|
|
PCHAR
|
|
WideStrToMultiStr(
|
|
PWCHAR WideStr
|
|
);
|
|
|
|
DEVINST
|
|
GetHCDDeviceInstance(
|
|
IN HANDLE HCHandle
|
|
);
|
|
|
|
PCHAR
|
|
GetRootHubName(
|
|
HANDLE HostController
|
|
);
|
|
|
|
PCHAR
|
|
GetExternalHubName (
|
|
HANDLE HubHandle,
|
|
ULONG ConnectionIndex
|
|
);
|
|
|
|
PCHAR
|
|
GetDriverKeyName (
|
|
HANDLE HubHandle,
|
|
ULONG ConnectionIndex
|
|
);
|
|
|
|
PUSB_DEVICE_NODE
|
|
CreateUSBDeviceNode(
|
|
IN USB_DEVICE_NODE_TYPE NodeType,
|
|
IN ULONG NumberOfChildren
|
|
);
|
|
|
|
BOOLEAN
|
|
DestroyUSBDeviceNode(
|
|
IN PUSB_DEVICE_NODE Node,
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
WriteUSBDeviceNodeToTextFilePre(
|
|
PUSB_DEVICE_NODE Node,
|
|
PNODE_TO_TEXT_CONTEXT Context
|
|
);
|
|
|
|
BOOLEAN
|
|
WriteUSBDeviceNodeToTextFilePost(
|
|
PUSB_DEVICE_NODE Node,
|
|
PNODE_TO_TEXT_CONTEXT Context
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
WriteUSBDeviceNodeToTextFile(
|
|
IN HANDLE File,
|
|
IN PUSB_DEVICE_NODE Node,
|
|
IN ULONG Indentation
|
|
);
|
|
|
|
BOOLEAN
|
|
WalkUSBDeviceNode(
|
|
IN PUSB_DEVICE_NODE Node,
|
|
IN PUSB_DEVICE_NODE_CALLBACK PreWalkCallback,
|
|
IN PUSB_DEVICE_NODE_CALLBACK PostWalkCallback,
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
WriteUSBDeviceNodeToFile(
|
|
IN PUSB_DEVICE_NODE Node,
|
|
IN HANDLE File
|
|
);
|
|
|
|
PUSB_DEVICE_NODE
|
|
ReadUSBDeviceNodeFromFile(
|
|
IN HANDLE File
|
|
);
|
|
|
|
VOID
|
|
CompareUSBDeviceNodes(
|
|
IN PUSB_DEVICE_NODE Node1,
|
|
IN PUSB_DEVICE_NODE Node2,
|
|
OUT PULONG NumberOfDifferences,
|
|
OUT PNODE_PAIR_LIST NodeDifferenceList
|
|
);
|
|
|
|
VOID
|
|
InitializeNodePairList(
|
|
IN PNODE_PAIR_LIST NodePairList
|
|
);
|
|
|
|
VOID
|
|
AddNodePair(
|
|
IN PUSB_DEVICE_NODE Node1,
|
|
IN PUSB_DEVICE_NODE Node2,
|
|
IN PNODE_PAIR_LIST NodePairList
|
|
);
|
|
|
|
VOID
|
|
DestroyNodePairList(
|
|
IN PNODE_PAIR_LIST NodePairList
|
|
);
|
|
|
|
BOOL
|
|
EnumerateHostController(
|
|
IN PUSB_DEVICE_NODE HCNode
|
|
);
|
|
|
|
PUSB_DEVICE_NODE
|
|
EnumerateNonHub(
|
|
DEVINST DeviceInstance,
|
|
PUSB_NODE_CONNECTION_INFORMATION ConnectionInfo
|
|
);
|
|
|
|
PUSB_DEVICE_NODE
|
|
EnumerateCompositeDevice(
|
|
DEVINST DeviceInstance,
|
|
PUSB_NODE_CONNECTION_INFORMATION ConnectionInfo,
|
|
ULONG NumberInterfaces
|
|
);
|
|
|
|
PUSB_DEVICE_NODE
|
|
EnumerateHub(
|
|
DEVINST DeviceInstance,
|
|
PCHAR HubName,
|
|
PUSB_NODE_CONNECTION_INFORMATION ConnectionInfo
|
|
);
|
|
|
|
BOOL
|
|
EnumerateHubPorts(
|
|
IN PUSB_DEVICE_NODE HubNode,
|
|
IN HANDLE HubHandle,
|
|
IN ULONG NumberOfPorts
|
|
);
|
|
|
|
//*****************************************************************************
|
|
// SERVICE.C
|
|
//*****************************************************************************
|
|
|
|
SC_HANDLE
|
|
OpenWin2kService(
|
|
IN PSTR ServiceName,
|
|
IN PSTR ServiceDescription,
|
|
IN PSTR DriverPath,
|
|
IN BOOL CreateIfNonExistant
|
|
);
|
|
|
|
SC_HANDLE
|
|
CreateWin2kService(
|
|
IN SC_HANDLE scManagerHandle,
|
|
IN PSTR ServiceName,
|
|
IN PSTR ServiceDescription,
|
|
IN PSTR DriverPath
|
|
);
|
|
|
|
BOOLEAN
|
|
IsWindows9x(
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
LoadWin9xWdmDriver(
|
|
IN PSTR DriverPath
|
|
);
|
|
|
|
BOOLEAN
|
|
UnloadWin9xWdmDriver(
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
LoadWin2kWdmDriver(
|
|
IN PSTR ServiceName,
|
|
IN PSTR ServiceDescription,
|
|
IN PSTR DriverPath
|
|
);
|
|
|
|
BOOLEAN
|
|
UnloadWin2kWdmDriver(
|
|
IN PSTR ServiceName
|
|
);
|
|
|
|
#endif
|