48 DPRINT(
"FdcFdoStartDevice called\n");
55 ResourceListTranslated ==
NULL)
57 DPRINT1(
"No allocated resources sent to driver\n");
63 DPRINT1(
"Wrong number of allocated resources sent to driver\n");
67 if (
ResourceList->List[0].PartialResourceList.Version != 1 ||
68 ResourceList->List[0].PartialResourceList.Revision != 1 ||
69 ResourceListTranslated->List[0].PartialResourceList.Version != 1 ||
70 ResourceListTranslated->List[0].PartialResourceList.Revision != 1)
72 DPRINT1(
"Revision mismatch: %u.%u != 1.1 or %u.%u != 1.1\n",
75 ResourceListTranslated->List[0].PartialResourceList.Version,
76 ResourceListTranslated->List[0].PartialResourceList.Revision);
82 PartialDescriptor = &
ResourceList->List[0].PartialResourceList.PartialDescriptors[
i];
85 switch (PartialDescriptor->
Type)
88 DPRINT(
"Port: 0x%lx (%lu)\n",
89 PartialDescriptor->
u.
Port.Start.u.LowPart,
90 PartialDescriptor->
u.
Port.Length);
91 if (PartialDescriptor->
u.
Port.Length >= 6)
96 DPRINT(
"Interrupt: Level %lu Vector %lu\n",
112 DPRINT(
"Dma: Channel %lu\n",
113 PartialDescriptor->
u.
Dma.Channel);
132 ULONG ControllerNumber,
135 ULONG PeripheralNumber,
149 DPRINT(
"FdcFdoConfigCallback() called\n");
165 ControllerFound =
TRUE;
170 if (ControllerFound ==
FALSE)
215 DPRINT(
"Detected %lu floppy drives!\n",
232 L"FDC\\GENERIC_FLOPPY_DRIVE");
269 ULONG PeripheralNumber)
293 WCHAR DeviceNameBuffer[80];
300 DPRINT(
"FdcFdoQueryBusRelations() called\n");
318 if (Relations ==
NULL)
335 DPRINT(
"Device name: %S\n", DeviceNameBuffer);
354 DPRINT(
"PDO created: %S\n", DeviceNameBuffer);
365 PdoDeviceExtension->
DriveInfo = DriveInfo;
369 Pdo->Flags &= ~DO_DEVICE_INITIALIZING;
373 L"FDC\\GENERIC_FLOPPY_DRIVE");
432 *DeviceRelations = Relations;
436 if (Relations !=
NULL)
463 DPRINT(
" IRP_MN_START_DEVICE received\n");
483 DPRINT(
" IRP_MN_QUERY_REMOVE_DEVICE\n");
487 DPRINT(
" IRP_MN_REMOVE_DEVICE received\n");
491 DPRINT(
" IRP_MN_CANCEL_REMOVE_DEVICE\n");
495 DPRINT(
" IRP_MN_STOP_DEVICE received\n");
499 DPRINT(
" IRP_MN_QUERY_STOP_DEVICE received\n");
503 DPRINT(
" IRP_MN_CANCEL_STOP_DEVICE\n");
507 DPRINT(
" IRP_MN_QUERY_DEVICE_RELATIONS\n");
512 DPRINT(
" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / BusRelations\n");
518 DPRINT(
" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / RemovalRelations\n");
522 DPRINT(
" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / Unknown type 0x%lx\n",
529 DPRINT(
" IRP_MN_SURPRISE_REMOVAL received\n");
#define FILE_DEVICE_SECURE_OPEN
_In_ PCHAR _In_ ULONG DeviceNumber
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#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(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)
#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_NOT_SUPPORTED
#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)
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
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@387 Dma
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@383 Port
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@384 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
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
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
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#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