Skip to content

Adds propidl.h #263

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed

Adds propidl.h #263

wants to merge 1 commit into from

Conversation

kdschlosser
Copy link
Contributor

This adds most of the contents of propidl.h to comtypes. I have found that there is a lot of COM interfaces that use the IPropertyStore interface along with the PROPVARIANT structure. I thought it would be nice to include this in comtypes like the VARIANT structure has been added.

I have not finished yet and will be adding the value property to PROPVARIANT and also adding methods to interfaces as needed. I wanted to see if there is an interest in adding this functionality to comtypes before I spend the time to finish it up.

This adds most of the contents of propidl.h to comtypes. I have found that there is a lot of COM interfaces that use the IPropertyStore interface along with the PROPVARIANT structure. I thought it would be nice to include this in comtypes like the VARIANT structure has been added.
@vasily-v-ryabov
Copy link
Collaborator

You're welcome to finish it if you believe it's useful for many use cases. As I understood the current release can go without it, right?

@kdschlosser
Copy link
Contributor Author

Oh yeah the current release can go without a problem.

There are a lot of interfaces and functions that use the PROPVARIANT structure. The goal for this is to make available the IPropertyStore interface which gets used in a whole lot of the Windows API. core audio, shell, portable devices, photos, function discovery, media engine... those kids of things.

Here is a list of functions and interfaces that use the PROPVARIANT structure, This is not an exhaustive list bu it gives you a good idea of how often it is used in the Windows API.

Functions (click to expand)
  • SENSOR_COLLECTION_LIST_INIT
  • SENSOR_COLLECTION_LIST_SIZE
  • SENSOR_COLLECTION_LIST_CALCULATE_MAX_COUNT
  • InitPropVariantFromFloat
  • PropVariantCopy
  • PropVariantClear
  • FreePropVariantArray
  • MFCreateMediaEvent
  • MFGetSupportedSchemes
  • MFGetSupportedMimeTypes
  • MFCreateSequencerSegmentOffset
  • ActivateAudioInterfaceAsync
  • ICommand_RemoteExecute_Proxy
  • PropVariantToWinRTPropertyValue
  • WinRTPropertyValueToPropVariant
  • IPropertyDescription_RemoteCoerceToCanonicalValue_Proxy
  • PSFormatForDisplay
  • PSFormatForDisplayAlloc
  • PSGetImageReferenceForValue
  • PSCreatePropertyChangeArray
  • PSCreateSimplePropertyChange
  • PSGetPropertyValue
  • PSSetPropertyValue
  • PSCoerceToCanonicalValue
  • PSGetPropertyFromPropertyStorage
  • PSGetNamedPropertyFromPropertyStorage
  • IPropertyDescription_CoerceToCanonicalValue_Proxy
  • IPropertyDescription_CoerceToCanonicalValue_Stub
  • GetPropertyFromIDList
  • SHPropStgReadMultiple
  • SHPropStgWriteMultiple
  • SHGetTemporaryPropertyForItem
  • SHSetTemporaryPropertyForItem
  • IRichChunk_RemoteGetData_Proxy
  • ICondition_RemoteGetComparisonInfo_Proxy
  • ICondition2_RemoteGetLeafConditionInfo_Proxy
  • IRichChunk_GetData_Proxy
  • IRichChunk_GetData_Stub
  • ICondition_GetComparisonInfo_Proxy
  • ICondition_GetComparisonInfo_Stub
  • ICondition2_GetLeafConditionInfo_Proxy
  • ICondition2_GetLeafConditionInfo_Stub
  • IWiaPropertyStorage_RemoteWriteMultiple_Proxy
  • IWiaPropertyStorage_WriteMultiple_Proxy
  • IWiaPropertyStorage_WriteMultiple_Stub
