//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation // // File: devicecol.h // // Description: This header exposes support for device collections. // //-------------------------------------------------------------------------- typedef enum { CT_SAFE_REMOVAL_NOTIFICATION, CT_VETOED_REMOVAL_NOTIFICATION, CT_SURPRISE_REMOVAL_WARNING, CT_BLOCKED_DRIVER_NOTIFICATION, CT_CHILD_WITH_INVALID_ID_NOTIFICATION } COLLECTION_TYPE, *PCOLLECTION_TYPE; typedef struct { LIST_ENTRY Link; TCHAR DeviceInstanceId[MAX_DEVICE_ID_LEN+1]; PTSTR DeviceFriendlyName; ULONG Capabilities; GUID ClassGuid; } DEVICE_COLLECTION_ENTRY, *PDEVICE_COLLECTION_ENTRY; typedef struct { LIST_ENTRY DeviceListHead; INT NumDevices; BOOL DockInList; SP_CLASSIMAGELIST_DATA ClassImageList; } DEVICE_COLLECTION, *PDEVICE_COLLECTION; typedef enum { VETOED_EJECT = 1, VETOED_REMOVAL, VETOED_UNDOCK, VETOED_STANDBY, VETOED_HIBERNATE, VETOED_WARM_EJECT, VETOED_WARM_UNDOCK } VETOED_OPERATION; typedef struct { DEVICE_COLLECTION dc; PNP_VETO_TYPE VetoType; VETOED_OPERATION VetoedOperation; } VETO_DEVICE_COLLECTION, *PVETO_DEVICE_COLLECTION; typedef struct { DEVICE_COLLECTION dc; BOOL SuppressSurprise; ULONG DialogTicker; ULONG MaxWaitForDock; } SURPRISE_WARN_COLLECTION, *PSURPRISE_WARN_COLLECTION; BOOL DeviceCollectionBuildFromPipe( IN HANDLE ReadPipe, IN COLLECTION_TYPE CollectionType, OUT PDEVICE_COLLECTION DeviceCollection ); VOID DeviceCollectionDestroy( IN PDEVICE_COLLECTION DeviceCollection ); VOID DeviceCollectionPopulateListView( IN PDEVICE_COLLECTION DeviceCollection, IN HWND ListHandle ); BOOL DeviceCollectionGetDockDeviceIndex( IN PDEVICE_COLLECTION DeviceCollection, OUT ULONG *DockDeviceIndex ); BOOL DeviceCollectionFormatDeviceText( IN PDEVICE_COLLECTION DeviceCollection, IN ULONG Index, IN PTSTR FormatString, IN ULONG BufferCharSize, OUT PTSTR BufferText ); BOOL DeviceCollectionFormatServiceText( IN PDEVICE_COLLECTION DeviceCollection, IN ULONG Index, IN PTSTR FormatString, IN ULONG BufferCharSize, OUT PTSTR BufferText ); PTSTR DeviceCollectionGetDeviceInstancePath( IN PDEVICE_COLLECTION DeviceCollection, IN ULONG Index ); PTSTR DeviceCollectionGetDeviceFriendlyName( IN PDEVICE_COLLECTION DeviceCollection, IN ULONG Index ); BOOL DeviceCollectionGetGuid( IN PDEVICE_COLLECTION DeviceCollection, IN OUT LPGUID Guid, IN ULONG Index ); BOOL DeviceCollectionCheckIfAllRemoved( IN PDEVICE_COLLECTION DeviceCollection );