--*/
-#include <stddef.h>
-#include <stdarg.h>
-#include <ntddk.h>
+#ifndef _CLASSPNP_PCH_
+#define _CLASSPNP_PCH_
-#include <scsi.h>
-#include <wmidata.h>
+#include <ntddk.h>
#include <classpnp.h>
-
-#if CLASS_INIT_GUID
-#include <initguid.h>
-#endif
-
-#include <mountdev.h>
#include <ioevent.h>
#include <pseh/pseh2.h>
-#include "wmistr.h"
-
extern CLASSPNP_SCAN_FOR_SPECIAL_INFO ClassBadItems[];
extern GUID ClassGuidQueryRegInfoEx;
return (SListHdr->Next == NULL);
}
-NTSTATUS
-DriverEntry(
- IN PDRIVER_OBJECT DriverObject,
- IN PUNICODE_STRING RegistryPath
- );
+DRIVER_INITIALIZE DriverEntry;
-VOID
-ClassUnload(
- IN PDRIVER_OBJECT DriverObject
- );
+DRIVER_UNLOAD ClassUnload;
-NTSTATUS
-ClassCreateClose(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
+DRIVER_DISPATCH ClassCreateClose;
NTSTATUS
+NTAPI
ClasspCreateClose(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
VOID
+NTAPI
ClasspCleanupProtectedLocks(
IN PFILE_OBJECT_EXTENSION FsContext
);
NTSTATUS
+NTAPI
ClasspEjectionControl(
IN PDEVICE_OBJECT Fdo,
IN PIRP Irp,
IN BOOLEAN Lock
);
-NTSTATUS
-ClassReadWrite(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
+DRIVER_DISPATCH ClassReadWrite;
-NTSTATUS
-ClassDeviceControlDispatch(
- PDEVICE_OBJECT DeviceObject,
- PIRP Irp
- );
-
-NTSTATUS
-ClassDeviceControl(
- PDEVICE_OBJECT DeviceObject,
- PIRP Irp
- );
+DRIVER_DISPATCH ClassDeviceControlDispatch;
-NTSTATUS
-ClassDispatchPnp(
- PDEVICE_OBJECT DeviceObject,
- PIRP Irp
- );
+DRIVER_DISPATCH ClassDispatchPnp;
NTSTATUS
+NTAPI
ClassPnpStartDevice(
IN PDEVICE_OBJECT DeviceObject
);
NTSTATUS
-ClassInternalIoControl (
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
-
-NTSTATUS
+NTAPI
ClassShutdownFlush(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
-NTSTATUS
-ClassSystemControl(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
+DRIVER_DISPATCH ClassSystemControl;
//
// Class internal routines
//
-NTSTATUS
-ClassAddDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN OUT PDEVICE_OBJECT PhysicalDeviceObject
- );
+DRIVER_ADD_DEVICE ClassAddDevice;
-NTSTATUS
-ClasspSendSynchronousCompletion(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PVOID Context
- );
+IO_COMPLETION_ROUTINE ClasspSendSynchronousCompletion;
VOID
+NTAPI
RetryRequest(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
);
NTSTATUS
+NTAPI
ClassIoCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
);
NTSTATUS
+NTAPI
ClassPnpQueryFdoRelations(
IN PDEVICE_OBJECT Fdo,
IN PIRP Irp
);
NTSTATUS
+NTAPI
ClassRetrieveDeviceRelations(
IN PDEVICE_OBJECT Fdo,
IN DEVICE_RELATION_TYPE RelationType,
);
NTSTATUS
+NTAPI
ClassGetPdoId(
IN PDEVICE_OBJECT Pdo,
IN BUS_QUERY_ID_TYPE IdType,
);
NTSTATUS
+NTAPI
ClassQueryPnpCapabilities(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PDEVICE_CAPABILITIES Capabilities
);
-VOID
-ClasspStartIo(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
+DRIVER_STARTIO ClasspStartIo;
NTSTATUS
+NTAPI
ClasspPagingNotificationCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
);
NTSTATUS
+NTAPI
ClasspMediaChangeCompletion(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
);
PFILE_OBJECT_EXTENSION
+NTAPI
ClasspGetFsContext(
IN PCOMMON_DEVICE_EXTENSION CommonExtension,
IN PFILE_OBJECT FileObject
);
NTSTATUS
+NTAPI
ClasspMcnControl(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PIRP Irp,
);
VOID
+NTAPI
ClasspRegisterMountedDeviceInterface(
IN PDEVICE_OBJECT DeviceObject
);
NTSTATUS
+NTAPI
ClasspDisableTimer(
PDEVICE_OBJECT DeviceObject
);
NTSTATUS
+NTAPI
ClasspEnableTimer(
PDEVICE_OBJECT DeviceObject
);
//
VOID
+NTAPI
InitializeDictionary(
IN PDICTIONARY Dictionary
);
BOOLEAN
+NTAPI
TestDictionarySignature(
IN PDICTIONARY Dictionary
);
NTSTATUS
+NTAPI
AllocateDictionaryEntry(
IN PDICTIONARY Dictionary,
IN ULONGLONG Key,
);
PVOID
+NTAPI
GetDictionaryEntry(
IN PDICTIONARY Dictionary,
IN ULONGLONG Key
);
VOID
+NTAPI
FreeDictionaryEntry(
IN PDICTIONARY Dictionary,
IN PVOID Entry
NTSTATUS
+NTAPI
ClasspAllocateReleaseRequest(
IN PDEVICE_OBJECT Fdo
);
VOID
+NTAPI
ClasspFreeReleaseRequest(
IN PDEVICE_OBJECT Fdo
);
-NTSTATUS
-ClassReleaseQueueCompletion(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PVOID Context
- );
+IO_COMPLETION_ROUTINE ClassReleaseQueueCompletion;
VOID
+NTAPI
ClasspReleaseQueue(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP ReleaseQueueIrp
);
VOID
+NTAPI
ClasspDisablePowerNotification(
PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
);
// class power routines
//
-NTSTATUS
-ClassDispatchPower(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
+DRIVER_DISPATCH ClassDispatchPower;
NTSTATUS
+NTAPI
ClassMinimalPowerHandler(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
//
VOID
+NTAPI
ClassAddChild(
IN PFUNCTIONAL_DEVICE_EXTENSION Parent,
IN PPHYSICAL_DEVICE_EXTENSION Child,
);
PPHYSICAL_DEVICE_EXTENSION
+NTAPI
ClassRemoveChild(
IN PFUNCTIONAL_DEVICE_EXTENSION Parent,
IN PPHYSICAL_DEVICE_EXTENSION Child,
);
VOID
+NTAPI
ClasspRetryDpcTimer(
IN PCLASS_PRIVATE_FDO_DATA FdoData
);
-VOID
-ClasspRetryRequestDpc(
- IN PKDPC Dpc,
- IN PDEVICE_OBJECT DeviceObject,
- IN PVOID Arg1,
- IN PVOID Arg2
- );
+KDEFERRED_ROUTINE ClasspRetryRequestDpc;
VOID
+NTAPI
ClassFreeOrReuseSrb(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PSCSI_REQUEST_BLOCK Srb
);
VOID
+NTAPI
ClassRetryRequest(
IN PDEVICE_OBJECT SelfDeviceObject,
IN PIRP Irp,
);
VOID
+NTAPI
ClasspBuildRequestEx(
IN PFUNCTIONAL_DEVICE_EXTENSION Fdo,
IN PIRP Irp,
);
NTSTATUS
+NTAPI
ClasspAllocateReleaseQueueIrp(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
);
NTSTATUS
+NTAPI
ClasspInitializeGesn(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN PMEDIA_CHANGE_DETECTION_INFO Info
);
VOID
+NTAPI
ClasspSendNotification(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN const GUID * Guid,
);
VOID
+NTAPI
ClassSendEjectionNotification(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
);
VOID
+NTAPI
ClasspScanForSpecialInRegistry(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
);
VOID
+NTAPI
ClasspScanForClassHacks(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension,
IN ULONG_PTR Data
);
NTSTATUS
+NTAPI
ClasspInitializeHotplugInfo(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
);
VOID
+NTAPI
ClasspPerfIncrementErrorCount(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
);
VOID
+NTAPI
ClasspPerfIncrementSuccessfulIo(
IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension
);
-
-PTRANSFER_PACKET NewTransferPacket(PDEVICE_OBJECT Fdo);
-VOID DestroyTransferPacket(PTRANSFER_PACKET Pkt);
-VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt);
-PTRANSFER_PACKET DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNeeded);
-VOID SetupReadWriteTransferPacket(PTRANSFER_PACKET pkt, PVOID Buf, ULONG Len, LARGE_INTEGER DiskLocation, PIRP OriginalIrp);
-VOID SubmitTransferPacket(PTRANSFER_PACKET Pkt);
-NTSTATUS TransferPktComplete(IN PDEVICE_OBJECT NullFdo, IN PIRP Irp, IN PVOID Context);
-VOID ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp);
-VOID TransferPacketRetryTimerDpc(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2);
-BOOLEAN InterpretTransferPacketError(PTRANSFER_PACKET Pkt);
-BOOLEAN RetryTransferPacket(PTRANSFER_PACKET Pkt);
-VOID EnqueueDeferredClientIrp(PCLASS_PRIVATE_FDO_DATA FdoData, PIRP Irp);
-PIRP DequeueDeferredClientIrp(PCLASS_PRIVATE_FDO_DATA FdoData);
-VOID InitLowMemRetry(PTRANSFER_PACKET Pkt, PVOID BufPtr, ULONG Len, LARGE_INTEGER TargetLocation);
-BOOLEAN StepLowMemRetry(PTRANSFER_PACKET Pkt);
-VOID SetupEjectionTransferPacket(TRANSFER_PACKET *Pkt, BOOLEAN PreventMediaRemoval, PKEVENT SyncEventPtr, PIRP OriginalIrp);
-VOID SetupModeSenseTransferPacket(TRANSFER_PACKET *Pkt, PKEVENT SyncEventPtr, PVOID ModeSenseBuffer, UCHAR ModeSenseBufferLen, UCHAR PageMode, PIRP OriginalIrp);
-VOID SetupDriveCapacityTransferPacket(TRANSFER_PACKET *Pkt, PVOID ReadCapacityBuffer, ULONG ReadCapacityBufferLen, PKEVENT SyncEventPtr, PIRP OriginalIrp);
-PMDL BuildDeviceInputMdl(PVOID Buffer, ULONG BufferLen);
-VOID FreeDeviceInputMdl(PMDL Mdl);
-NTSTATUS InitializeTransferPackets(PDEVICE_OBJECT Fdo);
-VOID DestroyAllTransferPackets(PDEVICE_OBJECT Fdo);
-
-
-
-
-
+PTRANSFER_PACKET NTAPI NewTransferPacket(PDEVICE_OBJECT Fdo);
+VOID NTAPI DestroyTransferPacket(PTRANSFER_PACKET Pkt);
+VOID NTAPI EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt);
+PTRANSFER_PACKET NTAPI DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNeeded);
+VOID NTAPI SetupReadWriteTransferPacket(PTRANSFER_PACKET pkt, PVOID Buf, ULONG Len, LARGE_INTEGER DiskLocation, PIRP OriginalIrp);
+VOID NTAPI SubmitTransferPacket(PTRANSFER_PACKET Pkt);
+NTSTATUS NTAPI TransferPktComplete(IN PDEVICE_OBJECT NullFdo, IN PIRP Irp, IN PVOID Context);
+VOID NTAPI ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp);
+VOID NTAPI TransferPacketRetryTimerDpc(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2);
+BOOLEAN NTAPI InterpretTransferPacketError(PTRANSFER_PACKET Pkt);
+BOOLEAN NTAPI RetryTransferPacket(PTRANSFER_PACKET Pkt);
+VOID NTAPI EnqueueDeferredClientIrp(PCLASS_PRIVATE_FDO_DATA FdoData, PIRP Irp);
+PIRP NTAPI DequeueDeferredClientIrp(PCLASS_PRIVATE_FDO_DATA FdoData);
+VOID NTAPI InitLowMemRetry(PTRANSFER_PACKET Pkt, PVOID BufPtr, ULONG Len, LARGE_INTEGER TargetLocation);
+BOOLEAN NTAPI StepLowMemRetry(PTRANSFER_PACKET Pkt);
+VOID NTAPI SetupEjectionTransferPacket(TRANSFER_PACKET *Pkt, BOOLEAN PreventMediaRemoval, PKEVENT SyncEventPtr, PIRP OriginalIrp);
+VOID NTAPI SetupModeSenseTransferPacket(TRANSFER_PACKET *Pkt, PKEVENT SyncEventPtr, PVOID ModeSenseBuffer, UCHAR ModeSenseBufferLen, UCHAR PageMode, PIRP OriginalIrp);
+VOID NTAPI SetupDriveCapacityTransferPacket(TRANSFER_PACKET *Pkt, PVOID ReadCapacityBuffer, ULONG ReadCapacityBufferLen, PKEVENT SyncEventPtr, PIRP OriginalIrp);
+PMDL NTAPI BuildDeviceInputMdl(PVOID Buffer, ULONG BufferLen);
+VOID NTAPI FreeDeviceInputMdl(PMDL Mdl);
+NTSTATUS NTAPI InitializeTransferPackets(PDEVICE_OBJECT Fdo);
+VOID NTAPI DestroyAllTransferPackets(PDEVICE_OBJECT Fdo);
+
+#include "debug.h"
+
+#endif /* _CLASSPNP_PCH_ */