|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: funcdecl.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 PDEVICE_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_EXTENSION Extension, IN PIRP pIrp );
NTSTATUS ParFdoPower( IN PDEVICE_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 PDEVICE_EXTENSION Extension );
VOID ParNotInitError( IN PDEVICE_EXTENSION Extension, IN UCHAR DeviceStatus );
VOID ParStartIo( IN PDEVICE_EXTENSION Extension );
VOID ParallelThread( IN PVOID Context );
NTSTATUS ParCreateSystemThread( PDEVICE_EXTENSION Extension );
VOID ParCancelRequest( PDEVICE_OBJECT DeviceObject, PIRP Irp );
// exports.c
USHORT ParExportedDetermineIeeeModes( IN PDEVICE_EXTENSION Extension );
NTSTATUS ParExportedIeeeFwdToRevMode( IN PDEVICE_EXTENSION Extension );
NTSTATUS ParExportedIeeeRevToFwdMode( IN PDEVICE_EXTENSION Extension );
NTSTATUS ParExportedNegotiateIeeeMode( IN PDEVICE_EXTENSION Extension, IN USHORT ModeMaskFwd, IN USHORT ModeMaskRev, IN PARALLEL_SAFETY ModeSafety, IN BOOLEAN IsForward );
NTSTATUS ParExportedTerminateIeeeMode( IN PDEVICE_EXTENSION Extension );
NTSTATUS ParExportedParallelRead( IN PDEVICE_EXTENSION Extension, IN PVOID Buffer, IN ULONG NumBytesToRead, OUT PULONG NumBytesRead, IN UCHAR Channel );
NTSTATUS ParExportedParallelWrite( IN PDEVICE_EXTENSION Extension, OUT PVOID Buffer, IN ULONG NumBytesToWrite, OUT PULONG NumBytesWritten, IN UCHAR Channel ); NTSTATUS ParTerminateParclassMode( IN PDEVICE_EXTENSION Extension );
VOID ParWriteIo( IN PDEVICE_EXTENSION Extension );
VOID ParReadIo( IN PDEVICE_EXTENSION Extension );
VOID ParDeviceIo( IN PDEVICE_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 PDEVICE_EXTENSION Extension );
VOID ParPnpFindDeviceIdKeys( OUT PUCHAR *lppMFG, OUT PUCHAR *lppMDL, OUT PUCHAR *lppCLS, OUT PUCHAR *lppDES, OUT PUCHAR *lppAID, OUT PUCHAR *lppCID, IN PUCHAR lpDeviceID );
VOID ParDot3ParseDevId( PUCHAR *lpp_DL, PUCHAR *lpp_C, PUCHAR *lpp_CMD, PUCHAR *lpp_4DL, PUCHAR *lpp_M, PUCHAR lpDeviceID );
VOID GetCheckSum( IN PUCHAR Block, IN USHORT Len, OUT PUSHORT CheckSum );
BOOLEAN String2Num( IN OUT PUCHAR *lpp_Str, IN CHAR c, OUT ULONG *num );
UCHAR StringCountValues( IN PCHAR string, IN CHAR delimeter );
PUCHAR StringChr( IN PCHAR string, IN CHAR c );
ULONG StringLen( IN PUCHAR string );
VOID StringSubst( IN OUT PUCHAR lpS, IN UCHAR chTargetChar, IN UCHAR chReplacementChar, IN USHORT cbS );
BOOLEAN ParSelectDevice( IN PDEVICE_EXTENSION Extension, IN BOOLEAN HavePort );
BOOLEAN ParDeselectDevice( IN PDEVICE_EXTENSION Extension, IN BOOLEAN KeepPort );
#if DBG
VOID ParDumpDeviceObjectList( PDEVICE_OBJECT ParClassFdo ); #endif
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 PUCHAR DeviceIdString, IN ULONG Type, OUT PUCHAR resultString, OUT PUCHAR 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( PDEVICE_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 PDEVICE_EXTENSION Extension, IN PUCHAR DeviceId );
VOID ParMarkPdoHardwareGone( IN PDEVICE_EXTENSION Extension );
VOID ParDestroyDevObjStructList( IN PPAR_DEVOBJ_STRUCT DevObjStructHead );
VOID ParRescan1284_3DaisyChain( IN PPAR_DEVOBJ_STRUCT CurrentNode );
VOID ParRescanEndOfChain( IN PPAR_DEVOBJ_STRUCT CurrentNode );
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 );
VOID ParRescanLegacyZip( IN PPAR_DEVOBJ_STRUCT CurrentNode );
PCHAR Par3QueryLegacyZipDeviceId( IN PDEVICE_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 PDEVICE_EXTENSION Extension, OUT PCHAR CallerDeviceIdBuffer, IN ULONG CallerBufferSize, OUT PULONG DeviceIdSize, IN BOOLEAN bReturnRawString ) ;
BOOLEAN ParStlCheckIfStl( IN PDEVICE_EXTENSION Extension, IN ULONG ulDaisyIndex ) ;
NTSTATUS ParRegisterForParportRemovalRelations( IN PDEVICE_EXTENSION Extension );
NTSTATUS ParUnregisterForParportRemovalRelations( IN PDEVICE_EXTENSION Extension );
VOID ParCheckEnableLegacyZipFlag();
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 PDEVICE_EXTENSION Extension );
VOID ParGetDriverParameterDword( IN PUNICODE_STRING ServicePath, IN PWSTR ParameterName, IN OUT PULONG ParameterValue );
VOID ParFixupDeviceId( IN OUT PUCHAR DeviceId );
|