📄 funcdecl.h
字号:
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
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -