You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
9.8 KiB
163 lines
9.8 KiB
#include <windows.h>
|
|
|
|
#include <ntverp.h>
|
|
|
|
#define VER_FILETYPE VFT_DLL
|
|
#define VER_FILESUBTYPE VFT2_UNKNOWN
|
|
#define VER_FILEDESCRIPTION_STR "Cyclom-Y Enumerator Driver"
|
|
#define VER_INTERNALNAME_STR "cyclom-y.sys"
|
|
#define VER_ORIGINALFILENAME_STR "cyclom-y.sys"
|
|
#define VER_LEGALCOPYRIGHT_YEARS "1996-2001"
|
|
#define VER_LEGALCOPYRIGHT_STR "Copyright (C) Cyclades Corp. " VER_LEGALCOPYRIGHT_YEARS
|
|
#define VER_FILEVERSION 1,0,22,0
|
|
#define VER_FILEVERSION_STR "1.0.22.0"
|
|
|
|
#include "common.ver"
|
|
|
|
#include "log.rc"
|
|
|
|
|
|
// History
|
|
//
|
|
// 1.0.22.0 07/06/01 Fix from DDK RC1: IoMarkIrpPending called when
|
|
// Irp->PendingReturned set in the IoCompletion routine of Device
|
|
// Power Irp.
|
|
// 1.0.19.0 04/27/01 _WIN64 code removed. UINumber is always set to 0xFFFFFFFF
|
|
// when IoGetDeviceProperty fails.
|
|
// 1.0.18.0 04/25/01 DeviceData->IsPci was not being set in
|
|
// _WIN64.
|
|
// 1.0.17.0 04/25/01 Delete #defines for VER_COMPANYNAME_STR,
|
|
// VER_PRODUCTNAME_STR, VER_PRODUCTVERSION and
|
|
// VER_PRODUCTVERSION_STR to fix compilation
|
|
// warnings.
|
|
// Fix for Driver Verifier: dispatch handler was returning a
|
|
// status that was inconsistent with the Irp's
|
|
// IoStatus.Status field (IoStatus.Status = 00000002,
|
|
// returned = 00000000) in IRP_MN_REMOVE_DEVICE.
|
|
// Cyclomy_KdPrint in AddDevice replaced by
|
|
// Cyclomy_KdPrint_Def.
|
|
// Error status logged in CyyLogError in AddDevice.
|
|
// 1.0.16.0 04/18/01 UINumber hardcoded to 0xFFFFFFFF for _WIN64
|
|
// because IoGetDeviceProperty to get UINumber
|
|
// is failing in 64-bit.
|
|
// 1.0.15.0 04/17/01 STATUS_PENDING returned from Cyclomy_FDO_Power
|
|
// instead of status from PoCallDriver. That's how
|
|
// Eliyas Yakub said we should do.
|
|
// 1.0.14.0 04/16/01 Fix for Driver Verifier: IoMarkIrpPending required
|
|
// when STATUS_PENDING returned.
|
|
// 1.0.13.0 04/02/01 Just version change.
|
|
// 1.0.12.0 03/19/01 Just version change.
|
|
// 1.0.11.0 03/14/01 Changes for serenum from DDK 2416 (Whistler pre-Beta2)
|
|
// to DDK 2446 (Whistler pre-Beta2) applied.
|
|
// 1.0.10.0 03/12/01 Changes for serenum from DDK 2195 (Windows 2000) to DDK
|
|
// 2416 (Whistler pre-Beta2) applied.
|
|
// PdoData->HardwareIDs and PdoData->CompIDs freed using
|
|
// CyclomyFreeUnicodeString instead RtlFreeUnicodeString.
|
|
// PdoData->InstanceIDs and PdoData->DevDesc were not being
|
|
// freed, so this was fixed.
|
|
// Messages logged in case of AddDevice failure.
|
|
// 1.0.9.0 03/12/01 Just version change.
|
|
// 1.0.8.0 03/02/01 Child PDO BusNumber was changed from 0 to PCI UINumber
|
|
// (slot number). This BusNumber is used by cyyport AddDevice.
|
|
// 1.0.7.0 02/26/01 Just version change.
|
|
// 1.0.6.0 02/16/01 Just version change.
|
|
// 1.0.5.0 02/15/01 Debug message changes.
|
|
// 1.0.4.0 02/08/01 power.c: Cyclomy_FDO_Power with System IRP_MN_SET_POWER
|
|
// request changed to return STATUS_PENDING, set an
|
|
// IoCompletion routine, and request Device power Irp in
|
|
// the IoCompletion routine.
|
|
// DDK 2416 serenum power.c changes applied to power.c.
|
|
// 1.0.3.0 02/01/01 Just version change.
|
|
// 1.0.2.0 01/30/01 Creation of Cyclomy_Delay().
|
|
// 01/25/01 Driver built with Whistler DDK 2416.
|
|
// Reset board and reset chip is no longer done by cyyport. They are
|
|
// called during FDO IRP_MN_START_DEVICE and FDO IRP_MN_SET_POWER
|
|
// to D0. Cyclomy_EnableInterruptInPLX created. Files changed: pnp.c,
|
|
// power.c and cyclom-y.h.
|
|
// 1.0.1.0 12/06/00 Driver built with Whistler DDK (Beta1).
|
|
// 1.0.0.29 09/20/00 Set DeviceState for PowerSystemSleeping1, PowerSystemSleeping2 and
|
|
// PowerSystemSleeping3 to PowerDeviceD3 to fix hang in Standby.
|
|
// 1.0.0.28 08/29/00 Replace "break" by a "return" in FDO IRP_MN_CANCEL_REMOVE_DEVICE.
|
|
// This bug could cause crash.
|
|
// 1.0.0.27 07/14/00 SER_DEFAULT_DEBUG_OUTPUT_LEVEL set to 0.
|
|
// 1.0.0.23 06/23/00 Name "Cyclom-Y Bus Driver" changed to "Cyclom-Y Enumerator Driver".
|
|
// 1.0.0.22 06/20/00 Added error logging.
|
|
// 1.0.0.21 06/15/00 Added support to IRP_MN_SURPRISE_REMOVAL.
|
|
// Removed and Started flags in the Extension replaced by
|
|
// DevicePnPState. Cyclomy_FDO_Power just passes IRPs to lower
|
|
// drivers if DevicePnPState != Started, instead of
|
|
// Started != TRUE. This means that Cyclomy_FDO_Power passes
|
|
// IRPs without handling when DevicePnPState is StopPending,
|
|
// Stopped, RemovePending and SurprisePending.
|
|
// Removed support to IRP_MJ_INTERNAL_DEVICE_CONTROL.
|
|
// Removed initialization of all DriverObject->MajorFunction[]
|
|
// with Cyclomy_DispatchPassThrough, the only exception is
|
|
// IRP_MJ_SYSTEM_CONTROL. For IRP_MJ_CREATE and IRP_MJ_CLOSE,
|
|
// IRP's are completed instead of sent to lower drivers.
|
|
// Code cleanup.
|
|
// 1.0.0.20 06/05/00 Buffers allocated with correct tag.
|
|
// 1.0.0.16 05/12/00 Save number of ports to the Registry, so that Property Page
|
|
// code can retrieve it.
|
|
// Print the child PDO's during QUERY_DEVICE_RELATIONS if
|
|
// SER_DBG_PNP_TRACE is enabled.
|
|
// 1.0.0.15 04/21/00 Cyclomy_KdPrint_Def added for Cyclomy_IoCtl and
|
|
// Cyclomy_InternIoCtl.
|
|
// 1.0.0.14 -------- None.
|
|
// 1.0.0.13 03/31/00 Re-compiled becaused cd1400.h changed for cyyport.
|
|
// 1.0.0.12 03/29/00 Cyclomy_ReenumerateDevices fixed to indicate that devices
|
|
// are not Attached when actual numPorts < FdoData->NumPDOs.
|
|
// Cyclomy_PnPRemove() doesn't need to reset PdoData->Attached
|
|
// because PdoData will be deleted.
|
|
// 03/03/00 Add changes from serenum build 1946 to 2000:
|
|
// - DeviceData->SystemWake and DeviceWake initialized to
|
|
// PowerSystemUnspecified and PowerDeviceUnspecified in
|
|
// Cyclomy_AddDevice.
|
|
// - nameLength returned by IoGetDeviceProperty checked for
|
|
// non zero before returned status is checked.
|
|
// - Call IoCompleteRequest in case status is
|
|
// STATUS_UNSUCCESSFUL in FDO IRP_MN_QUERY_STOP_DEVICE.
|
|
// - FDO IRP_MN_QUERY_DEVICE_RELATIONS calls IoCompleteRequest
|
|
// in case of failure to allocate buffer for relations.
|
|
// - Handle FDO IRP_MN_QUERY_CAPABILITIES to get SystemWake
|
|
// and DeviceWake from lower drivers.
|
|
// - Create SystemWake and DeviceWake fields in FDO_DEVICE_DATA.
|
|
// - PDO IRP_MN_QUERY_CAPABILITIES sets SystemWake and
|
|
// DeviceWake with values returned from FDO
|
|
// IRP_MN_QUERY_CAPABILITIES.
|
|
// - PDO IRP_MN_QUERY_ID sets status in each case of switch
|
|
// instead of before switch.
|
|
// - Cyclomy_InternIoCtl just passes to lower drivers any
|
|
// non recognized IoControlCode instead of returning
|
|
// STATUS_INVALID_PARAMETER.
|
|
// Copyright updated to 2000.
|
|
// 1.0.0.11 03/01/00 Cyclomy_FDO_Power should change DevicePowerState of itself
|
|
// instead of DevicePowerState of child devices during
|
|
// IRP_MN_SET_POWER SystemPowerState.
|
|
// 1.0.0.10 02/29/00 Use the latest cd1400.h from cyyport driver, modified on
|
|
// 02/28/00.
|
|
// 1.0.0.9 02/25/00 Fix FDO IRP_MN_CANCEL_STOP_DEVICE: wait for lower
|
|
// drivers to process this IRP before returning status.
|
|
// Fix FDO IRP_MN_REMOVE_DEVICE: set Irp->IoStatus.Status
|
|
// before calling lower drivers.
|
|
// Use "event" local variable instead of allocating
|
|
// pResFiltEvent from NonPagedPool during
|
|
// IRP_MN_FILTER_RESOURCE_REQUIREMENTS.
|
|
// 1.0.0.8 01/13/00 cyclom-y is getting BreakOnEntry and DebugLevel from the
|
|
// Registry.
|
|
// 12/23/99 Fix BugCheck 0xC1 when "Special Pool" Verifier is enabled.
|
|
// The problem was that IRP_MN_QUERY_DEVICE_TEXT was
|
|
// allocating DevDesc->Length, but writing up to
|
|
// DevDesc->MaximumLength.
|
|
// Cosmetic changes in the src code.
|
|
// 1.0.0.7 10/14/99 Allow multiple ISA boards installation. For this, change
|
|
// IRP_MN_FILTER_RESOURCE_REQUIREMENTS to not set memory
|
|
// ShareDisposition as Shared, and to only keep IRP shared
|
|
// if the board is PCI.
|
|
// 1.0.0.6 10/11/99 pnp.c #if 0 in IRP_MN_QUERY_RESOURCE_REQUIREMENTS and in
|
|
// IRP_MN_QUERY_RESOURCES; IRP_MN_START_DEVICE of the PDO
|
|
// will save the REG_RESOURCE_LIST of the board to the
|
|
// Registry; cyclom-y.h with new fields in the PDO extension.
|
|
// 1.0.0.6 10/07/99 enum.c Remove extra space from the device Description.
|
|
// 1.0.0.5 10/07/99 New child Hardware Id's, Instances and Descriptions;
|
|
// cyclom-y.h, cyyhw.h, enum.c, pnp.c, do.bat changed.
|
|
// 1.0.0.4 09/20/99 Support to ISA boards.
|