| 1 | 
 /* | 
 
 
 
 
 
 | 2 | 
  * parallel.h | 
 
 
 
 
 
 | 3 | 
  * | 
 
 
 
 
 
 | 4 | 
  * ParPort 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 __PARALLEL_H | 
 
 
 
 
 
 | 24 | 
 #define __PARALLEL_H | 
 
 
 
 
 
 | 25 | 
  | 
 
 
 
 
 
 | 26 | 
 #include "ntddpar.h" | 
 
 
 
 
 
 | 27 | 
  | 
 
 
 
 
 
 | 28 | 
 #ifdef __cplusplus | 
 
 
 
 
 
 | 29 | 
 extern "C" { | 
 
 
 
 
 
 | 30 | 
 #endif | 
 
 
 
 
 
 | 31 | 
  | 
 
 
 
 
 
 | 32 | 
 #define DD_PARALLEL_PORT_BASE_NAME        "ParallelPort" | 
 
 
 
 
 
 | 33 | 
 #define DD_PARALLEL_PORT_BASE_NAME_U      L"ParallelPort" | 
 
 
 
 
 
 | 34 | 
  | 
 
 
 
 
 
 | 35 | 
 #define IOCTL_INTERNAL_DESELECT_DEVICE \ | 
 
 
 
 
 
 | 36 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 37 | 
 #define IOCTL_INTERNAL_GET_MORE_PARALLEL_PORT_INFO \ | 
 
 
 
 
 
 | 38 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 39 | 
 #define IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO \ | 
 
 
 
 
 
 | 40 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 41 | 
 #define IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO \ | 
 
 
 
 
 
 | 42 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 43 | 
 #define IOCTL_INTERNAL_INIT_1284_3_BUS \ | 
 
 
 
 
 
 | 44 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 45 | 
 #define IOCTL_INTERNAL_PARALLEL_CLEAR_CHIP_MODE \ | 
 
 
 
 
 
 | 46 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 47 | 
 #define IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT \ | 
 
 
 
 
 
 | 48 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 49 | 
 #define IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT \ | 
 
 
 
 
 
 | 50 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 51 | 
 #define IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE \ | 
 
 
 
 
 
 | 52 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 53 | 
 #define IOCTL_INTERNAL_PARALLEL_PORT_FREE \ | 
 
 
 
 
 
 | 54 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 40, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 55 | 
 #define IOCTL_INTERNAL_PARALLEL_SET_CHIP_MODE \ | 
 
 
 
 
 
 | 56 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 57 | 
 #define IOCTL_INTERNAL_RELEASE_PARALLEL_PORT_INFO \ | 
 
 
 
 
 
 | 58 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 59 | 
 #define IOCTL_INTERNAL_SELECT_DEVICE \ | 
 
 
 
 
 
 | 60 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 61 | 
  | 
 
 
 
 
 
 | 62 | 
  | 
 
 
 
 
 
 | 63 | 
 typedef struct _PARALLEL_1284_COMMAND { | 
 
 
 
 
 
 | 64 | 
   UCHAR  ID; | 
 
 
 
 
 
 | 65 | 
   UCHAR  Port; | 
 
 
 
 
 
 | 66 | 
   ULONG  CommandFlags; | 
 
 
 
 
 
 | 67 | 
 } PARALLEL_1284_COMMAND, *PPARALLEL_1284_COMMAND; | 
 
 
 
 
 
 | 68 | 
  | 
 
 
 
 
 
 | 69 | 
 /* PARALLEL_1284_COMMAND.CommandFlags */ | 
 
 
 
 
 
 | 70 | 
 #define PAR_END_OF_CHAIN_DEVICE           0x00000001 | 
 
 
 
 
 
 | 71 | 
 #define PAR_HAVE_PORT_KEEP_PORT           0x00000002 | 
 
 
 
 
 
 | 72 | 
  | 
 
 
 
 
 
 | 73 | 
 typedef struct _MORE_PARALLEL_PORT_INFORMATION { | 
 
 
 
 
 
 | 74 | 
         INTERFACE_TYPE  InterfaceType; | 
 
 
 
 
 
 | 75 | 
         ULONG  BusNumber; | 
 
 
 
 
 
 | 76 | 
         ULONG  InterruptLevel; | 
 
 
 
 
 
 | 77 | 
         ULONG  InterruptVector; | 
 
 
 
 
 
 | 78 | 
         KAFFINITY  InterruptAffinity; | 
 
 
 
 
 
 | 79 | 
         KINTERRUPT_MODE  InterruptMode; | 
 
 
 
 
 
 | 80 | 
 } MORE_PARALLEL_PORT_INFORMATION, *PMORE_PARALLEL_PORT_INFORMATION; | 
 
 
 
 
 
 | 81 | 
  | 
 
 
 
 
 
 | 82 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 83 | 
 (NTAPI *PPARALLEL_SET_CHIP_MODE)( | 
 
 
 
 
 
 | 84 | 
         IN  PVOID  SetChipContext, | 
 
 
 
 
 
 | 85 | 
         IN  UCHAR  ChipMode); | 
 
 
 
 
 
 | 86 | 
  | 
 
 
 
 
 
 | 87 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 88 | 
 (NTAPI *PPARALLEL_CLEAR_CHIP_MODE)( | 
 
 
 
 
 
 | 89 | 
         IN  PVOID  ClearChipContext, | 
 
 
 
 
 
 | 90 | 
         IN  UCHAR  ChipMode); | 
 
 
 
 
 
 | 91 | 
  | 
 
 
 
 
 
 | 92 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 93 | 
 (NTAPI *PPARCHIP_CLEAR_CHIP_MODE)( | 
 
 
 
 
 
 | 94 | 
         IN  PVOID  ClearChipContext, | 
 
 
 
 
 
 | 95 | 
         IN  UCHAR  ChipMode); | 
 
 
 
 
 
 | 96 | 
  | 
 
 
 
 
 
 | 97 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 98 | 
 (NTAPI *PPARALLEL_TRY_SELECT_ROUTINE)( | 
 
 
 
 
 
 | 99 | 
         IN  PVOID  TrySelectContext, | 
 
 
 
 
 
 | 100 | 
         IN  PVOID  TrySelectCommand); | 
 
 
 
 
 
 | 101 | 
  | 
 
 
 
 
 
 | 102 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 103 | 
 (NTAPI *PPARALLEL_DESELECT_ROUTINE)( | 
 
 
 
 
 
 | 104 | 
         IN PVOID  DeselectContext, | 
 
 
 
 
 
 | 105 | 
         IN PVOID  DeselectCommand); | 
 
 
 
 
 
 | 106 | 
  | 
 
 
 
 
 
 | 107 | 
 /* PARALLEL_PNP_INFORMATION.HardwareCapabilities */ | 
 
 
 
 
 
 | 108 | 
 #define PPT_NO_HARDWARE_PRESENT           0x00000000 | 
 
 
 
 
 
 | 109 | 
 #define PPT_ECP_PRESENT                   0x00000001 | 
 
 
 
 
 
 | 110 | 
 #define PPT_EPP_PRESENT                   0x00000002 | 
 
 
 
 
 
 | 111 | 
 #define PPT_EPP_32_PRESENT                0x00000004 | 
 
 
 
 
 
 | 112 | 
 #define PPT_BYTE_PRESENT                  0x00000008 | 
 
 
 
 
 
 | 113 | 
 #define PPT_BIDI_PRESENT                  0x00000008 | 
 
 
 
 
 
 | 114 | 
 #define PPT_1284_3_PRESENT                0x00000010 | 
 
 
 
 
 
 | 115 | 
  | 
 
 
 
 
 
 | 116 | 
 typedef struct _PARALLEL_PNP_INFORMATION { | 
 
 
 
 
 
 | 117 | 
   PHYSICAL_ADDRESS  OriginalEcpController; | 
 
 
 
 
 
 | 118 | 
   PUCHAR  EcpController; | 
 
 
 
 
 
 | 119 | 
   ULONG  SpanOfEcpController; | 
 
 
 
 
 
 | 120 | 
   ULONG  PortNumber; | 
 
 
 
 
 
 | 121 | 
   ULONG  HardwareCapabilities; | 
 
 
 
 
 
 | 122 | 
   PPARALLEL_SET_CHIP_MODE  TrySetChipMode; | 
 
 
 
 
 
 | 123 | 
   PPARALLEL_CLEAR_CHIP_MODE  ClearChipMode; | 
 
 
 
 
 
 | 124 | 
   ULONG  FifoDepth; | 
 
 
 
 
 
 | 125 | 
   ULONG  FifoWidth; | 
 
 
 
 
 
 | 126 | 
   PHYSICAL_ADDRESS  EppControllerPhysicalAddress; | 
 
 
 
 
 
 | 127 | 
   ULONG  SpanOfEppController; | 
 
 
 
 
 
 | 128 | 
   ULONG  Ieee1284_3DeviceCount; | 
 
 
 
 
 
 | 129 | 
   PPARALLEL_TRY_SELECT_ROUTINE  TrySelectDevice; | 
 
 
 
 
 
 | 130 | 
   PPARALLEL_DESELECT_ROUTINE  DeselectDevice; | 
 
 
 
 
 
 | 131 | 
   PVOID  Context; | 
 
 
 
 
 
 | 132 | 
   ULONG  CurrentMode; | 
 
 
 
 
 
 | 133 | 
   PWSTR  PortName; | 
 
 
 
 
 
 | 134 | 
 } PARALLEL_PNP_INFORMATION, *PPARALLEL_PNP_INFORMATION; | 
 
 
 
 
 
 | 135 | 
  | 
 
 
 
 
 
 | 136 | 
 typedef BOOLEAN | 
 
 
 
 
 
 | 137 | 
 (NTAPI *PPARALLEL_TRY_ALLOCATE_ROUTINE)( | 
 
 
 
 
 
 | 138 | 
   IN  PVOID  TryAllocateContext); | 
 
 
 
 
 
 | 139 | 
  | 
 
 
 
 
 
 | 140 | 
 typedef VOID | 
 
 
 
 
 
 | 141 | 
 (NTAPI *PPARALLEL_FREE_ROUTINE)( | 
 
 
 
 
 
 | 142 | 
   IN  PVOID  FreeContext); | 
 
 
 
 
 
 | 143 | 
  | 
 
 
 
 
 
 | 144 | 
 typedef ULONG | 
 
 
 
 
 
 | 145 | 
 (NTAPI *PPARALLEL_QUERY_WAITERS_ROUTINE)( | 
 
 
 
 
 
 | 146 | 
         IN  PVOID  QueryAllocsContext); | 
 
 
 
 
 
 | 147 | 
  | 
 
 
 
 
 
 | 148 | 
 typedef struct _PARALLEL_PORT_INFORMATION { | 
 
 
 
 
 
 | 149 | 
   PHYSICAL_ADDRESS  OriginalController; | 
 
 
 
 
 
 | 150 | 
   PUCHAR  Controller; | 
 
 
 
 
 
 | 151 | 
   ULONG  SpanOfController; | 
 
 
 
 
 
 | 152 | 
   PPARALLEL_TRY_ALLOCATE_ROUTINE  TryAllocatePort; | 
 
 
 
 
 
 | 153 | 
   PPARALLEL_FREE_ROUTINE  FreePort; | 
 
 
 
 
 
 | 154 | 
   PPARALLEL_QUERY_WAITERS_ROUTINE  QueryNumWaiters; | 
 
 
 
 
 
 | 155 | 
   PVOID  Context; | 
 
 
 
 
 
 | 156 | 
 } PARALLEL_PORT_INFORMATION, *PPARALLEL_PORT_INFORMATION; | 
 
 
 
 
 
 | 157 | 
  | 
 
 
 
 
 
 | 158 | 
 /* PARALLEL_CHIP_MODE.ModeFlags */ | 
 
 
 
 
 
 | 159 | 
 #define INITIAL_MODE                      0x00 | 
 
 
 
 
 
 | 160 | 
 #define PARCHIP_ECR_ARBITRATOR            0x01 | 
 
 
 
 
 
 | 161 | 
  | 
 
 
 
 
 
 | 162 | 
 typedef struct _PARALLEL_CHIP_MODE { | 
 
 
 
 
 
 | 163 | 
   UCHAR  ModeFlags; | 
 
 
 
 
 
 | 164 | 
   BOOLEAN  success; | 
 
 
 
 
 
 | 165 | 
 } PARALLEL_CHIP_MODE, *PPARALLEL_CHIP_MODE; | 
 
 
 
 
 
 | 166 | 
  | 
 
 
 
 
 
 | 167 | 
 typedef VOID | 
 
 
 
 
 
 | 168 | 
 (NTAPI *PPARALLEL_DEFERRED_ROUTINE)( | 
 
 
 
 
 
 | 169 | 
         IN  PVOID  DeferredContext); | 
 
 
 
 
 
 | 170 | 
  | 
 
 
 
 
 
 | 171 | 
 typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE { | 
 
 
 
 
 
 | 172 | 
   PKSERVICE_ROUTINE  InterruptServiceRoutine; | 
 
 
 
 
 
 | 173 | 
   PVOID  InterruptServiceContext; | 
 
 
 
 
 
 | 174 | 
   PPARALLEL_DEFERRED_ROUTINE  DeferredPortCheckRoutine; | 
 
 
 
 
 
 | 175 | 
   PVOID  DeferredPortCheckContext; | 
 
 
 
 
 
 | 176 | 
 } PARALLEL_INTERRUPT_SERVICE_ROUTINE, *PPARALLEL_INTERRUPT_SERVICE_ROUTINE; | 
 
 
 
 
 
 | 177 | 
  | 
 
 
 
 
 
 | 178 | 
  | 
 
 
 
 
 
 | 179 | 
 #define IOCTL_INTERNAL_DISCONNECT_IDLE \ | 
 
 
 
 
 
 | 180 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 181 | 
 #define IOCTL_INTERNAL_LOCK_PORT \ | 
 
 
 
 
 
 | 182 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 183 | 
 #define IOCTL_INTERNAL_LOCK_PORT_NO_SELECT \ | 
 
 
 
 
 
 | 184 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 52, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 185 | 
 #define IOCTL_INTERNAL_PARCLASS_CONNECT \ | 
 
 
 
 
 
 | 186 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 187 | 
 #define IOCTL_INTERNAL_PARCLASS_DISCONNECT \ | 
 
 
 
 
 
 | 188 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 189 | 
 #define IOCTL_INTERNAL_UNLOCK_PORT \ | 
 
 
 
 
 
 | 190 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 191 | 
 #define IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT \ | 
 
 
 
 
 
 | 192 | 
   CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) | 
 
 
 
 
 
 | 193 | 
  | 
 
 
 
 
 
 | 194 | 
 typedef USHORT | 
 
 
 
 
 
 | 195 | 
 (NTAPI *PDETERMINE_IEEE_MODES)( | 
 
 
 
 
 
 | 196 | 
   IN PVOID  Context); | 
 
 
 
 
 
 | 197 | 
  | 
 
 
 
 
 
 | 198 | 
 typedef enum _PARALLEL_SAFETY { | 
 
 
 
 
 
 | 199 | 
         SAFE_MODE, | 
 
 
 
 
 
 | 200 | 
         UNSAFE_MODE | 
 
 
 
 
 
 | 201 | 
 } PARALLEL_SAFETY; | 
 
 
 
 
 
 | 202 | 
  | 
 
 
 
 
 
 | 203 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 204 | 
 (NTAPI *PNEGOTIATE_IEEE_MODE)( | 
 
 
 
 
 
 | 205 | 
   IN PVOID  Context, | 
 
 
 
 
 
 | 206 | 
   IN USHORT  ModeMaskFwd, | 
 
 
 
 
 
 | 207 | 
   IN USHORT  ModeMaskRev, | 
 
 
 
 
 
 | 208 | 
   IN PARALLEL_SAFETY  ModeSafety, | 
 
 
 
 
 
 | 209 | 
   IN BOOLEAN  IsForward); | 
 
 
 
 
 
 | 210 | 
  | 
 
 
 
 
 
 | 211 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 212 | 
 (NTAPI *PTERMINATE_IEEE_MODE)( | 
 
 
 
 
 
 | 213 | 
         IN  PVOID  Context); | 
 
 
 
 
 
 | 214 | 
  | 
 
 
 
 
 
 | 215 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 216 | 
 (NTAPI *PPARALLEL_IEEE_FWD_TO_REV)( | 
 
 
 
 
 
 | 217 | 
   IN  PVOID  Context); | 
 
 
 
 
 
 | 218 | 
  | 
 
 
 
 
 
 | 219 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 220 | 
 (NTAPI *PPARALLEL_IEEE_REV_TO_FWD)( | 
 
 
 
 
 
 | 221 | 
   IN  PVOID  Context); | 
 
 
 
 
 
 | 222 | 
  | 
 
 
 
 
 
 | 223 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 224 | 
 (NTAPI *PPARALLEL_READ)( | 
 
 
 
 
 
 | 225 | 
         IN  PVOID  Context, | 
 
 
 
 
 
 | 226 | 
         OUT PVOID  Buffer, | 
 
 
 
 
 
 | 227 | 
         IN  ULONG  NumBytesToRead, | 
 
 
 
 
 
 | 228 | 
         OUT PULONG  NumBytesRead, | 
 
 
 
 
 
 | 229 | 
         IN  UCHAR  Channel); | 
 
 
 
 
 
 | 230 | 
  | 
 
 
 
 
 
 | 231 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 232 | 
 (NTAPI *PPARALLEL_WRITE)( | 
 
 
 
 
 
 | 233 | 
         IN  PVOID  Context, | 
 
 
 
 
 
 | 234 | 
         OUT PVOID  Buffer, | 
 
 
 
 
 
 | 235 | 
         IN  ULONG  NumBytesToWrite, | 
 
 
 
 
 
 | 236 | 
         OUT PULONG  NumBytesWritten, | 
 
 
 
 
 
 | 237 | 
         IN  UCHAR   Channel); | 
 
 
 
 
 
 | 238 | 
  | 
 
 
 
 
 
 | 239 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 240 | 
 (NTAPI *PPARALLEL_TRYSELECT_DEVICE)( | 
 
 
 
 
 
 | 241 | 
   IN  PVOID  Context, | 
 
 
 
 
 
 | 242 | 
   IN  PARALLEL_1284_COMMAND  Command); | 
 
 
 
 
 
 | 243 | 
  | 
 
 
 
 
 
 | 244 | 
 typedef NTSTATUS | 
 
 
 
 
 
 | 245 | 
 (NTAPI *PPARALLEL_DESELECT_DEVICE)( | 
 
 
 
 
 
 | 246 | 
   IN  PVOID  Context, | 
 
 
 
 
 
 | 247 | 
   IN  PARALLEL_1284_COMMAND  Command); | 
 
 
 
 
 
 | 248 | 
  | 
 
 
 
 
 
 | 249 | 
 typedef struct _PARCLASS_INFORMATION { | 
 
 
 
 
 
 | 250 | 
   PUCHAR  Controller; | 
 
 
 
 
 
 | 251 | 
   PUCHAR  EcrController; | 
 
 
 
 
 
 | 252 | 
   ULONG  SpanOfController; | 
 
 
 
 
 
 | 253 | 
   PDETERMINE_IEEE_MODES  DetermineIeeeModes; | 
 
 
 
 
 
 | 254 | 
   PNEGOTIATE_IEEE_MODE  NegotiateIeeeMode; | 
 
 
 
 
 
 | 255 | 
   PTERMINATE_IEEE_MODE  TerminateIeeeMode; | 
 
 
 
 
 
 | 256 | 
   PPARALLEL_IEEE_FWD_TO_REV  IeeeFwdToRevMode; | 
 
 
 
 
 
 | 257 | 
   PPARALLEL_IEEE_REV_TO_FWD  IeeeRevToFwdMode; | 
 
 
 
 
 
 | 258 | 
   PPARALLEL_READ  ParallelRead; | 
 
 
 
 
 
 | 259 | 
   PPARALLEL_WRITE  ParallelWrite; | 
 
 
 
 
 
 | 260 | 
   PVOID  ParclassContext; | 
 
 
 
 
 
 | 261 | 
   ULONG  HardwareCapabilities; | 
 
 
 
 
 
 | 262 | 
   ULONG  FifoDepth; | 
 
 
 
 
 
 | 263 | 
   ULONG  FifoWidth; | 
 
 
 
 
 
 | 264 | 
   PPARALLEL_TRYSELECT_DEVICE  ParallelTryselect; | 
 
 
 
 
 
 | 265 | 
   PPARALLEL_DESELECT_DEVICE  ParallelDeSelect; | 
 
 
 
 
 
 | 266 | 
 } PARCLASS_INFORMATION, *PPARCLASS_INFORMATION; | 
 
 
 
 
 
 | 267 | 
  | 
 
 
 
 
 
 | 268 | 
 #ifdef __cplusplus | 
 
 
 
 
 
 | 269 | 
 } | 
 
 
 
 
 
 | 270 | 
 #endif | 
 
 
 
 
 
 | 271 | 
  | 
 
 
 
 
 
 | 272 | 
 #endif /* __PARALLEL_H */ |