2059 lines
38 KiB
C
2059 lines
38 KiB
C
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1998 - 1999
|
|
|
|
Module Name:
|
|
|
|
parport.sys
|
|
|
|
File Name:
|
|
|
|
funcdecl.h
|
|
|
|
Abstract:
|
|
|
|
This file contains the parport function declarations for functions
|
|
that are called from a translation unit other than the one in
|
|
which the function is defined.
|
|
|
|
--*/
|
|
|
|
NTSTATUS
|
|
P5FdoCreateThread(
|
|
PFDO_EXTENSION Fdx
|
|
);
|
|
|
|
NTSTATUS
|
|
PptAcquirePortViaIoctl(
|
|
IN PDEVICE_OBJECT PortDeviceObject,
|
|
IN PLARGE_INTEGER Timeout OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
P5SetPhase( PPDO_EXTENSION Pdx, P1284_PHASE Phase );
|
|
|
|
VOID
|
|
P5BSetPhase( PIEEE_STATE IeeeState, P1284_PHASE Phase );
|
|
|
|
VOID
|
|
P5TraceIrpArrival( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
VOID
|
|
P5TraceIrpCompletion( PIRP Irp );
|
|
|
|
// irpQueue.c
|
|
VOID
|
|
P2InitIrpQueueContext(
|
|
IN PIRPQUEUE_CONTEXT IrpQueueContext
|
|
);
|
|
|
|
VOID
|
|
P2CancelQueuedIrp(
|
|
IN PIRPQUEUE_CONTEXT IrpQueueContext,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
P2QueueIrp(
|
|
IN PIRP Irp,
|
|
IN PIRPQUEUE_CONTEXT IrpQueueContext,
|
|
IN PDRIVER_CANCEL CancelRoutine
|
|
);
|
|
|
|
PIRP
|
|
P2DequeueIrp(
|
|
IN PIRPQUEUE_CONTEXT IrpQueueContext,
|
|
IN PDRIVER_CANCEL CancelRoutine
|
|
);
|
|
|
|
VOID
|
|
P2CancelRoutine(
|
|
IN PDEVICE_OBJECT DevObj,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
// test.c
|
|
|
|
|
|
//
|
|
// ieee1284.c
|
|
//
|
|
|
|
VOID
|
|
IeeeTerminate1284Mode(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
IeeeEnter1284Mode(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN UCHAR Extensibility
|
|
);
|
|
|
|
VOID
|
|
IeeeDetermineSupportedProtocols(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
IeeeNegotiateBestMode(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN USHORT usReadMask,
|
|
IN USHORT usWriteMask
|
|
);
|
|
|
|
NTSTATUS
|
|
IeeeNegotiateMode(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN USHORT usReadMask,
|
|
IN USHORT usWriteMask
|
|
);
|
|
|
|
//
|
|
// port.c
|
|
//
|
|
|
|
VOID
|
|
ParReleasePortInfoToPortDevice(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParFreePort(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParAllocPortCompletionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
ParAllocPort(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
PptWmiQueryWmiRegInfo(
|
|
IN PDEVICE_OBJECT PDevObj,
|
|
OUT PULONG PRegFlags,
|
|
OUT PUNICODE_STRING PInstanceName,
|
|
OUT PUNICODE_STRING *PRegistryPath,
|
|
OUT PUNICODE_STRING MofResourceName,
|
|
OUT PDEVICE_OBJECT *Pdo
|
|
);
|
|
|
|
NTSTATUS
|
|
PptWmiQueryWmiDataBlock(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN ULONG GuidIndex,
|
|
IN ULONG InstanceIndex,
|
|
IN ULONG InstanceCount,
|
|
IN OUT PULONG InstanceLengthArray,
|
|
IN ULONG OutBufferSize,
|
|
OUT PUCHAR Buffer
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
ParGetPortInfoFromPortDevice(
|
|
IN OUT PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParReleasePortInfoToPortDevice(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParFreePort(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParAllocPortCompletionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
ParAllocPort(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
TstReadDeviceId( PFDO_EXTENSION Ext );
|
|
|
|
NTSTATUS
|
|
P4IeeeEnter1284Mode(
|
|
IN PUCHAR Controller,
|
|
IN UCHAR Extensibility,
|
|
IN OUT PIEEE_STATE State
|
|
);
|
|
|
|
VOID
|
|
P4IeeeTerminate1284Mode(
|
|
IN PUCHAR Controller,
|
|
IN OUT PIEEE_STATE IeeeState,
|
|
IN enum XFlagOnEvent24 XFlagOnEvent24
|
|
);
|
|
|
|
NTSTATUS
|
|
P4NibbleModeRead(
|
|
IN PUCHAR Controller,
|
|
IN PVOID Buffer,
|
|
IN ULONG BufferSize,
|
|
OUT PULONG BytesTransferred,
|
|
IN OUT PIEEE_STATE IeeeState
|
|
);
|
|
|
|
VOID
|
|
P4MakeClassNameFromPortLptName(
|
|
IN PWSTR LptName,
|
|
IN OUT PUNICODE_STRING ParallelName
|
|
);
|
|
|
|
VOID
|
|
ParMakeClassNameFromNumber(
|
|
IN ULONG Number,
|
|
OUT PUNICODE_STRING ClassName
|
|
);
|
|
|
|
//
|
|
|
|
NTSTATUS
|
|
PptFdoUnhandledRequest( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoUnhandledRequest( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchPnp( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchPower( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchCreate( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchClose( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchCleanup( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchRead( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchWrite( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchDeviceControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchInternalDeviceControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchQueryInformation( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchSetInformation( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptDispatchSystemControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoPnp( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoPower( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoCreateOpen( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoClose( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoCleanup( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoRead( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoWrite( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoDeviceControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoInternalDeviceControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoQueryInformation( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoSetInformation( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptFdoSystemControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoPnp( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoPower( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoCreate( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoClose( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoCleanup( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoRead( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoWrite( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoDeviceControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoInternalDeviceControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoQueryInformation( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoSetInformation( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptPdoSystemControl( PDEVICE_OBJECT DevObj, PIRP Irp );
|
|
|
|
NTSTATUS
|
|
PptWmiInitWmi(PDEVICE_OBJECT DeviceObject);
|
|
|
|
NTSTATUS
|
|
PptDispatchSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
|
|
|
//
|
|
// pnp.c - dvdf
|
|
//
|
|
VOID
|
|
PptPnpInitDispatchFunctionTable(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
P5AddDevice(
|
|
IN PDRIVER_OBJECT pDriverObject,
|
|
IN PDEVICE_OBJECT pPhysicalDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchPnp (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
NTSTATUS
|
|
PptFailRequest(
|
|
IN PIRP Irp,
|
|
IN NTSTATUS Status
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchPreProcessIrp(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchPostProcessIrp();
|
|
|
|
|
|
//
|
|
// initunld.c
|
|
//
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
VOID
|
|
PptUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
|
|
//
|
|
// parport.c
|
|
//
|
|
|
|
NTSTATUS
|
|
PptSystemControl (
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptSynchCompletionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PKEVENT Event
|
|
);
|
|
|
|
VOID
|
|
PptLogError(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT DeviceObject OPTIONAL,
|
|
IN PHYSICAL_ADDRESS P1,
|
|
IN PHYSICAL_ADDRESS P2,
|
|
IN ULONG SequenceNumber,
|
|
IN UCHAR MajorFunctionCode,
|
|
IN UCHAR RetryCount,
|
|
IN ULONG UniqueErrorValue,
|
|
IN NTSTATUS FinalStatus,
|
|
IN NTSTATUS SpecificIOStatus
|
|
);
|
|
|
|
NTSTATUS
|
|
PptConnectInterrupt(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDisconnectInterrupt(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchCreateOpen(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchClose(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedIncrement(
|
|
IN OUT PVOID SyncContext
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedDecrement(
|
|
IN OUT PVOID SyncContext
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedRead(
|
|
IN OUT PVOID SyncContext
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedQueue(
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedDisconnect(
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
PptCancelRoutine(
|
|
IN OUT PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PptFreePortDpc(
|
|
IN PKDPC Dpc,
|
|
IN OUT PVOID Extension,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
BOOLEAN
|
|
PptTryAllocatePortAtInterruptLevel(
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
PptFreePortFromInterruptLevel(
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
PptInterruptService(
|
|
IN PKINTERRUPT Interrupt,
|
|
IN PVOID Extension
|
|
);
|
|
|
|
BOOLEAN
|
|
PptTryAllocatePort(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
BOOLEAN
|
|
PptTraversePortCheckList(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
VOID
|
|
PptFreePort(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
ULONG
|
|
PptQueryNumWaiters(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchInternalDeviceControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PptCleanupDevice(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchCleanup(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
BOOLEAN
|
|
PptIsNecR98Machine(
|
|
void
|
|
);
|
|
|
|
VOID
|
|
PowerStateCallback(
|
|
IN PVOID CallbackContext,
|
|
IN PVOID Argument1,
|
|
IN PVOID Argument2
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchPower (
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
VOID
|
|
PptRegInitDriverSettings(
|
|
PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
PWSTR
|
|
PptGetPortNameFromPhysicalDeviceObject(
|
|
PDEVICE_OBJECT PhysicalDeviceObject
|
|
);
|
|
|
|
PVOID
|
|
PptSetCancelRoutine(
|
|
IN PIRP Irp,
|
|
IN PDRIVER_CANCEL CancelRoutine
|
|
);
|
|
|
|
NTSTATUS
|
|
PptAcquireRemoveLockOrFailIrp(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
PIRP Irp
|
|
);
|
|
|
|
//
|
|
// debug.c
|
|
//
|
|
|
|
UCHAR
|
|
P5ReadPortUchar( PUCHAR Port );
|
|
|
|
VOID
|
|
P5ReadPortBufferUchar( PUCHAR Port, PUCHAR Buffer, ULONG Count );
|
|
|
|
VOID
|
|
P5WritePortUchar( PUCHAR Port, UCHAR Value );
|
|
|
|
VOID
|
|
P5WritePortBufferUchar( PUCHAR Port, PUCHAR Buffer, ULONG Count );
|
|
|
|
VOID
|
|
PptFdoDumpPnpIrpInfo(
|
|
IN PDEVICE_OBJECT Fdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PptPdoDumpPnpIrpInfo(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptAcquireRemoveLock(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
PptReleaseRemoveLock(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
PptReleaseRemoveLockAndWait(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag
|
|
);
|
|
|
|
VOID
|
|
PptDebugDumpResourceList(
|
|
PIO_RESOURCE_LIST ResourceList
|
|
);
|
|
|
|
VOID
|
|
PptDebugDumpResourceRequirementsList(
|
|
PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList
|
|
);
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
VOID
|
|
PptLogError(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT DeviceObject OPTIONAL,
|
|
IN PHYSICAL_ADDRESS P1,
|
|
IN PHYSICAL_ADDRESS P2,
|
|
IN ULONG SequenceNumber,
|
|
IN UCHAR MajorFunctionCode,
|
|
IN UCHAR RetryCount,
|
|
IN ULONG UniqueErrorValue,
|
|
IN NTSTATUS FinalStatus,
|
|
IN NTSTATUS SpecificIOStatus
|
|
);
|
|
|
|
VOID
|
|
PptReportResourcesDevice(
|
|
IN PFDO_EXTENSION Extension,
|
|
IN BOOLEAN ClaimInterrupt,
|
|
OUT PBOOLEAN ConflictDetected
|
|
);
|
|
|
|
VOID
|
|
PptUnReportResourcesDevice(
|
|
IN OUT PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptConnectInterrupt(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDisconnectInterrupt(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchCreateClose(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedIncrement(
|
|
IN OUT PVOID SyncContext
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedDecrement(
|
|
IN OUT PVOID SyncContext
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedRead(
|
|
IN OUT PVOID SyncContext
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedQueue(
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSynchronizedDisconnect(
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
PptCancelRoutine(
|
|
IN OUT PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PptFreePortDpc(
|
|
IN PKDPC Dpc,
|
|
IN OUT PVOID Extension,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
BOOLEAN
|
|
PptTryAllocatePortAtInterruptLevel(
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
PptFreePortFromInterruptLevel(
|
|
IN PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
PptInterruptService(
|
|
IN PKINTERRUPT Interrupt,
|
|
IN PVOID Extension
|
|
);
|
|
|
|
BOOLEAN
|
|
PptTryAllocatePort(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
BOOLEAN
|
|
PptTraversePortCheckList(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
VOID
|
|
PptFreePort(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
ULONG
|
|
PptQueryNumWaiters(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchDeviceControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PptCleanupDevice(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDispatchCleanup(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PptUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
BOOLEAN
|
|
PptIsNecR98Machine(
|
|
void
|
|
);
|
|
|
|
//
|
|
// parmode.c
|
|
//
|
|
|
|
NTSTATUS
|
|
PptDetectChipFilter(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDetectPortType(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptSetChipMode (
|
|
IN PFDO_EXTENSION Extension,
|
|
IN UCHAR ChipMode
|
|
);
|
|
|
|
NTSTATUS
|
|
PptClearChipMode (
|
|
IN PFDO_EXTENSION Extension,
|
|
IN UCHAR ChipMode
|
|
);
|
|
|
|
//
|
|
// par12843.c
|
|
//
|
|
|
|
ULONG
|
|
PptInitiate1284_3(
|
|
IN PVOID Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptTrySelectDevice(
|
|
IN PVOID Context,
|
|
IN PVOID TrySelectCommand
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDeselectDevice(
|
|
IN PVOID Context,
|
|
IN PVOID DeselectCommand
|
|
);
|
|
|
|
ULONG
|
|
Ppt1284_3AssignAddress(
|
|
IN PFDO_EXTENSION DeviceExtension
|
|
);
|
|
|
|
BOOLEAN
|
|
PptSend1284_3Command(
|
|
IN PUCHAR CurrentPort,
|
|
IN UCHAR Command
|
|
);
|
|
|
|
//
|
|
// Ppt RemoveLock function declarations
|
|
//
|
|
NTSTATUS
|
|
PptAcquireRemoveLock(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
PptReleaseRemoveLock(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
PptReleaseRemoveLockAndWait(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag
|
|
);
|
|
|
|
//
|
|
// power management function declarations
|
|
//
|
|
NTSTATUS
|
|
PptPowerDispatch (
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
|
|
|
|
//
|
|
// other function declarations
|
|
//
|
|
|
|
PWSTR
|
|
PptGetPortNameFromPhysicalDeviceObject(
|
|
PDEVICE_OBJECT PhysicalDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
PptSynchCompletionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PKEVENT Event
|
|
);
|
|
|
|
NTSTATUS
|
|
PptTrySelectLegacyZip(
|
|
IN PVOID Context,
|
|
IN PVOID TrySelectCommand
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDeselectLegacyZip(
|
|
IN PVOID Context,
|
|
IN PVOID DeselectCommand
|
|
);
|
|
|
|
NTSTATUS
|
|
PptRegGetDeviceParameterDword(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PWSTR ParameterName,
|
|
IN OUT PULONG ParameterValue
|
|
);
|
|
|
|
NTSTATUS
|
|
PptRegSetDeviceParameterDword(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PWSTR ParameterName,
|
|
IN PULONG ParameterValue
|
|
);
|
|
|
|
NTSTATUS
|
|
PptBuildParallelPortDeviceName(
|
|
IN ULONG Number,
|
|
OUT PUNICODE_STRING DeviceName
|
|
);
|
|
|
|
NTSTATUS
|
|
PptInitializeDeviceExtension(
|
|
IN PDRIVER_OBJECT pDriverObject,
|
|
IN PDEVICE_OBJECT pPhysicalDeviceObject,
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PUNICODE_STRING uniNameString,
|
|
IN PWSTR portName,
|
|
IN ULONG portNumber
|
|
);
|
|
|
|
NTSTATUS
|
|
PptGetPortNumberFromLptName(
|
|
IN PWSTR PortName,
|
|
OUT PULONG PortNumber
|
|
);
|
|
|
|
PDEVICE_OBJECT
|
|
PptBuildFdo(
|
|
IN PDRIVER_OBJECT pDriverObject,
|
|
IN PDEVICE_OBJECT pPhysicalDeviceObject
|
|
);
|
|
|
|
VOID
|
|
PptDetectEppPort(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
// orig pnp.h follows
|
|
|
|
NTSTATUS
|
|
PptPnpFilterResourceRequirements(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpQueryDeviceRelations(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpQueryStopDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpCancelStopDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpStopDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpQueryRemoveDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpCancelRemoveDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpRemoveDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpSurpriseRemoval(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpUnhandledIrp(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpStartDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpStartValidateResources(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN BOOLEAN FoundPort,
|
|
IN BOOLEAN FoundIrq,
|
|
IN BOOLEAN FoundDma
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpStartScanCmResourceList(
|
|
IN PFDO_EXTENSION Extension,
|
|
IN PIRP Irp,
|
|
OUT PBOOLEAN FoundPort,
|
|
OUT PBOOLEAN FoundIrq,
|
|
OUT PBOOLEAN FoundDma
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpPassThroughPnpIrpAndReleaseRemoveLock(
|
|
IN PFDO_EXTENSION Extension,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpRemoveDevice(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PptPnpFilterNukeIrqResourceDescriptors(
|
|
IN OUT PIO_RESOURCE_LIST IoResourceList
|
|
);
|
|
|
|
VOID
|
|
PptPnpFilterNukeIrqResourceDescriptorsFromAllLists(
|
|
IN OUT PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList
|
|
);
|
|
|
|
BOOLEAN
|
|
PptPnpFilterExistsNonIrqResourceList(
|
|
IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList
|
|
);
|
|
|
|
PVOID
|
|
PptPnpFilterGetEndOfResourceRequirementsList(
|
|
IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList
|
|
);
|
|
|
|
BOOLEAN
|
|
PptPnpListContainsIrqResourceDescriptor(
|
|
IN PIO_RESOURCE_LIST List
|
|
);
|
|
|
|
VOID
|
|
PptPnpFilterRemoveIrqResourceLists(
|
|
PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList
|
|
);
|
|
|
|
NTSTATUS
|
|
PptPnpBounceAndCatchPnpIrp(
|
|
IN PFDO_EXTENSION Extension,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
PWSTR
|
|
P4MakePdoSymLinkName(
|
|
IN PWSTR LptName,
|
|
IN enum _PdoType PdoType,
|
|
IN UCHAR DaisyChainId, // ignored unless PdoType == PdoTypeDaisyChain
|
|
IN UCHAR RetryNumber
|
|
);
|
|
|
|
PWSTR
|
|
P4MakePdoDeviceName(
|
|
IN PWSTR LptName,
|
|
IN enum _PdoType PdoType,
|
|
IN UCHAR DaisyChainId, // ignored unless PdoType == PdoTypeDaisyChain
|
|
IN UCHAR RetryNumber // used if we had a name collision on IoCreateDevice
|
|
);
|
|
|
|
PDEVICE_OBJECT
|
|
P4CreatePdo(
|
|
IN PDEVICE_OBJECT Fdo,
|
|
IN enum _PdoType PdoType,
|
|
IN UCHAR DaisyChainId, // ignored unless PdoType == PdoTypeDaisyChain
|
|
IN PCHAR Ieee1284Id // NULL if device does not report IEEE 1284 Device ID
|
|
);
|
|
|
|
VOID
|
|
P4DestroyPdo(
|
|
IN PDEVICE_OBJECT Pdo
|
|
);
|
|
|
|
NTSTATUS
|
|
PptFindNatChip(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptBuildResourceList(
|
|
IN PFDO_EXTENSION Extension,
|
|
IN ULONG Partial,
|
|
IN PUCHAR *Addresses,
|
|
OUT PCM_RESOURCE_LIST Resources
|
|
);
|
|
|
|
// parmode.h
|
|
|
|
NTSTATUS
|
|
PptDetectChipFilter(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDetectPortType(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptDetectPortCapabilities(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDetectEcpPort(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDetectEppPortIfDot3DevicePresent(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDetectEppPortIfUserRequested(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDetectBytePort(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDetermineFifoDepth(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptDetermineFifoWidth(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptSetChipMode (
|
|
IN PFDO_EXTENSION Extension,
|
|
IN UCHAR ChipMode
|
|
);
|
|
|
|
NTSTATUS
|
|
PptClearChipMode (
|
|
IN PFDO_EXTENSION Extension,
|
|
IN UCHAR ChipMode
|
|
);
|
|
|
|
NTSTATUS
|
|
PptEcrSetMode(
|
|
IN PFDO_EXTENSION Extension,
|
|
IN UCHAR ChipMode
|
|
);
|
|
|
|
NTSTATUS
|
|
PptCheckBidiMode(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptEcrClearMode(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptSetByteMode(
|
|
IN PFDO_EXTENSION Extension,
|
|
IN UCHAR ChipMode
|
|
);
|
|
|
|
NTSTATUS
|
|
PptClearByteMode(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
PptCheckByteMode(
|
|
IN PFDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
P4CompleteRequest(
|
|
IN PIRP Irp,
|
|
IN NTSTATUS Status,
|
|
IN ULONG_PTR Information
|
|
);
|
|
|
|
NTSTATUS
|
|
P4CompleteRequestReleaseRemLock(
|
|
IN PIRP Irp,
|
|
IN NTSTATUS Status,
|
|
IN ULONG_PTR Information,
|
|
IN PIO_REMOVE_LOCK RemLock
|
|
);
|
|
|
|
VOID
|
|
P4SanitizeId(
|
|
IN OUT PWSTR DeviceId
|
|
);
|
|
|
|
VOID
|
|
P4AcquireBus( IN PDEVICE_OBJECT Fdo ); // this call will block until bus can be acquired
|
|
|
|
VOID
|
|
P4ReleaseBus( PDEVICE_OBJECT Fdo );
|
|
|
|
PCHAR
|
|
P4ReadRawIeee1284DeviceId(
|
|
IN PUCHAR Controller
|
|
);
|
|
|
|
VOID
|
|
P4WritePortNameToDevNode( PDEVICE_OBJECT Pdo, PCHAR Location );
|
|
|
|
NTSTATUS
|
|
PptPdoCreateOpen(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
|
|
NTSTATUS PptFdoHandleBusRelations( IN PDEVICE_OBJECT Fdo, IN PIRP Irp );
|
|
NTSTATUS PptPnpStartScanPciCardCmResourceList( PFDO_EXTENSION Extension, PIRP Irp, PBOOLEAN FoundPort, PBOOLEAN FoundIrq, PBOOLEAN FoundDma );
|
|
BOOLEAN PptIsPci( PFDO_EXTENSION Extension, PIRP Irp );
|
|
NTSTATUS PptPnpStartScanCmResourceList( PFDO_EXTENSION Extension, PIRP Irp, PBOOLEAN FoundPort, PBOOLEAN FoundIrq, PBOOLEAN FoundDma );
|
|
NTSTATUS PptPnpStartValidateResources( PDEVICE_OBJECT DeviceObject, IN BOOLEAN FoundPort, IN BOOLEAN FoundIrq, IN BOOLEAN FoundDma );
|
|
BOOLEAN PptPnpFilterExistsNonIrqResourceList( IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList );
|
|
VOID PptPnpFilterRemoveIrqResourceLists( PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList );
|
|
PVOID PptPnpFilterGetEndOfResourceRequirementsList( IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList );
|
|
VOID PptPnpFilterNukeIrqResourceDescriptorsFromAllLists( PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList );
|
|
VOID PptPnpFilterNukeIrqResourceDescriptors( PIO_RESOURCE_LIST IoResourceList );
|
|
BOOLEAN PptPnpListContainsIrqResourceDescriptor( IN PIO_RESOURCE_LIST List );
|
|
NTSTATUS PptPnpBounceAndCatchPnpIrp( PFDO_EXTENSION Extension, PIRP Irp );
|
|
NTSTATUS PptPnpPassThroughPnpIrpAndReleaseRemoveLock( IN PFDO_EXTENSION Extension, IN PIRP Irp );
|
|
|
|
|
|
VOID PptPdoGetPortInfoFromFdo( PDEVICE_OBJECT Pdo );
|
|
|
|
|
|
NTSTATUS
|
|
ParForwardToReverse(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
BOOLEAN
|
|
ParHaveReadData(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPing(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParReverseToForward(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
ParRead(
|
|
IN PPDO_EXTENSION Extension,
|
|
OUT PVOID Buffer,
|
|
IN ULONG NumBytesToRead,
|
|
OUT PULONG NumBytesRead
|
|
);
|
|
|
|
VOID
|
|
ParReadIrp(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParSetFwdAddress(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParTerminate(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParWrite(
|
|
IN PPDO_EXTENSION Extension,
|
|
OUT PVOID Buffer,
|
|
IN ULONG NumBytesToWrite,
|
|
OUT PULONG NumBytesWritten
|
|
);
|
|
|
|
VOID
|
|
ParWriteIrp(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
ParWmiPdoQueryWmiDataBlock(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN ULONG GuidIndex,
|
|
IN ULONG InstanceIndex,
|
|
IN ULONG InstanceCount,
|
|
IN OUT PULONG InstanceLengthArray,
|
|
IN ULONG OutBufferSize,
|
|
OUT PUCHAR Buffer
|
|
);
|
|
|
|
NTSTATUS
|
|
ParWmiPdoQueryWmiRegInfo(
|
|
IN PDEVICE_OBJECT PDevObj,
|
|
OUT PULONG PRegFlags,
|
|
OUT PUNICODE_STRING PInstanceName,
|
|
OUT PUNICODE_STRING *PRegistryPath,
|
|
OUT PUNICODE_STRING MofResourceName,
|
|
OUT PDEVICE_OBJECT *Pdo
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
ParEcpEnterReversePhase(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParEcpExitReversePhase(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParEcpSetupPhase(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
|
|
VOID
|
|
ParCleanupHwEcpPort(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParEcpHwEmptyFIFO(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParEcpHwHostRecoveryPhase(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParEcpHwRecoverPort(
|
|
IN PPDO_EXTENSION Extension,
|
|
UCHAR bRecoverCode
|
|
);
|
|
|
|
NTSTATUS
|
|
ParEcpHwWaitForEmptyFIFO(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1998 - 1999
|
|
//
|
|
// File: pcfuncdecl.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
//
|
|
// Function declarations for the ParClass (parallel.sys) driver
|
|
//
|
|
|
|
VOID
|
|
ParDumpDevExtTable();
|
|
|
|
NTSTATUS
|
|
ParWMIRegistrationControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN ULONG Action
|
|
);
|
|
|
|
BOOLEAN
|
|
ParIsPodo(
|
|
IN PDEVICE_OBJECT DevObj
|
|
);
|
|
|
|
NTSTATUS
|
|
ParWmiPdoInitWmi(
|
|
IN PDEVICE_OBJECT DeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParWmiPdoSystemControlDispatch(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
PCHAR
|
|
Par3QueryDeviceId(
|
|
IN PPDO_EXTENSION Extension,
|
|
OUT PCHAR DeviceIdBuffer,
|
|
IN ULONG BufferSize,
|
|
OUT PULONG DeviceIdSize,
|
|
IN BOOLEAN bReturnRawString, // TRUE == include the 2 size bytes in the returned string
|
|
IN BOOLEAN bBuildStlDeviceId
|
|
);
|
|
|
|
|
|
PDEVICE_OBJECT
|
|
ParDetectCreatePdo(PDEVICE_OBJECT legacyPodo, UCHAR Dot3Id, BOOLEAN bStlDot3Id);
|
|
|
|
NTSTATUS
|
|
ParBuildSendInternalIoctl(
|
|
IN ULONG IoControlCode,
|
|
IN PDEVICE_OBJECT TargetDeviceObject,
|
|
IN PVOID InputBuffer OPTIONAL,
|
|
IN ULONG InputBufferLength,
|
|
OUT PVOID OutputBuffer OPTIONAL,
|
|
IN ULONG OutputBufferLength,
|
|
IN PLARGE_INTEGER Timeout OPTIONAL
|
|
);
|
|
|
|
|
|
//
|
|
// initunld.c - driver initialization and unload
|
|
//
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
VOID
|
|
ParUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPower(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPdoPower(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
ParFdoPower(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
// parclass.c ?
|
|
|
|
VOID
|
|
ParLogError(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT DeviceObject OPTIONAL,
|
|
IN PHYSICAL_ADDRESS P1,
|
|
IN PHYSICAL_ADDRESS P2,
|
|
IN ULONG SequenceNumber,
|
|
IN UCHAR MajorFunctionCode,
|
|
IN UCHAR RetryCount,
|
|
IN ULONG UniqueErrorValue,
|
|
IN NTSTATUS FinalStatus,
|
|
IN NTSTATUS SpecificIOStatus
|
|
);
|
|
|
|
UCHAR
|
|
ParInitializeDevice(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParNotInitError(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN UCHAR DeviceStatus
|
|
);
|
|
|
|
VOID
|
|
PptPdoStartIo(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
PptPdoThread(
|
|
IN PVOID Context
|
|
);
|
|
|
|
NTSTATUS
|
|
ParCreateSystemThread(
|
|
PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParCancelRequest(
|
|
PDEVICE_OBJECT DeviceObject,
|
|
PIRP Irp
|
|
);
|
|
|
|
// exports.c
|
|
|
|
USHORT
|
|
ParExportedDetermineIeeeModes(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParExportedIeeeFwdToRevMode(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParExportedIeeeRevToFwdMode(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParExportedNegotiateIeeeMode(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN USHORT ModeMaskFwd,
|
|
IN USHORT ModeMaskRev,
|
|
IN PARALLEL_SAFETY ModeSafety,
|
|
IN BOOLEAN IsForward
|
|
);
|
|
|
|
NTSTATUS
|
|
ParExportedTerminateIeeeMode(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParExportedParallelRead(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN PVOID Buffer,
|
|
IN ULONG NumBytesToRead,
|
|
OUT PULONG NumBytesRead,
|
|
IN UCHAR Channel
|
|
);
|
|
|
|
NTSTATUS
|
|
ParExportedParallelWrite(
|
|
IN PPDO_EXTENSION Extension,
|
|
OUT PVOID Buffer,
|
|
IN ULONG NumBytesToWrite,
|
|
OUT PULONG NumBytesWritten,
|
|
IN UCHAR Channel
|
|
);
|
|
|
|
NTSTATUS
|
|
ParTerminateParclassMode(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParWriteIo(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParReadIo(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParDeviceIo(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
|
|
// pnp?
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPnpAddDevice(
|
|
IN PDRIVER_OBJECT pDriverObject,
|
|
IN PDEVICE_OBJECT pPhysicalDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParParallelPnp(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPdoParallelPnp(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
ParFdoParallelPnp(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
ParSynchCompletionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PKEVENT Event
|
|
);
|
|
|
|
PDEVICE_OBJECT
|
|
ParPnpCreateDevice(
|
|
IN PDRIVER_OBJECT pDriverObject
|
|
);
|
|
|
|
BOOLEAN
|
|
ParMakeNames(
|
|
IN ULONG ParallelPortNumber,
|
|
OUT PUNICODE_STRING ClassName,
|
|
OUT PUNICODE_STRING LinkName
|
|
);
|
|
|
|
VOID
|
|
ParCheckParameters(
|
|
IN OUT PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParPnpFindDeviceIdKeys(
|
|
OUT PCHAR *lppMFG,
|
|
OUT PCHAR *lppMDL,
|
|
OUT PCHAR *lppCLS,
|
|
OUT PCHAR *lppDES,
|
|
OUT PCHAR *lppAID,
|
|
OUT PCHAR *lppCID,
|
|
IN PCHAR lpDeviceID
|
|
);
|
|
|
|
VOID
|
|
ParDot3ParseDevId(
|
|
PCHAR *lpp_DL,
|
|
PCHAR *lpp_C,
|
|
PCHAR *lpp_CMD,
|
|
PCHAR *lpp_4DL,
|
|
PCHAR *lpp_M,
|
|
PCHAR lpDeviceID
|
|
);
|
|
|
|
VOID
|
|
GetCheckSum(
|
|
IN PCHAR Block,
|
|
IN USHORT Len,
|
|
OUT PUSHORT CheckSum
|
|
);
|
|
|
|
BOOLEAN
|
|
String2Num(
|
|
IN OUT PCHAR *lpp_Str,
|
|
IN CHAR c,
|
|
OUT ULONG *num
|
|
);
|
|
|
|
UCHAR
|
|
StringCountValues(
|
|
IN PCHAR string,
|
|
IN CHAR delimeter
|
|
);
|
|
|
|
PCHAR
|
|
StringChr(
|
|
IN PCHAR string,
|
|
IN CHAR c
|
|
);
|
|
|
|
ULONG
|
|
StringLen(
|
|
IN PUCHAR string
|
|
);
|
|
|
|
VOID
|
|
StringSubst(
|
|
IN OUT PCHAR lpS,
|
|
IN CHAR chTargetChar,
|
|
IN CHAR chReplacementChar,
|
|
IN USHORT cbS
|
|
);
|
|
|
|
BOOLEAN
|
|
ParSelectDevice(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN BOOLEAN HavePort
|
|
);
|
|
|
|
BOOLEAN
|
|
ParDeselectDevice(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN BOOLEAN KeepPort
|
|
);
|
|
|
|
NTSTATUS
|
|
ParAcquireRemoveLock(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
ParReleaseRemoveLock(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
ParReleaseRemoveLockAndWait(
|
|
IN PIO_REMOVE_LOCK RemoveLock,
|
|
IN PVOID Tag
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPnpInterfaceChangeNotify(
|
|
IN PDEVICE_INTERFACE_CHANGE_NOTIFICATION pDeviceInterfaceChangeNotification,
|
|
IN PVOID pContext
|
|
);
|
|
|
|
VOID
|
|
ParMakeClassNameFromNumber(
|
|
IN ULONG Number,
|
|
OUT PUNICODE_STRING ClassName
|
|
);
|
|
|
|
VOID
|
|
ParMakeDotClassNameFromBaseClassName(
|
|
IN PUNICODE_STRING BaseClassName,
|
|
IN ULONG Number,
|
|
OUT PUNICODE_STRING DotClassName
|
|
);
|
|
|
|
VOID
|
|
ParInitCommonDOPre(PDEVICE_OBJECT DevObj, PDEVICE_OBJECT Fdo, PUNICODE_STRING ClassName);
|
|
|
|
VOID
|
|
ParInitCommonDOPost(PDEVICE_OBJECT DevObj);
|
|
|
|
NTSTATUS
|
|
ParInitPdo(
|
|
IN PDEVICE_OBJECT NewPdo,
|
|
IN PUCHAR DeviceIdString,
|
|
IN ULONG DeviceIdLength,
|
|
IN PDEVICE_OBJECT LegacyPodo,
|
|
IN UCHAR Dot3Id
|
|
);
|
|
|
|
NTSTATUS
|
|
ParInitLegacyPodo(PDEVICE_OBJECT LegacyPodo, PUNICODE_STRING PortSymbolicLinkName);
|
|
|
|
VOID
|
|
ParAddDevObjToFdoList(PDEVICE_OBJECT DevObj);
|
|
|
|
PDEVICE_OBJECT
|
|
ParCreateLegacyPodo(PDEVICE_OBJECT Fdo, PUNICODE_STRING PortSymbolicLinkName);
|
|
|
|
VOID
|
|
ParAcquireListMutexAndKillDeviceObject(PDEVICE_OBJECT Fdo, PDEVICE_OBJECT DevObj);
|
|
|
|
VOID
|
|
ParKillDeviceObject(
|
|
PDEVICE_OBJECT DeviceObject
|
|
);
|
|
|
|
PWSTR
|
|
ParCreateWideStringFromUnicodeString(
|
|
PUNICODE_STRING UnicodeString
|
|
);
|
|
|
|
PDEVICE_OBJECT
|
|
ParDetectCreateEndOfChainPdo(PDEVICE_OBJECT LegacyPodo);
|
|
|
|
VOID
|
|
ParEnumerate1284_3Devices(
|
|
IN PDEVICE_OBJECT pFdoDeviceObject,
|
|
IN PDEVICE_OBJECT pPortDeviceObject,
|
|
IN PDEVICE_OBJECT EndOfChainDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPnpNotifyTargetDeviceChange(
|
|
IN PDEVICE_INTERFACE_CHANGE_NOTIFICATION pDeviceInterfaceChangeNotification,
|
|
IN PDEVICE_OBJECT pFdoDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPnpNotifyInterfaceChange(
|
|
IN PDEVICE_INTERFACE_CHANGE_NOTIFICATION NotificationStruct,
|
|
IN PDEVICE_OBJECT Fdo
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPnpGetId(
|
|
IN PCHAR DeviceIdString,
|
|
IN ULONG Type,
|
|
OUT PCHAR resultString,
|
|
OUT PCHAR descriptionString
|
|
);
|
|
|
|
NTSTATUS
|
|
ParPnpFdoQueryDeviceRelationsBusRelations(
|
|
IN PDEVICE_OBJECT Fdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
// VOID ParAddPodoToDevObjStruct(PPAR_DEVOBJ_STRUCT DevObjStructHead, PDEVICE_OBJECT CurrentDo);
|
|
// VOID ParAddEndOfChainPdoToDevObjStruct(PPAR_DEVOBJ_STRUCT DevObjStructHead, PDEVICE_OBJECT CurrentDo);
|
|
// VOID ParAddDot3PdoToDevObjStruct(PPAR_DEVOBJ_STRUCT DevObjStructHead, PDEVICE_OBJECT CurrentDo);
|
|
// VOID ParAddLegacyZipPdoToDevObjStruct(IN PPAR_DEVOBJ_STRUCT DevObjStructHead, IN PDEVICE_OBJECT CurrentDo);
|
|
// PPAR_DEVOBJ_STRUCT ParFindCreateDevObjStruct(PPAR_DEVOBJ_STRUCT DevObjStructHead, PUCHAR Controller);
|
|
// VOID ParDumpDevObjStructList(PPAR_DEVOBJ_STRUCT DevObjStructHead);
|
|
// PPAR_DEVOBJ_STRUCT ParBuildDevObjStructList(PDEVICE_OBJECT Fdo);
|
|
// VOID ParDoParallelBusRescan(PPAR_DEVOBJ_STRUCT DevObjStructHead);
|
|
|
|
BOOLEAN
|
|
ParDeviceExists(
|
|
PPDO_EXTENSION Extension,
|
|
IN BOOLEAN HavePortKeepPort
|
|
);
|
|
|
|
NTSTATUS
|
|
ParAllocatePortDevice(
|
|
IN PDEVICE_OBJECT PortDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParAllocatePortDevice(
|
|
IN PDEVICE_OBJECT PortDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParAcquirePort(
|
|
IN PDEVICE_OBJECT PortDeviceObject,
|
|
IN PLARGE_INTEGER Timeout OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
ParReleasePort(
|
|
IN PDEVICE_OBJECT PortDeviceObject
|
|
);
|
|
|
|
VOID
|
|
ParDetectDot3DataLink(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN PCHAR DeviceId
|
|
);
|
|
|
|
VOID
|
|
ParMarkPdoHardwareGone(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParInit1284_3Bus(
|
|
IN PDEVICE_OBJECT PortDeviceObject
|
|
);
|
|
|
|
UCHAR
|
|
ParGet1284_3DeviceCount(
|
|
IN PDEVICE_OBJECT PortDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParSelect1284_3Device(
|
|
IN PDEVICE_OBJECT PortDeviceObject,
|
|
IN UCHAR Dot3DeviceId
|
|
);
|
|
|
|
NTSTATUS
|
|
ParDeselect1284_3Device(
|
|
IN PDEVICE_OBJECT PortDeviceObject,
|
|
IN UCHAR Dot3DeviceId
|
|
);
|
|
|
|
PCHAR
|
|
Par3QueryLegacyZipDeviceId(
|
|
IN PPDO_EXTENSION Extension,
|
|
OUT PCHAR CallerDeviceIdBuffer, OPTIONAL
|
|
IN ULONG CallerBufferSize,
|
|
OUT PULONG DeviceIdSize,
|
|
IN BOOLEAN bReturnRawString // TRUE == include the 2 size bytes in the returned string
|
|
// FALSE == discard the 2 size bytes
|
|
);
|
|
|
|
PCHAR
|
|
ParStlQueryStlDeviceId(
|
|
IN PPDO_EXTENSION Extension,
|
|
OUT PCHAR CallerDeviceIdBuffer,
|
|
IN ULONG CallerBufferSize,
|
|
OUT PULONG DeviceIdSize,
|
|
IN BOOLEAN bReturnRawString
|
|
) ;
|
|
|
|
BOOLEAN
|
|
ParStlCheckIfStl(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN ULONG ulDaisyIndex
|
|
) ;
|
|
|
|
VOID
|
|
ParCheckEnableLegacyZipFlag();
|
|
|
|
BOOLEAN
|
|
P5LegacyZipDetected(
|
|
IN PUCHAR Controller
|
|
);
|
|
|
|
PWSTR
|
|
ParGetPortLptName(
|
|
IN PDEVICE_OBJECT PortDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ParCreateDevice(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN ULONG DeviceExtensionSize,
|
|
IN PUNICODE_STRING DeviceName OPTIONAL,
|
|
IN DEVICE_TYPE DeviceType,
|
|
IN ULONG DeviceCharacteristics,
|
|
IN BOOLEAN Exclusive,
|
|
OUT PDEVICE_OBJECT *DeviceObject
|
|
);
|
|
|
|
VOID
|
|
ParInitializeExtension1284Info(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
VOID
|
|
ParGetDriverParameterDword(
|
|
IN PUNICODE_STRING ServicePath,
|
|
IN PWSTR ParameterName,
|
|
IN OUT PULONG ParameterValue
|
|
);
|
|
|
|
NTSTATUS
|
|
PptRegGetDword(
|
|
IN ULONG RelativeTo,
|
|
IN PWSTR Path,
|
|
IN PWSTR ParameterName,
|
|
IN OUT PULONG ParameterValue
|
|
);
|
|
|
|
NTSTATUS
|
|
PptRegSetDword(
|
|
IN ULONG RelativeTo,
|
|
IN PWSTR Path,
|
|
IN PWSTR ParameterName,
|
|
IN PULONG ParameterValue
|
|
);
|
|
|
|
NTSTATUS
|
|
PptRegGetSz(
|
|
IN ULONG RelativeTo,
|
|
IN PWSTR Path,
|
|
IN PWSTR ParameterName,
|
|
IN OUT PUNICODE_STRING ParameterValue
|
|
);
|
|
|
|
NTSTATUS
|
|
PptRegSetSz(
|
|
IN ULONG RelativeTo,
|
|
IN PWSTR Path,
|
|
IN PWSTR ParameterName,
|
|
IN PWSTR ParameterValue
|
|
);
|
|
|
|
VOID
|
|
ParFixupDeviceId(
|
|
IN OUT PUCHAR DeviceId
|
|
);
|
|
|
|
VOID
|
|
PptWriteMfgMdlToDevNode(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PCHAR Mfg,
|
|
IN PCHAR Mdl
|
|
);
|
|
|
|
VOID
|
|
P4SanitizeMultiSzId(
|
|
IN OUT PWSTR WCharBuffer,
|
|
IN ULONG BufWCharCount
|
|
);
|
|
|
|
NTSTATUS
|
|
ParEnterByteMode(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN BOOLEAN DeviceIdRequest
|
|
);
|
|
|
|
VOID
|
|
ParTerminateByteMode(
|
|
IN PPDO_EXTENSION Extension
|
|
);
|
|
|
|
NTSTATUS
|
|
ParByteModeRead(
|
|
IN PPDO_EXTENSION Extension,
|
|
IN PVOID Buffer,
|
|
IN ULONG BufferSize,
|
|
OUT PULONG BytesTransferred
|
|
);
|