From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/ntos/inc/parallel.h | 117 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 private/ntos/inc/parallel.h (limited to 'private/ntos/inc/parallel.h') diff --git a/private/ntos/inc/parallel.h b/private/ntos/inc/parallel.h new file mode 100644 index 000000000..02f4329ae --- /dev/null +++ b/private/ntos/inc/parallel.h @@ -0,0 +1,117 @@ +/*++ + +Copyright (c) 1993 Microsoft Corporation + +Module Name: + + parallel.h + +Abstract: + + This file defines the services supplied by the parallel port driver. + +Author: + + norbertk + +Revision History: + +--*/ + +#ifndef _PARALLEL_ +#define _PARALLEL_ + +#include + +// +// Define the parallel port device name strings. +// + +#define DD_PARALLEL_PORT_BASE_NAME_U L"ParallelPort" + +// +// NtDeviceIoControlFile internal IoControlCode values for parallel device. +// + +#define IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_RELEASE_PARALLEL_PORT_INFO CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_GET_MORE_PARALLEL_PORT_INFO CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +typedef +BOOLEAN +(*PPARALLEL_TRY_ALLOCATE_ROUTINE) ( + IN PVOID TryAllocateContext + ); + +typedef +VOID +(*PPARALLEL_FREE_ROUTINE) ( + IN PVOID FreeContext + ); + +typedef +ULONG +(*PPARALLEL_QUERY_WAITERS_ROUTINE) ( + IN PVOID QueryAllocsContext + ); + +typedef struct _PARALLEL_PORT_INFORMATION { + PHYSICAL_ADDRESS OriginalController; + PUCHAR Controller; + ULONG SpanOfController; + PPARALLEL_TRY_ALLOCATE_ROUTINE TryAllocatePort; + PPARALLEL_FREE_ROUTINE FreePort; + PPARALLEL_QUERY_WAITERS_ROUTINE QueryNumWaiters; + PVOID Context; +} PARALLEL_PORT_INFORMATION, *PPARALLEL_PORT_INFORMATION; + +// +// The following structure is passed in on an +// IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT and on an +// IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT request. +// + +typedef +VOID +(*PPARALLEL_DEFERRED_ROUTINE) ( + IN PVOID DeferredContext + ); + +typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE { + PKSERVICE_ROUTINE InterruptServiceRoutine; + PVOID InterruptServiceContext; + PPARALLEL_DEFERRED_ROUTINE DeferredPortCheckRoutine; /* OPTIONAL */ + PVOID DeferredPortCheckContext; /* OPTIONAL */ +} PARALLEL_INTERRUPT_SERVICE_ROUTINE, *PPARALLEL_INTERRUPT_SERVICE_ROUTINE; + +// +// The following structure is returned on an +// IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT request; +// + +typedef struct _PARALLEL_INTERRUPT_INFORMATION { + PKINTERRUPT InterruptObject; + PPARALLEL_TRY_ALLOCATE_ROUTINE TryAllocatePortAtInterruptLevel; + PPARALLEL_FREE_ROUTINE FreePortFromInterruptLevel; + PVOID Context; +} PARALLEL_INTERRUPT_INFORMATION, *PPARALLEL_INTERRUPT_INFORMATION; + +// +// The following structure is returned on an +// IOCTL_INTERNAL_GET_MORE_PARALLEL_PORT_INFO. +// + +typedef struct _MORE_PARALLEL_PORT_INFORMATION { + INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + ULONG InterruptLevel; + ULONG InterruptVector; + KAFFINITY InterruptAffinity; + KINTERRUPT_MODE InterruptMode; +} MORE_PARALLEL_PORT_INFORMATION, *PMORE_PARALLEL_PORT_INFORMATION; + +#endif // _PARALLEL_ -- cgit v1.2.3