Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
parallel.h
00001 /* 00002 * parallel.h 00003 * 00004 * ParPort driver interface 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __PARALLEL_H 00024 #define __PARALLEL_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 #include "ntddpar.h" 00036 00037 #define DD_PARALLEL_PORT_BASE_NAME "ParallelPort" 00038 #define DD_PARALLEL_PORT_BASE_NAME_U L"ParallelPort" 00039 00040 #define IOCTL_INTERNAL_DESELECT_DEVICE \ 00041 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) 00042 #define IOCTL_INTERNAL_GET_MORE_PARALLEL_PORT_INFO \ 00043 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS) 00044 #define IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO \ 00045 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) 00046 #define IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO \ 00047 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) 00048 #define IOCTL_INTERNAL_INIT_1284_3_BUS \ 00049 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) 00050 #define IOCTL_INTERNAL_PARALLEL_CLEAR_CHIP_MODE \ 00051 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) 00052 #define IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT \ 00053 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) 00054 #define IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT \ 00055 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) 00056 #define IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE \ 00057 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) 00058 #define IOCTL_INTERNAL_PARALLEL_PORT_FREE \ 00059 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 40, METHOD_BUFFERED, FILE_ANY_ACCESS) 00060 #define IOCTL_INTERNAL_PARALLEL_SET_CHIP_MODE \ 00061 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS) 00062 #define IOCTL_INTERNAL_RELEASE_PARALLEL_PORT_INFO \ 00063 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) 00064 #define IOCTL_INTERNAL_SELECT_DEVICE \ 00065 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) 00066 00067 00068 typedef struct _PARALLEL_1284_COMMAND { 00069 UCHAR ID; 00070 UCHAR Port; 00071 ULONG CommandFlags; 00072 } PARALLEL_1284_COMMAND, *PPARALLEL_1284_COMMAND; 00073 00074 /* PARALLEL_1284_COMMAND.CommandFlags */ 00075 #define PAR_END_OF_CHAIN_DEVICE 0x00000001 00076 #define PAR_HAVE_PORT_KEEP_PORT 0x00000002 00077 00078 typedef struct _MORE_PARALLEL_PORT_INFORMATION { 00079 INTERFACE_TYPE InterfaceType; 00080 ULONG BusNumber; 00081 ULONG InterruptLevel; 00082 ULONG InterruptVector; 00083 KAFFINITY InterruptAffinity; 00084 KINTERRUPT_MODE InterruptMode; 00085 } MORE_PARALLEL_PORT_INFORMATION, *PMORE_PARALLEL_PORT_INFORMATION; 00086 00087 typedef NTSTATUS DDKAPI 00088 (*PPARALLEL_SET_CHIP_MODE)( 00089 /*IN*/ PVOID SetChipContext, 00090 /*IN*/ UCHAR ChipMode); 00091 00092 typedef NTSTATUS DDKAPI 00093 (*PPARALLEL_CLEAR_CHIP_MODE)( 00094 /*IN*/ PVOID ClearChipContext, 00095 /*IN*/ UCHAR ChipMode); 00096 00097 typedef NTSTATUS DDKAPI 00098 (*PPARCHIP_CLEAR_CHIP_MODE)( 00099 /*IN*/ PVOID ClearChipContext, 00100 /*IN*/ UCHAR ChipMode); 00101 00102 typedef NTSTATUS DDKAPI 00103 (*PPARALLEL_TRY_SELECT_ROUTINE)( 00104 /*IN*/ PVOID TrySelectContext, 00105 /*IN*/ PVOID TrySelectCommand); 00106 00107 typedef NTSTATUS DDKAPI 00108 (*PPARALLEL_DESELECT_ROUTINE)( 00109 /*IN*/ PVOID DeselectContext, 00110 /*IN*/ PVOID DeselectCommand); 00111 00112 /* PARALLEL_PNP_INFORMATION.HardwareCapabilities */ 00113 #define PPT_NO_HARDWARE_PRESENT 0x00000000 00114 #define PPT_ECP_PRESENT 0x00000001 00115 #define PPT_EPP_PRESENT 0x00000002 00116 #define PPT_EPP_32_PRESENT 0x00000004 00117 #define PPT_BYTE_PRESENT 0x00000008 00118 #define PPT_BIDI_PRESENT 0x00000008 00119 #define PPT_1284_3_PRESENT 0x00000010 00120 00121 typedef struct _PARALLEL_PNP_INFORMATION { 00122 PHYSICAL_ADDRESS OriginalEcpController; 00123 PUCHAR EcpController; 00124 ULONG SpanOfEcpController; 00125 ULONG PortNumber; 00126 ULONG HardwareCapabilities; 00127 PPARALLEL_SET_CHIP_MODE TrySetChipMode; 00128 PPARALLEL_CLEAR_CHIP_MODE ClearChipMode; 00129 ULONG FifoDepth; 00130 ULONG FifoWidth; 00131 PHYSICAL_ADDRESS EppControllerPhysicalAddress; 00132 ULONG SpanOfEppController; 00133 ULONG Ieee1284_3DeviceCount; 00134 PPARALLEL_TRY_SELECT_ROUTINE TrySelectDevice; 00135 PPARALLEL_DESELECT_ROUTINE DeselectDevice; 00136 PVOID Context; 00137 ULONG CurrentMode; 00138 PWSTR PortName; 00139 } PARALLEL_PNP_INFORMATION, *PPARALLEL_PNP_INFORMATION; 00140 00141 typedef BOOLEAN DDKAPI 00142 (*PPARALLEL_TRY_ALLOCATE_ROUTINE)( 00143 /*IN*/ PVOID TryAllocateContext); 00144 00145 typedef VOID DDKAPI 00146 (*PPARALLEL_FREE_ROUTINE)( 00147 /*IN*/ PVOID FreeContext); 00148 00149 typedef ULONG DDKAPI 00150 (*PPARALLEL_QUERY_WAITERS_ROUTINE)( 00151 /*IN*/ PVOID QueryAllocsContext); 00152 00153 typedef struct _PARALLEL_PORT_INFORMATION { 00154 PHYSICAL_ADDRESS OriginalController; 00155 PUCHAR Controller; 00156 ULONG SpanOfController; 00157 PPARALLEL_TRY_ALLOCATE_ROUTINE TryAllocatePort; 00158 PPARALLEL_FREE_ROUTINE FreePort; 00159 PPARALLEL_QUERY_WAITERS_ROUTINE QueryNumWaiters; 00160 PVOID Context; 00161 } PARALLEL_PORT_INFORMATION, *PPARALLEL_PORT_INFORMATION; 00162 00163 /* PARALLEL_CHIP_MODE.ModeFlags */ 00164 #define INITIAL_MODE 0x00 00165 #define PARCHIP_ECR_ARBITRATOR 0x01 00166 00167 typedef struct _PARALLEL_CHIP_MODE { 00168 UCHAR ModeFlags; 00169 BOOLEAN success; 00170 } PARALLEL_CHIP_MODE, *PPARALLEL_CHIP_MODE; 00171 00172 typedef VOID DDKAPI 00173 (*PPARALLEL_DEFERRED_ROUTINE)( 00174 /*IN*/ PVOID DeferredContext); 00175 00176 typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE { 00177 PKSERVICE_ROUTINE InterruptServiceRoutine; 00178 PVOID InterruptServiceContext; 00179 PPARALLEL_DEFERRED_ROUTINE DeferredPortCheckRoutine; 00180 PVOID DeferredPortCheckContext; 00181 } PARALLEL_INTERRUPT_SERVICE_ROUTINE, *PPARALLEL_INTERRUPT_SERVICE_ROUTINE; 00182 00183 00184 #define IOCTL_INTERNAL_DISCONNECT_IDLE \ 00185 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS) 00186 #define IOCTL_INTERNAL_LOCK_PORT \ 00187 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS) 00188 #define IOCTL_INTERNAL_LOCK_PORT_NO_SELECT \ 00189 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 52, METHOD_BUFFERED, FILE_ANY_ACCESS) 00190 #define IOCTL_INTERNAL_PARCLASS_CONNECT \ 00191 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) 00192 #define IOCTL_INTERNAL_PARCLASS_DISCONNECT \ 00193 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) 00194 #define IOCTL_INTERNAL_UNLOCK_PORT \ 00195 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS) 00196 #define IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT \ 00197 CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) 00198 00199 typedef USHORT DDKAPI 00200 (*PDETERMINE_IEEE_MODES)( 00201 /*IN*/ PVOID Context); 00202 00203 typedef enum _PARALLEL_SAFETY { 00204 SAFE_MODE, 00205 UNSAFE_MODE 00206 } PARALLEL_SAFETY; 00207 00208 typedef NTSTATUS DDKAPI 00209 (*PNEGOTIATE_IEEE_MODE)( 00210 /*IN*/ PVOID Context, 00211 /*IN*/ USHORT ModeMaskFwd, 00212 /*IN*/ USHORT ModeMaskRev, 00213 /*IN*/ PARALLEL_SAFETY ModeSafety, 00214 /*IN*/ BOOLEAN IsForward); 00215 00216 typedef NTSTATUS DDKAPI 00217 (*PTERMINATE_IEEE_MODE)( 00218 /*IN*/ PVOID Context); 00219 00220 typedef NTSTATUS DDKAPI 00221 (*PPARALLEL_IEEE_FWD_TO_REV)( 00222 /*IN*/ PVOID Context); 00223 00224 typedef NTSTATUS DDKAPI 00225 (*PPARALLEL_IEEE_REV_TO_FWD)( 00226 /*IN*/ PVOID Context); 00227 00228 typedef NTSTATUS DDKAPI 00229 (*PPARALLEL_READ)( 00230 /*IN*/ PVOID Context, 00231 /*OUT*/ PVOID Buffer, 00232 /*IN*/ ULONG NumBytesToRead, 00233 /*OUT*/ PULONG NumBytesRead, 00234 /*IN*/ UCHAR Channel); 00235 00236 typedef NTSTATUS DDKAPI 00237 (*PPARALLEL_WRITE)( 00238 /*IN*/ PVOID Context, 00239 /*OUT*/ PVOID Buffer, 00240 /*IN*/ ULONG NumBytesToWrite, 00241 /*OUT*/ PULONG NumBytesWritten, 00242 /*IN*/ UCHAR Channel); 00243 00244 typedef NTSTATUS DDKAPI 00245 (*PPARALLEL_TRYSELECT_DEVICE)( 00246 /*IN*/ PVOID Context, 00247 /*IN*/ PARALLEL_1284_COMMAND Command); 00248 00249 typedef NTSTATUS DDKAPI 00250 (*PPARALLEL_DESELECT_DEVICE)( 00251 /*IN*/ PVOID Context, 00252 /*IN*/ PARALLEL_1284_COMMAND Command); 00253 00254 typedef struct _PARCLASS_INFORMATION { 00255 PUCHAR Controller; 00256 PUCHAR EcrController; 00257 ULONG SpanOfController; 00258 PDETERMINE_IEEE_MODES DetermineIeeeModes; 00259 PNEGOTIATE_IEEE_MODE NegotiateIeeeMode; 00260 PTERMINATE_IEEE_MODE TerminateIeeeMode; 00261 PPARALLEL_IEEE_FWD_TO_REV IeeeFwdToRevMode; 00262 PPARALLEL_IEEE_REV_TO_FWD IeeeRevToFwdMode; 00263 PPARALLEL_READ ParallelRead; 00264 PPARALLEL_WRITE ParallelWrite; 00265 PVOID ParclassContext; 00266 ULONG HardwareCapabilities; 00267 ULONG FifoDepth; 00268 ULONG FifoWidth; 00269 PPARALLEL_TRYSELECT_DEVICE ParallelTryselect; 00270 PPARALLEL_DESELECT_DEVICE ParallelDeSelect; 00271 } PARCLASS_INFORMATION, *PPARCLASS_INFORMATION; 00272 00273 #ifdef __cplusplus 00274 } 00275 #endif 00276 00277 #endif /* __PARALLEL_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2