Interfaces (click to expand)
  • ICredentialProviderUser
  • IFilter
  • IFunctionInstanceCollectionQuery
  • IProviderProperties
  • IProviderPropertyConstraintCollection
  • IIdentityProvider
  • AsyncIIdentityProvider
  • IIdentityStore
  • AsyncIIdentityStore
  • ILocationReport
  • ILatLongReport
  • ICivicAddressReport
  • IMFMediaSession
  • IMFMediaSource
  • IMFMediaStream
  • IMFStreamSink
  • IMFTopology
  • IMFTopologyNode
  • IMFPresentationDescriptor
  • IMFStreamDescriptor
  • IMFMetadata
  • IMFTimecodeTranslate
  • IMFSeekInfo
  • IMFOutputPolicy
  • IMFOutputSchema
  • IMFSAMIStyle
  • IMFMediaSource2
  • IMFSensorStream
  • IMFMediaEngineEx
  • IMFAttributes
  • IMFSample
  • IMFMediaType
  • IMFAudioMediaType
  • IMFVideoMediaType
  • IMFMediaEvent
  • IMFMediaEventGenerator
  • IMFMediaEventQueue
  • IMFPMediaPlayer
  • IMFPMediaItem
  • IMFSourceReader
  • IMFSourceReaderEx
  • IMFSpatialAudioSample
  • IMFVirtualCamera
  • IMMDeviceActivator
  • IMMDevice
  • IWMDMDevice3
  • IMDSPDevice3
  • IPhotoAcquireItem
  • IPhotoAcquireProgressCB
  • IPhotoProgressDialog
  • IPortableDeviceValues
  • IPortableDevicePropVariantCollection
  • IPropertyStorage
  • IPropertyStore
  • INamedPropertyStore
  • IPropertyChange
  • IPropertyStoreCache
  • IPropertyEnumType
  • IPropertyEnumTypeList
  • IPropertyDescription
  • IPropertyDescription2
  • IPropertyDescriptionAliasInfo
  • IPropertyDescriptionSearchInfo
  • IPropertyDescriptionRelatedPropertyInfo
  • IPropertySystem
  • IUrlAccessor
  • IUrlAccessor2
  • IUrlAccessor3
  • IUrlAccessor4
  • ISearchCatalogManager
  • ISearchCatalogManager2
  • ISearchQueryHelper
  • IRowsetEvents
  • ISearchManager
  • ISearchManager2
  • ISensor
  • ISensorDataReport
  • INamedPropertyBag
  • IFolderView2
  • IShellItem2
  • IPropertyUI
  • ISpatialAudioClient
  • ISpatialAudioClient2
  • IQueryParser
  • IConditionFactory
  • IQuerySolution
  • IConditionFactory2
  • IConditionGenerator
  • IInterval
  • IQueryParserManager
  • IRichChunk
  • ICondition
  • ICondition2
  • ISyncMgrConflict
  • ISyncProviderInfo
  • ISyncProviderConfigUIInfo
  • IUISimplePropertySet
  • IUIFramework
  • IUICommandHandler
  • IWiaPropertyStorage
  • IWICEnumMetadataItem
  • IWICMetadataQueryReader
  • IWICMetadataQueryWriter
  • IWICMetadataReader
  • IWICMetadataWriter
  • ISideShowCapabilities
  • ISideShowBulkCapabilities
  • ISideShowPropVariantCollection
  • IMFASFProfile
  • IMFASFStreamConfig
  • IMFASFIndexer

There are 1024 times PROPVARIANT is written in the Windows 10 SDK, there are 471 times IPropertyStore is used.

@junkmd
Copy link
Collaborator

junkmd commented Dec 4, 2022

@kdschlosser

If you still want to merge it (with the necessary modifications), please rebase it to the current master and run CI.
Although the timing should be considered depending on the scope of the release milestones, This is a feature I would like to introduce to comtypes.

(cc: @vasily-v-ryabov)

@kdschlosser kdschlosser deleted the propvariant branch December 16, 2022 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants