master
  1/*
  2 * ntddpar.h
  3 *
  4 * Parallel port driver interface
  5 *
  6 * This file is part of the w32api package.
  7 *
  8 * Contributors:
  9 *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
 10 *
 11 * THIS SOFTWARE IS NOT COPYRIGHTED
 12 *
 13 * This source code is offered for use in the public domain. You may
 14 * use, modify or distribute it freely.
 15 *
 16 * This code is distributed in the hope that it will be useful but
 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 18 * DISCLAIMED. This includes but is not limited to warranties of
 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 20 *
 21 */
 22
 23#ifndef _NTDDPAR_
 24#define _NTDDPAR_
 25
 26#ifdef __cplusplus
 27extern "C" {
 28#endif
 29
 30/* Parallel port device GUIDs */
 31
 32DEFINE_GUID (GUID_DEVINTERFACE_PARALLEL,
 33  0x97F76EF0, 0xF883, 0x11D0, 0xAF, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x84, 0x5C);
 34DEFINE_GUID (GUID_DEVINTERFACE_PARCLASS,
 35  0x811FC6A5, 0xF728, 0x11D0, 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1);
 36
 37#define GUID_PARALLEL_DEVICE GUID_DEVINTERFACE_PARALLEL
 38#define GUID_PARCLASS_DEVICE GUID_DEVINTERFACE_PARCLASS
 39
 40
 41#define IOCTL_IEEE1284_GET_MODE \
 42  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
 43#define IOCTL_IEEE1284_NEGOTIATE \
 44  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
 45#define IOCTL_PAR_GET_DEFAULT_MODES \
 46  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
 47#define IOCTL_PAR_GET_DEVICE_CAPS \
 48  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
 49#define IOCTL_PAR_IS_PORT_FREE \
 50  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
 51#define IOCTL_PAR_QUERY_DEVICE_ID \
 52  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
 53#define IOCTL_PAR_QUERY_DEVICE_ID_SIZE \
 54  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
 55#define IOCTL_PAR_QUERY_INFORMATION \
 56  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
 57#define IOCTL_PAR_QUERY_LOCATION \
 58  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
 59#define IOCTL_PAR_QUERY_RAW_DEVICE_ID \
 60  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
 61#define IOCTL_PAR_SET_INFORMATION \
 62  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
 63#define IOCTL_PAR_SET_READ_ADDRESS \
 64  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
 65#define IOCTL_PAR_SET_WRITE_ADDRESS \
 66  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
 67
 68typedef struct _PAR_DEVICE_ID_SIZE_INFORMATION {
 69  ULONG  DeviceIdSize;
 70} PAR_DEVICE_ID_SIZE_INFORMATION, *PPAR_DEVICE_ID_SIZE_INFORMATION;
 71
 72#define PARALLEL_INIT                     0x01
 73#define PARALLEL_AUTOFEED                 0x02
 74#define PARALLEL_PAPER_EMPTY              0x04
 75#define PARALLEL_OFF_LINE                 0x08
 76#define PARALLEL_POWER_OFF                0x10
 77#define PARALLEL_NOT_CONNECTED            0x20
 78#define PARALLEL_BUSY                     0x40
 79#define PARALLEL_SELECTED                 0x80
 80
 81typedef struct _PAR_QUERY_INFORMATION {
 82  UCHAR  Status;
 83} PAR_QUERY_INFORMATION, *PPAR_QUERY_INFORMATION;
 84
 85typedef struct _PAR_SET_INFORMATION {
 86  UCHAR  Init;
 87} PAR_SET_INFORMATION, *PPAR_SET_INFORMATION;
 88
 89typedef struct _PARCLASS_NEGOTIATION_MASK {
 90  USHORT  usReadMask;
 91  USHORT  usWriteMask;
 92} PARCLASS_NEGOTIATION_MASK, *PPARCLASS_NEGOTIATION_MASK;
 93
 94#define NONE                              0x0000
 95#define CENTRONICS                        0x0001
 96#define IEEE_COMPATIBILITY                0x0002
 97#define NIBBLE                            0x0004
 98#define CHANNEL_NIBBLE                    0x0008
 99#define BYTE_BIDIR                        0x0010
100#define EPP_HW                            0x0020
101#define EPP_SW                            0x0040
102#define EPP_ANY                           0x0060
103#define BOUNDED_ECP                       0x0080
104#define ECP_HW_NOIRQ                      0x0100
105#define ECP_HW_IRQ                        0x0200
106#define ECP_SW                            0x0400
107#define ECP_ANY                           0x0780
108
109#ifdef __cplusplus
110}
111#endif
112
113#endif /* _NTDDPAR_ */