IEEE 1394 Virtual VCR Driver Registry Settings (Windows CE 5.0)
Virtual subunits require registry entries to ensure that they are automatically enumerated by the Windows Driver Model (WDM). Virtual instances of ISO/IEC-61883 and AVC need to be instantiated first. The CEBASE environment variable SYSGEN_1394_AVC_VIRTUAL ensures that the correct modules are included in the build and as a result, the correct registry entries are made.
The following registry entries are required.
; This entry is for exporting a VCR subunit. The virtual AV/C subunit listed
; in the previous entry will read this registry entry and determine that we
; wish to export a subunit type of '4' (top five bits in the byte, so 0x20).
; The name of the value is immaterial.
[HKEY_LOCAL_MACHINE\WDMDrivers\{095780C3-48A1-4570-BD95-46707F78C2DC}\0002\Virtual Device List]
"VirtualVCR"=hex:20
; This entry is related to the 'VirtualVCR' entry a few lines above.
; AV/C determines the MatchingDeviceId by simply using VAVC\TYP_# where
; # is the subunit type in hex.
[HKEY_LOCAL_MACHINE\WDMDrivers\{A7F514FB-8FF1-442f-9547-F5CCDA55EAE0}\0000]
"MatchingDeviceId"="VAVC\\TYP_4"
"Dll"="AVC_VVCR.DLL"
"FriendlyName"="AV/C Virtual VCR Subunit"
The first entry refers to the GUID for the AVC Driver, {095780C3-48A1-4570-BD95-46707F78C2DC}. It also refers to a specific instance of the driver, 0002. The drivers 0000 and 0001 in the sample entries from Common.reg are for non-virtual instances of AV/C, which is the virtual AV/C instance of the driver. The AV/C driver looks for a list of the subunits that it exports by reading registry values under the virtual device list key. The value is the encoded version of the defined subunit type for the virtual subunit. The encoding specifics are defined in the AV/C Digital Interface Command Set, General Specification, available from the IEEE 1394 Trade Association. However, for the simplest of forms, subunit types 0x00 through 0x1D, the value is the type shifted left by three bits. For extended types, the value must be encoded into a series of bytes, and those bytes must be listed in the Virtual Device List registry entry. The type is hexadecimal, not DWORD.
The second registry entry refers to defining the actual virtual VCR driver itself for WDM. The GUID for the virtual VCR driver is listed as {A7F514FB-8FF1-442f-9547-F5CCDA55EAE0}, along with the single instance of the driver, 0000. The device identifier for the driver has the form VAVC\TYP_#, where the number listed must be the same subunit type defined in the previous entry, unencoded in this case. The first entry causes AV/C to list this as a dependent to WDM during enumeration, and the second entry permits WDM to locate and instantiate the virtual VCR driver.
Most subunits will likely leverage the streaming support provided in the AVC_STREAM driver. The following registry key example shows this driver.
; This entry is related to our VCR subunit -- it states that the
; virtual VCR subunit driver requires that we insert a driver whose
; MatchingDeviceId is 'AVC_STREAM' BELOW the virtual VCR subunit driver when
; adding it to a stack.
[HKEY_LOCAL_MACHINE\WDMDrivers\{A7F514FB-8FF1-442f-9547-F5CCDA55EAE0}]
"LowerFilters"=multi_sz:"AVC_STREAM"
At least one filter driver, AVC_STREAM, exists closer to the hardware for the virtual VCR driver denoted by the GUID in the registry path.
Send Feedback on this topic to the authors