87 TRACE_(FLOPPY,
"MotorStopDpcFunc called\n");
115 TRACE_(FLOPPY,
"StartMotor called\n");
120 INFO_(FLOPPY,
"StartMotor: motor turner-offer is already running; waiting for it\n");
122 INFO_(FLOPPY,
"StartMotor: wait satisfied\n");
129 WARN_(FLOPPY,
"StartMotor(): warning: HwTurnOnMotor failed\n");
150 TRACE_(FLOPPY,
"StopMotor called\n");
209 TRACE_(FLOPPY,
"CreateClose called\n");
245 WARN_(FLOPPY,
"FIXME: UN-HARDCODE DATA RATE\n");
248 WARN_(FLOPPY,
"Recalibrate: HwSetDataRate failed\n");
260 for(
i = 0;
i < 2;
i++)
266 WARN_(FLOPPY,
"Recalibrate: HwRecalibrate returned error\n");
276 WARN_(FLOPPY,
"Recalibrate: HwRecalibrateResult returned error\n");
312 TRACE_(FLOPPY,
"ResetChangeFlag called\n");
326 WARN_(FLOPPY,
"ResetChangeFlag(): HwSeek failed; returning STATUS_IO_DEVICE_ERROR\n");
335 WARN_(FLOPPY,
"ResetChangeFlag(): HwSenseInterruptStatus failed; bailing out\n");
343 WARN_(FLOPPY,
"ResetChangeFlag(): HwSeek failed; returning STATUS_IO_DEVICE_ERROR\n");
352 WARN_(FLOPPY,
"ResetChangeFlag(): HwSenseInterruptStatus #2 failed; bailing\n");
360 WARN_(FLOPPY,
"ResetChangeFlag(): HwDiskChanged failed; returning STATUS_IO_DEVICE_ERROR\n");
389 TRACE_(FLOPPY,
"unloading\n");
421 WARN_(FLOPPY,
"unload: warning: HwPowerOff failed\n");
434 ULONG ControllerNumber,
437 ULONG PeripheralNumber,
491 TRACE_(FLOPPY,
"ConfigCallback called with ControllerNumber %d\n", ControllerNumber);
522 WARN_(FLOPPY,
"HalTranslateBusAddress failed; returning\n");
614 TRACE_(FLOPPY,
"ISR called\n");
656 TRACE_(FLOPPY,
"DpcForIsr called\n");
675 UCHAR HeadUnloadTime;
677 UCHAR ControllerVersion;
682 TRACE_(FLOPPY,
"InitController called with Controller 0x%p\n", ControllerInfo);
687 WARN_(FLOPPY,
"InitController: unable to configure controller\n");
699 WARN_(FLOPPY,
"InitController: unable to reset controller\n");
703 INFO_(FLOPPY,
"InitController: waiting for initial interrupt\n");
711 INFO_(FLOPPY,
"InitController: Sensing interrupt %d\n",
i);
715 WARN_(FLOPPY,
"InitController: Unable to clear interrupt 0x%x\n",
i);
720 INFO_(FLOPPY,
"InitController: done sensing interrupts\n");
728 WARN_(FLOPPY,
"InitController: unable to set up implied seek\n");
733 INFO_(FLOPPY,
"InitController: implied seeks set!\n");
760 INFO_(FLOPPY,
"InitController: enhanced version not supported; disabling implied seeks\n");
766 WARN_(FLOPPY,
"FIXME: Figure out speed\n");
771 INFO_(FLOPPY,
"InitController: setting data rate\n");
776 WARN_(FLOPPY,
"InitController: unable to set data rate\n");
780 INFO_(FLOPPY,
"InitController: issuing specify command to controller\n");
785 WARN_(FLOPPY,
"InitController: unable to specify options\n");
801 INFO_(FLOPPY,
"InitController: recalibrating drive 0x%x on controller 0x%p\n",
i, ControllerInfo);
805 INFO_(FLOPPY,
"InitController: done initializing; returning STATUS_SUCCESS\n");
841 WARN_(FLOPPY,
"ReportToMountMgr: Can't get MountMgr pointers %lx\n",
Status);
853 WARN_(FLOPPY,
"ReportToMountMgr: Allocation of mountTarget failed\n");
878 WARN_(FLOPPY,
"ReportToMountMgr: Allocation of irp failed\n");
894 INFO_(FLOPPY,
"Reported to the MountMgr: %lx\n",
Status);
940 WARN_(FLOPPY,
"AddControllers: failed to get controller info from registry\n");
958 INFO_(FLOPPY,
"Connecting interrupt %d to controller%d (object 0x%p)\n",
gControllerInfo[
i].MappedVector,
966 WARN_(FLOPPY,
"AddControllers: unable to connect interrupt\n");
985 WARN_(FLOPPY,
"AddControllers: unable to allocate an adapter object\n");
993 WARN_(FLOPPY,
"AddControllers(): Unable to set up controller %d - initialization failed\n",
i);
1008 INFO_(FLOPPY,
"AddControllers(): Configuring drive %d on controller %d\n",
i,
j);
1024 DriveNumber = (
UCHAR)(
i*4 +
j);
1033 WARN_(FLOPPY,
"AddControllers: unable to register a Device object\n");
1038 INFO_(FLOPPY,
"AddControllers: New device: %S (0x%p)\n",
1083 INFO_(FLOPPY,
"AddControllers: --------------------------------------------> finished adding controllers\n");
1104 TRACE_(FLOPPY,
"SignalMediaChanged called\n");
1112 Irp->IoStatus.Information = 0;
1119 Irp->IoStatus.Information = 0;
1158 INFO_(FLOPPY,
"QueueThread terminating\n");
1162 INFO_(FLOPPY,
"QueueThread: servicing an IRP\n");
1169 INFO_(FLOPPY,
"QueueThread: IRP queue empty\n");
1180 switch(
Stack->MajorFunction)
1192 WARN_(FLOPPY,
"QueueThread(): Unrecognized irp: mj: 0x%x\n",
Stack->MajorFunction);
1194 Irp->IoStatus.Information = 0;
1269 WARN_(FLOPPY,
"Unable to create system thread; failing init\n");
1275 WARN_(FLOPPY,
"Unable to reference returned thread handle; failing init\n");
_In_ PIO_CSQ_INSERT_IRP CsqInsertIrp
NTSTATUS NTAPI WaitForControllerInterrupt(PCONTROLLER_INFO ControllerInfo, PLARGE_INTEGER Timeout)
#define DO_DEVICE_INITIALIZING
#define KeGetCurrentIrql()
FORCEINLINE VOID IoInitializeDpcRequest(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIO_DPC_ROUTINE DpcRoutine)
NTSTATUS NTAPI HwSetDataRate(PCONTROLLER_INFO ControllerInfo, UCHAR DataRate)
static KEVENT QueueThreadTerminate
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@379::@381 Port
#define CmResourceTypeDeviceSpecific
return STATUS_NOT_SUPPORTED
#define THREAD_ALL_ACCESS
#define STATUS_NO_MEDIA_IN_DEVICE
INTERFACE_TYPE InterfaceType
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL _In_ KINTERRUPT_MODE InterruptMode
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
VOID NTAPI StopMotor(PCONTROLLER_INFO ControllerInfo)
enum _INTERFACE_TYPE INTERFACE_TYPE
NTKERNELAPI PIRP NTAPI IoCsqRemoveNextIrp(_Inout_ PIO_CSQ Csq, _In_opt_ PVOID PeekContext)
IoCsqRemoveNextIrp - Removes the next IRP from the queue.
static BOOLEAN NTAPI Isr(PKINTERRUPT Interrupt, PVOID ServiceContext)
PCONFIGURATION_INFORMATION NTAPI IoGetConfigurationInformation(VOID)
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
#define UNREFERENCED_PARAMETER(P)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
NTSTATUS NTAPI HwPowerOff(PCONTROLLER_INFO ControllerInfo)
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@379::@382 Interrupt
#define IoIsErrorUserInduced(Status)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
#define MAX_DRIVES_PER_CONTROLLER
static ULONG gNumberOfControllers
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
NTSTATUS NTAPI HwRecalibrateResult(PCONTROLLER_INFO ControllerInfo)
VOID NTAPI ReadWritePassive(PDRIVE_INFO DriveInfo, PIRP Irp)
NTSTATUS NTAPI HwReset(PCONTROLLER_INFO ControllerInfo)
NTSTATUS NTAPI IoGetDeviceObjectPointer(IN PUNICODE_STRING ObjectName, IN ACCESS_MASK DesiredAccess, OUT PFILE_OBJECT *FileObject, OUT PDEVICE_OBJECT *DeviceObject)
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
_In_ PIO_CSQ_INSERT_IRP _In_ PIO_CSQ_REMOVE_IRP _In_ PIO_CSQ_PEEK_NEXT_IRP _In_ PIO_CSQ_ACQUIRE_LOCK _In_ PIO_CSQ_RELEASE_LOCK CsqReleaseLock
DRIVER_INITIALIZE DriverEntry
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
#define STATUS_VERIFY_REQUIRED
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG _Out_ PPHYSICAL_ADDRESS TranslatedAddress
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
struct _CONTROLLER_INFO * ControllerInfo
static int Link(const char **args)
#define MOUNTMGR_DEVICE_NAME
#define CmResourceTypePort
#define DEVICE_DESCRIPTION_VERSION
#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION
#define STATUS_IO_DEVICE_ERROR
KSEMAPHORE QueueSemaphore
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
PDEVICE_OBJECT DeviceObject
CM_PARTIAL_RESOURCE_LIST PartialResourceList
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
PADAPTER_OBJECT AdapterObject
#define IO_DISK_INCREMENT
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI DeviceIoctlPassive(PDRIVE_INFO DriveInfo, PIRP Irp)
NTSTATUS NTAPI IoConnectInterrupt(OUT PKINTERRUPT *InterruptObject, IN PKSERVICE_ROUTINE ServiceRoutine, IN PVOID ServiceContext, IN PKSPIN_LOCK SpinLock, IN ULONG Vector, IN KIRQL Irql, IN KIRQL SynchronizeIrql, IN KINTERRUPT_MODE InterruptMode, IN BOOLEAN ShareVector, IN KAFFINITY ProcessorEnableMask, IN BOOLEAN FloatingSave)
DRIVER_DISPATCH DeviceIoctl
#define FILE_REMOVABLE_MEDIA
struct _CM_FULL_RESOURCE_DESCRIPTOR * PCM_FULL_RESOURCE_DESCRIPTOR
static NTSTATUS NTAPI InitController(PCONTROLLER_INFO ControllerInfo)
_In_ PVOID _In_ ULONG Event
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@379::@385 Dma
VOID NTAPI IoDisconnectInterrupt(PKINTERRUPT InterruptObject)
#define IoCompleteRequest
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
NTHALAPI ULONG NTAPI HalGetInterruptVector(INTERFACE_TYPE, ULONG, ULONG, ULONG, PKIRQL, PKAFFINITY)
_In_ PIO_CSQ_INSERT_IRP _In_ PIO_CSQ_REMOVE_IRP _In_ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
static VOID NTAPI MotorStopDpcFunc(PKDPC UnusedDpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
NTSTATUS NTAPI HwTurnOnMotor(PDRIVE_INFO DriveInfo)
static VOID NTAPI Unload(PDRIVER_OBJECT DriverObject)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
_In_ PIO_CSQ_INSERT_IRP _In_ PIO_CSQ_REMOVE_IRP CsqRemoveIrp
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
NTSTATUS NTAPI IoQueryDeviceDescription(PINTERFACE_TYPE BusType OPTIONAL, PULONG BusNumber OPTIONAL, PCONFIGURATION_TYPE ControllerType OPTIONAL, PULONG ControllerNumber OPTIONAL, PCONFIGURATION_TYPE PeripheralType OPTIONAL, PULONG PeripheralNumber OPTIONAL, PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, PVOID Context)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
VOID NTAPI KeInitializeSemaphore(IN PKSEMAPHORE Semaphore, IN LONG Count, IN LONG Limit)
#define NT_SUCCESS(StatCode)
#define STATUS_NO_SUCH_DEVICE
_In_ PIO_CSQ_INSERT_IRP _In_ PIO_CSQ_REMOVE_IRP _In_ PIO_CSQ_PEEK_NEXT_IRP _In_ PIO_CSQ_ACQUIRE_LOCK _In_ PIO_CSQ_RELEASE_LOCK _In_ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
#define ObDereferenceObject
IO_DPC_ROUTINE * PIO_DPC_ROUTINE
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
#define IoDeassignArcName
struct _CONTROLLER_INFO * PCONTROLLER_INFO
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID ServiceContext
NTSTATUS NTAPI KeWaitForMultipleObjects(IN ULONG Count, IN PVOID Object[], IN WAIT_TYPE WaitType, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL, OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL)
static DRIVER_DISPATCH CreateClose
#define FILE_READ_ATTRIBUTES
NTSTATUS NTAPI HwSenseInterruptStatus(PCONTROLLER_INFO ControllerInfo)
#define STATUS_UNSUCCESSFUL
static PVOID QueueThreadObject
static VOID NTAPI QueueThread(PVOID Context)
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
POBJECT_TYPE PsThreadType
CM_FLOPPY_DEVICE_DATA FloppyDeviceData
KINTERRUPT_MODE InterruptMode
#define ExAllocatePool(type, size)
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@379 u
UCHAR FormatFillCharacter
NTSTATUS NTAPI HwConfigure(PCONTROLLER_INFO ControllerInfo, BOOLEAN EIS, BOOLEAN EFIFO, BOOLEAN POLL, UCHAR FIFOTHR, UCHAR PRETRK)
DISK_GEOMETRY DiskGeometry
int _cdecl swprintf(const WCHAR *,...)
DRIVER_DISPATCH(nfs41_FsdDispatch)
BOOLEAN NTAPI HalTranslateBusAddress(IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN PHYSICAL_ADDRESS BusAddress, IN OUT PULONG AddressSpace, OUT PPHYSICAL_ADDRESS TranslatedAddress)
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
NTSTATUS NTAPI HwDiskChanged(PDRIVE_INFO DriveInfo, PBOOLEAN DiskChanged)
NTSTATUS NTAPI ResetChangeFlag(PDRIVE_INFO DriveInfo)
NTSTATUS NTAPI HwRecalibrate(PDRIVE_INFO DriveInfo)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI HwGetVersion(PCONTROLLER_INFO ControllerInfo)
VOID NTAPI StartMotor(PDRIVE_INFO DriveInfo)
DRIVER_DISPATCH * PDRIVER_DISPATCH
UCHAR StepRateHeadUnloadTime
#define KeInitializeEvent(pEvt, foo, foo2)
#define STANDARD_RIGHTS_ALL
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define InitializeListHead(ListHead)
NTSTATUS NTAPI HwSeek(PDRIVE_INFO DriveInfo, UCHAR Cylinder)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define IoAssignArcName(_ArcName, _DeviceName)
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static CONTROLLER_INFO gControllerInfo[MAX_CONTROLLERS]
#define CmResourceTypeInterrupt
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
DRIVE_INFO DriveInfo[MAX_DRIVES_PER_CONTROLLER]
VOID NTAPI SignalMediaChanged(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PIRP NTAPI IoBuildDeviceIoControlRequest(IN ULONG IoControlCode, IN PDEVICE_OBJECT DeviceObject, IN PVOID InputBuffer, IN ULONG InputBufferLength, IN PVOID OutputBuffer, IN ULONG OutputBufferLength, IN BOOLEAN InternalDeviceIoControl, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
NTSTATUS NTAPI HwTurnOffMotor(PCONTROLLER_INFO ControllerInfo)
NTSTATUS NTAPI RWDetermineMediaType(PDRIVE_INFO DriveInfo, BOOLEAN OneShot)
struct _CM_FLOPPY_DEVICE_DATA * PCM_FLOPPY_DEVICE_DATA
static VOID NTAPI ReportToMountMgr(UCHAR ControlerId, UCHAR DriveId)
static NTSTATUS NTAPI ConfigCallback(PVOID Context, PUNICODE_STRING PathName, INTERFACE_TYPE BusType, ULONG BusNumber, PKEY_VALUE_FULL_INFORMATION *BusInformation, CONFIGURATION_TYPE ControllerType, ULONG ControllerNumber, PKEY_VALUE_FULL_INFORMATION *ControllerInformation, CONFIGURATION_TYPE PeripheralType, ULONG PeripheralNumber, PKEY_VALUE_FULL_INFORMATION *PeripheralInformation)
LONG NTAPI KeReadStateEvent(IN PKEVENT Event)
#define CM_RESOURCE_INTERRUPT_LATCHED
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
VOID NTAPI DpcForIsr(PKDPC UnusedDpc, PVOID Context, PVOID SystemArgument1, PVOID SystemArgument2)
#define RtlCopyMemory(Destination, Source, Length)
DRIVER_DISPATCH ReadWrite
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
static NTSTATUS NTAPI Recalibrate(PDRIVE_INFO DriveInfo)
NTKERNELAPI NTSTATUS NTAPI IoCsqInitialize(_Out_ PIO_CSQ Csq, _In_ PIO_CSQ_INSERT_IRP CsqInsertIrp, _In_ PIO_CSQ_REMOVE_IRP CsqRemoveIrp, _In_ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, _In_ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, _In_ PIO_CSQ_RELEASE_LOCK CsqReleaseLock, _In_ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp)
Set up a CSQ struct to initialize the queue.
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
#define FILE_FLOPPY_DISKETTE
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
_In_ PIO_CSQ_INSERT_IRP _In_ PIO_CSQ_REMOVE_IRP _In_ PIO_CSQ_PEEK_NEXT_IRP _In_ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock
#define DRSR_DSEL_500KBPS
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
NTSTATUS NTAPI HwSpecify(PCONTROLLER_INFO ControllerInfo, UCHAR HeadLoadTime, UCHAR HeadUnloadTime, UCHAR StepRateTime, BOOLEAN NonDma)
static BOOLEAN NTAPI AddControllers(PDRIVER_OBJECT DriverObject)
#define CmResourceTypeDma
WCHAR DeviceNameBuffer[MAX_DEVICE_NAME]
PADAPTER_OBJECT NTAPI HalGetAdapter(IN PDEVICE_DESCRIPTION DeviceDescription, OUT PULONG NumberOfMapRegisters)
#define IRP_MJ_DEVICE_CONTROL
_In_opt_ PVOID DeferredContext