User Interface Extension Registry Entries
You must provide the COM server class ID for each extension. Note that the class ID of the COM server for each extension is listed as a registry key (not a value) under CLSID\{WIA_DIP_UI_CLSID}\shellex, where WIA_DIP_UI_CLSID is the actual GUID returned when the application requests this property. The application uses it as part of the look-up key in the registry. Each extensibility interface can refer to a different class ID. There is no requirement that the same object implement them all. List only those extensions that are implemented. It is not required to list all four.
Because the class ID GUID identifies which driver to use, if all models of your device use the same driver, they can all have the same class ID GUID. If different models use different drivers, then they must have different GUIDs.
CLSID\{WIA_DIP_UI_CLSID}\shellex\ContextMenuHandlers\<CLSID of COM in-process server>
Vendor-supplied COM DLL that implements context menu UI extensions.
CLSID\{WIA_DIP_UI_CLSID}\shellex\PropertySheetHandlers\<CLSID of COM in-process server>
Vendor-supplied COM DLL that implements property sheet UI extensions.
CLSID\{WIA_DIP_UI_CLSID}\shellex\WiaDialogExtensionHandlers\<CLSID of COM in-process server>
Vendor-supplied COM DLL that implements application dialog UI extensions.
CLSID\<CLSID of the COM in-process server>\InProcServer32\Default Value
REG_SZ type containing the name of the vendor-supplied COM server implementing the extensibility interfaces.
CLSID\<CLSID of the COM in-process server>\InProcServer32\ThreadingModel
REG_SZ type containing the name of the threading model of the vendor-supplied COM server. Set this key to Apartment.