46 DPRINT(
"FdcFdoStartDevice called\n");
53 ResourceListTranslated ==
NULL)
55 DPRINT1(
"No allocated resources sent to driver\n");
61 DPRINT1(
"Wrong number of allocated resources sent to driver\n");
65 if (
ResourceList->List[0].PartialResourceList.Version != 1 ||
66 ResourceList->List[0].PartialResourceList.Revision != 1 ||
67 ResourceListTranslated->List[0].PartialResourceList.Version != 1 ||
68 ResourceListTranslated->List[0].PartialResourceList.Revision != 1)
70 DPRINT1(
"Revision mismatch: %u.%u != 1.1 or %u.%u != 1.1\n",
73 ResourceListTranslated->List[0].PartialResourceList.Version,
74 ResourceListTranslated->List[0].PartialResourceList.Revision);
80 PartialDescriptor = &
ResourceList->List[0].PartialResourceList.PartialDescriptors[
i];
83 switch (PartialDescriptor->
Type)
86 DPRINT(
"Port: 0x%lx (%lu)\n",
87 PartialDescriptor->
u.
Port.Start.u.LowPart,
88 PartialDescriptor->
u.
Port.Length);
89 if (PartialDescriptor->
u.
Port.Length >= 6)
94 DPRINT(
"Interrupt: Level %lu Vector %lu\n",
110 DPRINT(
"Dma: Channel %lu\n",
111 PartialDescriptor->
u.
Dma.Channel);
130 ULONG ControllerNumber,
133 ULONG PeripheralNumber,
147 DPRINT(
"FdcFdoConfigCallback() called\n");
163 ControllerFound =
TRUE;
168 if (ControllerFound ==
FALSE)
213 DPRINT(
"Detected %lu floppy drives!\n",
230 L"FDC\\GENERIC_FLOPPY_DRIVE");
267 ULONG PeripheralNumber)
291 WCHAR DeviceNameBuffer[80];
298 DPRINT(
"FdcFdoQueryBusRelations() called\n");
316 if (Relations ==
NULL)
333 DPRINT(
"Device name: %S\n", DeviceNameBuffer);
352 DPRINT(
"PDO created: %S\n", DeviceNameBuffer);
363 PdoDeviceExtension->
DriveInfo = DriveInfo;
367 Pdo->Flags &= ~DO_DEVICE_INITIALIZING;
371 L"FDC\\GENERIC_FLOPPY_DRIVE");
430 *DeviceRelations = Relations;
434 if (Relations !=
NULL)
461 DPRINT(
" IRP_MN_START_DEVICE received\n");
481 DPRINT(
" IRP_MN_QUERY_REMOVE_DEVICE\n");
485 DPRINT(
" IRP_MN_REMOVE_DEVICE received\n");
489 DPRINT(
" IRP_MN_CANCEL_REMOVE_DEVICE\n");
493 DPRINT(
" IRP_MN_STOP_DEVICE received\n");
497 DPRINT(
" IRP_MN_QUERY_STOP_DEVICE received\n");
501 DPRINT(
" IRP_MN_CANCEL_STOP_DEVICE\n");
505 DPRINT(
" IRP_MN_QUERY_DEVICE_RELATIONS\n");
510 DPRINT(
" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / BusRelations\n");
516 DPRINT(
" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / RemovalRelations\n");
520 DPRINT(
" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / Unknown type 0x%lx\n",
527 DPRINT(
" IRP_MN_SURPRISE_REMOVAL received\n");
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define FILE_DEVICE_SECURE_OPEN
_In_ PCHAR _In_ ULONG DeviceNumber
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
struct _FDO_DEVICE_EXTENSION * PFDO_DEVICE_EXTENSION
struct _PDO_DEVICE_EXTENSION * PPDO_DEVICE_EXTENSION
_In_ PIO_STACK_LOCATION IrpSp
#define ExAllocatePool(type, size)
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
struct _CM_FULL_RESOURCE_DESCRIPTOR * PCM_FULL_RESOURCE_DESCRIPTOR
#define CmResourceTypeDma
#define CmResourceTypeDeviceSpecific
enum _INTERFACE_TYPE INTERFACE_TYPE
#define CmResourceTypePort
#define CmResourceTypeInterrupt
NTSTATUS DuplicateUnicodeString(IN ULONG Flags, IN PCUNICODE_STRING SourceString, OUT PUNICODE_STRING DestinationString)
DRIVER_DISPATCH ForwardIrpAndForget
NTSTATUS NTAPI IoQueryDeviceDescription(_In_opt_ PINTERFACE_TYPE BusType, _In_opt_ PULONG BusNumber, _In_opt_ PCONFIGURATION_TYPE ControllerType, _In_opt_ PULONG ControllerNumber, _In_opt_ PCONFIGURATION_TYPE PeripheralType, _In_opt_ PULONG PeripheralNumber, _In_ PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, _In_opt_ PVOID Context)
Reads and returns Hardware information from the appropriate hardware registry key.
#define FILE_DEVICE_MASS_STORAGE
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define IRP_MN_SURPRISE_REMOVAL
#define IoSkipCurrentIrpStackLocation(Irp)
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)
#define IoCompleteRequest
BOOLEAN NTAPI IoForwardIrpSynchronously(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define STATUS_NO_MORE_ENTRIES
#define STATUS_REVISION_MISMATCH
NTSTATUS PciCreateInstanceIDString(PUNICODE_STRING InstanceID, PPCI_DEVICE Device)
NTSTATUS PciCreateDeviceDescriptionString(PUNICODE_STRING DeviceDescription, PPCI_DEVICE Device)
NTSTATUS PciCreateCompatibleIDsString(PUNICODE_STRING CompatibleIDs, PPCI_DEVICE Device)
NTSTATUS PciCreateHardwareIDsString(PUNICODE_STRING HardwareIDs, PPCI_DEVICE Device)
NTSTATUS PciCreateDeviceLocationString(PUNICODE_STRING DeviceLocation, PPCI_DEVICE Device)
enum _CONFIGURATION_TYPE CONFIGURATION_TYPE
NTSTATUS NTAPI FdcFdoPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static NTSTATUS FdcFdoStartDevice(IN PDEVICE_OBJECT DeviceObject, IN PCM_RESOURCE_LIST ResourceList, IN PCM_RESOURCE_LIST ResourceListTranslated)
static NTSTATUS FdcFdoQueryBusRelations(IN PDEVICE_OBJECT DeviceObject, OUT PDEVICE_RELATIONS *DeviceRelations)
static NTSTATUS NTAPI FdcFdoConfigCallback(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)
PDEVICE_OBJECT DeviceObject
UCHAR StepRateHeadUnloadTime
UCHAR FormatFillCharacter
CM_PARTIAL_RESOURCE_LIST PartialResourceList
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392::@394 Port
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392::@398 Dma
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392::@395 Interrupt
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
DRIVE_INFO DriveInfo[MAX_DRIVES_PER_CONTROLLER]
PDEVICE_OBJECT Objects[1]
struct _CONTROLLER_INFO * ControllerInfo
PDEVICE_OBJECT DeviceObject
CM_FLOPPY_DEVICE_DATA FloppyDeviceData
COMMON_DEVICE_EXTENSION Common
CONTROLLER_INFO ControllerInfo
union _IO_STACK_LOCATION::@1583 Parameters
struct _IO_STACK_LOCATION::@3982::@4007 QueryDeviceRelations
struct _IO_STACK_LOCATION::@3982::@4019 StartDevice
UNICODE_STRING InstanceId
UNICODE_STRING DeviceDescription
UNICODE_STRING HardwareIds
UNICODE_STRING DeviceLocation
COMMON_DEVICE_EXTENSION Common
UNICODE_STRING CompatibleIds
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_OBJECT_NAME_COLLISION
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_ WDFDRIVER _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT Pdo
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING InstanceID
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
struct _CM_FLOPPY_DEVICE_DATA * PCM_FLOPPY_DEVICE_DATA
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
#define IRP_MN_CANCEL_STOP_DEVICE
#define IRP_MN_START_DEVICE
@ IoQueryDeviceConfigurationData
#define IRP_MN_REMOVE_DEVICE
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IRP_MN_QUERY_STOP_DEVICE
struct _DEVICE_RELATIONS DEVICE_RELATIONS
#define IRP_MN_CANCEL_REMOVE_DEVICE
#define IRP_MN_STOP_DEVICE
#define IRP_MN_QUERY_REMOVE_DEVICE
#define ObReferenceObject