/*++ Copyright (c) 2002 Microsoft Corporation Module Name: extern.h Abstract: External definitions for intermodule functions. Revision History: --*/ #ifndef _SDBUS_EXTERN_H_ #define _SDBUS_EXTERN_H_ // // Global data referenced by the driver // extern ULONG SdbusGlobalFlags; extern ULONG SdbusDebugMask; extern PDEVICE_OBJECT FdoList; extern GLOBAL_REGISTRY_INFORMATION GlobalRegistryInfo[]; extern ULONG GlobalInfoCount; extern const PCI_CONTROLLER_INFORMATION PciControllerInformation[]; extern const PCI_VENDOR_INFORMATION PciVendorInformation[]; extern KEVENT SdbusDelayTimerEvent; extern KSPIN_LOCK SdbusGlobalLock; extern ULONG EventDpcDelay; extern ULONG SdbusPowerPolicy; extern const UCHAR SdbusCmdResponse[]; extern const UCHAR SdbusACmdResponse[]; extern SD_FUNCTION_BLOCK ToshibaSupportFns; // // Irp dispatch routines // VOID SdbusInitDeviceDispatchTable( IN PDRIVER_OBJECT DriverObject ); NTSTATUS SdbusFdoPnpDispatch( IN PDEVICE_OBJECT Fdo, IN PIRP Irp ); NTSTATUS SdbusPdoPnpDispatch( IN PDEVICE_OBJECT Pdo, IN PIRP Irp ); NTSTATUS SdbusOpenCloseDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS SdbusCleanupDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS SdbusFdoDeviceControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS SdbusPdoDeviceControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS SdbusPdoInternalDeviceControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS SdbusFdoSystemControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS SdbusPdoSystemControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); // // enumeration routines // NTSTATUS SdbusEnumerateDevices( IN PDEVICE_OBJECT Fdo, IN PIRP Irp ); NTSTATUS SdbusGetCardConfigData( IN PFDO_EXTENSION FdoExtension, OUT PSD_CARD_DATA *pCardData ); VOID SdbusCleanupCardData( IN PSD_CARD_DATA CardData ); UCHAR SdbusReadCIAChar( IN PFDO_EXTENSION FdoExtension, IN ULONG ciaPtr ); VOID SdbusWriteCIAChar( IN PFDO_EXTENSION FdoExtension, IN ULONG ciaPtr, IN UCHAR data ); // // controller support routines // NTSTATUS SdbusAddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo ); VOID SdbusCleanupPdo( IN PDEVICE_OBJECT Pdo ); VOID SdbusActivateSocket( IN PDEVICE_OBJECT Fdo, IN PSDBUS_ACTIVATE_COMPLETION_ROUTINE CompletionRoutine, IN PVOID Context ); // // Interface routines // NTSTATUS SdbusPdoQueryInterface( IN PDEVICE_OBJECT Pdo, IN OUT PIRP Irp ); NTSTATUS SdbusGetInterface( IN PDEVICE_OBJECT Pdo, IN CONST GUID *pGuid, IN USHORT sizeofInterface, OUT PINTERFACE pInterface ); NTSTATUS SdbusGetSetPciConfigData( IN PDEVICE_OBJECT PciPdo, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length, IN BOOLEAN Read ); // // Interrupt routines // BOOLEAN SdbusInterrupt( IN PKINTERRUPT InterruptObject, IN PVOID Context ); VOID SdbusInterruptDpc( IN PKDPC Dpc, IN PDEVICE_OBJECT DeviceObject, IN PVOID SystemContext1, IN PVOID SystemContext2 ); VOID SdbusDpc( IN PKDPC Dpc, IN PDEVICE_OBJECT DeviceObject, IN PVOID SystemContext1, IN PVOID SystemContext2 ); VOID SdbusEventWorkItemProc( IN PDEVICE_OBJECT Fdo, IN PVOID Context ); // // Registry routines // NTSTATUS SdbusLoadGlobalRegistryValues( VOID ); NTSTATUS SdbusGetControllerRegistrySettings( IN OUT PFDO_EXTENSION FdoExtension ); #endif // _SDBUS_EXTERN_H_