www.pudn.com > usbfx2lk_v1.1.zip > usbfx2lk_ioctl.h
/////////////////////////////////////////////////////////////////////////////// // // (C) Copyright 2005 OSR Open Systems Resources, Inc. // All Rights Reserved // // This sofware is supplied for instructional purposes only. // // OSR Open Systems Resources, Inc. (OSR) expressly disclaims any warranty // for this software. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY // OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, // THE IMPLIED WARRANTIES OF MECHANTABILITY OR FITNESS FOR A PARTICULAR // PURPOSE. THE ENTIRE RISK ARISING FROM THE USE OF THIS SOFTWARE REMAINS // WITH YOU. OSR's entire liability and your exclusive remedy shall not // exceed the price paid for this material. In no event shall OSR or its // suppliers be liable for any damages whatsoever (including, without // limitation, damages for loss of business profit, business interruption, // loss of business information, or any other pecuniary loss) arising out // of the use or inability to use this software, even if OSR has been // advised of the possibility of such damages. Because some states/ // jurisdictions do not allow the exclusion or limitation of liability for // consequential or incidental damages, the above limitation may not apply // to you. // // OSR Open Systems Resources, Inc. // 105 Route 101A Suite 19 // Amherst, NH 03031 (603) 595-6500 FAX: (603) 595-6503 // email bugs to: bugs@osr.com // // // MODULE: // // USBFX2LK_Ioctl.h // // ABSTRACT: // // // AUTHOR(S): // // OSR Open Systems Resources, Inc. // /////////////////////////////////////////////////////////////////////////////// // // This header file contains all declarations shared between driver and user // applications. // #ifndef __USBFX2LK_IOCTL_H__ #define __USBFX2LK_IOCTL_H__ (1) #include// // The following value is arbitrarily chosen from the space defined by Microsoft // as being "for non-Microsoft use" // #define FILE_DEVICE_OSRUSBFX2LK 65500 // // OSRUSBFX2LK Interface Guid. // {C5B7F228-CAFF-42d5-A472-6B9EDA7982EC} // DEFINE_GUID(GUID_OSR_USBFX2LK_INTERFACE, 0xc5b7f228, 0xcaff, 0x42d5, 0xa4, 0x72, 0x6b, 0x9e, 0xda, 0x79, 0x82, 0xec); // // Define the structures that will be used by the IOCTL // interface to the driver // // // USBFX2_PIPE_ENUM // // For any IOCTL that works on a specific pipe // (IOCTL_OSRUSBFX2_RESET_PIPE, for example) // the input parameter will be a USBFX2_PIPE_ENUM // value to indicate which pipe the IOCTL is directed // to // typedef enum _USBFX2_PIPE_ENUM { USBFx2BulkInPipe = 0x5301979, USBFx2BulkOutPipe, USBFx2InterruptPipe }USBFX2_PIPE_ENUM, *PUSBFX2_PIPE_ENUM; // // BAR_GRAPH_STATE // // BAR_GRAPH_STATE is a bit field structure with each // bit corresponding to one of the bar graph on the // OSRFX2 Development Board // #include typedef struct _BAR_GRAPH_STATE { union { struct { // // Individual bars starting from the // top of the stack of bars // // NOTE: There are actually 10 bars, // but the very top two do not light // and are not counted here. Also // note that the bars aren't actually // wired the way that you might think // that they are. Sending a "1" to the // device actually lights the fourth // bar from the bottom // UCHAR Bar4 : 1; UCHAR Bar5 : 1; UCHAR Bar6 : 1; UCHAR Bar7 : 1; UCHAR Bar8 : 1; UCHAR Bar1 : 1; UCHAR Bar2 : 1; UCHAR Bar3 : 1; }; // // The state of all the bar graph as a single // UCHAR // UCHAR BarsAsUChar; }; }BAR_GRAPH_STATE, *PBAR_GRAPH_STATE; // // SWITCH_STATE // // SWITCH_STATE is a bit field structure with each // bit corresponding to one of the switches on the // OSRFX2 Development Board // typedef struct _SWITCH_STATE { union { struct { // // Individual switches starting from the // left of the set of switches // UCHAR Switch1 : 1; UCHAR Switch2 : 1; UCHAR Switch3 : 1; UCHAR Switch4 : 1; UCHAR Switch5 : 1; UCHAR Switch6 : 1; UCHAR Switch7 : 1; UCHAR Switch8 : 1; }; // // The state of all the switches as a single // UCHAR // UCHAR SwitchesAsUChar; }; }SWITCH_STATE, *PSWITCH_STATE; // // IOCTL_OSRUSBFX2_GET_BAR_GRAPH_DISPLAY // // This IOCTL allows the user to get the state of the bar graph. // // Input: // None. // // Output: // BAR_GRAPH_STATE // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_GET_BAR_GRAPH_DISPLAY \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x801, METHOD_BUFFERED, FILE_READ_ACCESS) // // IOCTL_OSRUSBFX2_SET_BAR_GRAPH_DISPLAY // // This IOCTL allows the user to set the state of the bar graph. // // Input: // BAR_GRAPH_STATE. // // Output: // None. // // Access Required: // Write. // #define IOCTL_OSRUSBFX2_SET_BAR_GRAPH_DISPLAY \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x802, METHOD_BUFFERED, FILE_WRITE_ACCESS) // // IOCTL_OSRUSBFX2_READ_SWITCHES // // This IOCTL allows the user to get the state of the switches. // // Input: // None. // // Output: // SWITCH_STATE // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_READ_SWITCHES \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x802, METHOD_BUFFERED, FILE_READ_ACCESS) // // IOCTL_OSRUSBFX2_RESET_PIPE // // This IOCTL allows the user to reset a pipe. The pipe that // is reset is the pipe that corresponds to the open handle // to which this IOCTL is sent // // Input: // PUSBFX2_PIPE_ENUM indicating which pipe to reset // // Output: // None. // // Access Required: // Write. // #define IOCTL_OSRUSBFX2_RESET_PIPE \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x803, METHOD_BUFFERED, FILE_WRITE_ACCESS) // // IOCTL_OSRUSBFX2_GET_DEVICE_DESCRIPTOR // // This IOCTL allows the user to get the USB device descriptor // for the device // // Input: // None. // // Output: // USB_DEVICE_DESCRIPTOR. // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_GET_DEVICE_DESCRIPTOR \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x804, METHOD_BUFFERED, FILE_READ_ACCESS) // // IOCTL_OSRUSBFX2_GET_CONFIGURATION_DESCRIPTOR // // This IOCTL allows the user to get the USB configuration descriptor // for the device // // Input: // None. // // Output: // USB_CONFIGURATION_DESCRIPTOR. // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_GET_CONFIGURATION_DESCRIPTOR \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x805, METHOD_BUFFERED, FILE_READ_ACCESS) // // IOCTL_OSRUSBFX2_GET_PIPE_INFORMATION // // This IOCTL allows the user to get the USB pipe descriptor // for the open pipe // // Input: // PUSBFX2_PIPE_ENUM indicating which pipe // // Output: // USBD_PIPE_INFORMATION. // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_GET_PIPE_INFORMATION \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x806, METHOD_BUFFERED, FILE_READ_ACCESS) // // IOCTL_OSRUSBFX2_GET_7_SEGMENT_DISPLAY // // This IOCTL allows the user to get the state of the 7 Segment Display. // // Input: // None. // // Output: // 7 SEGMENT STATE // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_GET_7_SEGMENT_DISPLAY \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x808, METHOD_BUFFERED, FILE_READ_ACCESS) // // IOCTL_OSRUSBFX2_SET_7_SEGMENT_DISPLAY // // This IOCTL allows the user to set the state of the 7 Segment display. // // Input: // 7 SEGMENT STATE. // // Output: // None. // // Access Required: // Write. // #define IOCTL_OSRUSBFX2_SET_7_SEGMENT_DISPLAY \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x809, METHOD_BUFFERED, FILE_WRITE_ACCESS) // // IOCTL_OSRUSBFX2_GET_INTERFACE_INFORMATION // // This IOCTL allows the user to get the USB Interface Information // for the device // // Input: // None. // // Output: // USB_CONFIGURATION_DESCRIPTOR. // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_GET_INTERFACE_INFORMATION \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x810, METHOD_BUFFERED, FILE_READ_ACCESS) // // IOCTL_OSRUSBFX2_GET_INTERRUPT_MESSAGE // // This IOCTL allows the user to get a USB Interrupt Message // from the device // // Input: // None. // // Output: // Interrupt Message // // Access Required: // Read. // #define IOCTL_OSRUSBFX2_GET_INTERRUPT_MESSAGE \ CTL_CODE(FILE_DEVICE_OSRUSBFX2LK, 0x811, METHOD_BUFFERED, FILE_READ_ACCESS) #endif /* __USBFX2LK_IOCTL_H__ */