2.2.6.42 PHONECAPS

The PHONECAPS packet describes the capabilities of a phone device. The phone GetDevCaps packet returns this packet. PHONECAPS is supplied by the server in the field VarData of the returned version of the phone GetDevCaps packet if the request is completed successfully.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

dwTotalSize

dwNeededSize

dwUsedSize

dwProviderInfoSize

dwProviderInfoOffset

dwPhoneInfoSize

dwPhoneInfoOffset

dwPermanentPhoneID

dwPhoneNameSize

dwPhoneNameOffset

dwStringFormat

dwPhoneStates

dwHookSwitchDevs

dwHandsetHookSwitchModes

dwSpeakerHookSwitchModes

dwHeadsetHookSwitchModes

dwVolumeFlags

dwGainFlags

dwDisplayNumRows

dwDisplayNumColumns

dwNumRingModes

dwNumButtonLamps

dwButtonModesSize

dwButtonModesOffset

dwButtonFunctionsSize

dwButtonFunctionsOffset

dwLampModesSize

dwLampModesOffset

dwNumSetData

dwSetDataSize

dwSetDataOffset

dwNumGetData

dwGetDataSize

dwGetDataOffset

dwDevSpecificSize

dwDevSpecificOffset

dwDeviceClassesSize (optional)

dwDeviceClassesOffset (optional)

dwPhoneFeatures (optional)

dwSettableHandsetHookSwitchModes (optional)

dwSettableSpeakerHookSwitchModes (optional)

dwSettableHeadsetHookSwitchModes (optional)

dwMonitoredHandsetHookSwitchModes (optional)

dwMonitoredSpeakerHookSwitchModes (optional)

dwMonitoredHeadsetHookSwitchModes (optional)

PermanentPhoneGuid (16 bytes)

...

...

VarData (variable)

...

dwTotalSize (4 bytes): An unsigned 32-bit integer. The total size, in bytes, that is allocated to this packet.

dwNeededSize (4 bytes): An unsigned 32-bit integer. The needed size, in bytes, for this packet to hold all the returned information.

dwUsedSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the portion of this packet that contains useful information.

dwProviderInfoSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the provider-specific information. If the provider-specific information is a pointer to a string, the size MUST include the null terminator.

dwProviderInfoOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of the packet to the variably sized field that contains service provider–specific information.

This member provides information about the provider hardware and software, such as the vendor name and version numbers of hardware and software. This information can be useful when a user needs to call customer service with problems regarding the provider. The size of the field MUST be specified by dwProviderInfoSize.

dwPhoneInfoSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the phone-specific information. If the phone-specific information is a pointer to a string, the size MUST include the null terminator.

dwPhoneInfoOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of the packet to the variably sized device field that contains phone-specific information.

This member provides information about the attached phone device, such as the phone device manufacturer, the model name, the software version, and so on. This information can be useful when a user needs to call customer service with problems about the phone. The size of the field MUST be specified by dwPhoneInfoSize.

dwPermanentPhoneID (4 bytes): An unsigned 32-bit integer. The permanent identifier by which the phone device is known in the computing system configuration.

dwPhoneNameSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the configurable name for the phone, including the null terminator.

dwPhoneNameOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of the packet to the variably sized device field that contains a user-configurable name for this phone device. This name can be configured by the user when configuring the service provider of the phone and is provided for user convenience. The size of the field MUST be specified by dwPhoneNameSize.

dwStringFormat (4 bytes): An unsigned 32-bit integer. The string format to be used with this phone device. This member MUST use one of the STRINGFORMAT_Constants.

dwPhoneStates (4 bytes): An unsigned 32-bit integer. The state changes for this phone device for which the application can be notified in a PHONE_STATE packet. This member MUST be one or more of the PHONESTATE_Constants.

dwHookSwitchDevs (4 bytes): An unsigned 32-bit integer. The hookswitch devices of the phone. This member MUST use one of the PHONEHOOKSWITCHDEV_Constants.

dwHandsetHookSwitchModes (4 bytes): An unsigned 32-bit integer. The hookswitch mode of the handset. The member is only meaningful if dwHookSwitchDevs is PHONEHOOKSWITCHDEV_HANDSET. It MUST use one of the PHONEHOOKSWITCHMODE_Constants.

dwSpeakerHookSwitchModes (4 bytes): An unsigned 32-bit integer. The hookswitch mode of the speaker. The member is only meaningful if dwHookSwitchDevs is PHONEHOOKSWITCHDEV_SPEAKER. It MUST use one of the PHONEHOOKSWITCHMODE_Constants.

dwHeadsetHookSwitchModes (4 bytes): An unsigned 32-bit integer. The hookswitch mode of the headset. The member is only meaningful if dwHookSwitchDevs is PHONEHOOKSWITCHDEV_HEADSET. It MUST use one of the PHONEHOOKSWITCHMODE_Constants.

dwVolumeFlags (4 bytes): An unsigned 32-bit integer. The volume-setting capabilities of the speaker components of the phone device. The volume of the hookswitch device's speaker component can be adjusted with phone SetVolume packet.

dwGainFlags (4 bytes): An unsigned 32-bit integer. The gain-setting capabilities of the phone device's microphone components. The gain level of the hookswitch device's microphone component can be adjusted with the SetGain packet.

dwDisplayNumRows (4 bytes): An unsigned 32-bit integer. The display capabilities of the phone device by describing the number of rows in the phone display. The dwDisplayNumRows and dwDisplayNumColumns members are both zero for a phone device without a display.

dwDisplayNumColumns (4 bytes): An unsigned 32-bit integer. The display capabilities of the phone device by describing the number of columns in the phone display. The dwDisplayNumRows and dwDisplayNumColumns members are both zero for a phone device without a display.

dwNumRingModes (4 bytes): An unsigned 32-bit integer. The ring capabilities of the phone device. The phone is able to ring with dwNumRingModes different ring patterns, identified as 1, 2, through dwNumRingModes minus one. If the value of this member is 0, applications have no control over the ring mode of the phone. If the value of this member is greater than 0, it indicates the number of ring modes, in addition to silence, that are supported by the service provider. A value of 0 in the lpdwRingMode parameter of GetRing or the dwRingMode parameter of SetRing indicates silence (the phone is not ringing or SHOULD NOT be rung), and dwRingMode values of 1 to dwNumRingModes are valid ring modes for the phone device.

dwNumButtonLamps (4 bytes): An unsigned 32-bit integer. The number of button/lamps on the phone device that are detectable in TAPI. Button/lamps are identified by their identifier. Valid button/lamp identifiers range from zero to dwNumButtonLamps minus one. The keypad buttons "0", through "9", "*", and "#" are assigned the identifiers 0 through 12.

dwButtonModesSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the button modes array.

dwButtonModesOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of this packet to the variably sized field that contains the button modes of the phone buttons. The array is indexed by button/lamp identifier. This array uses the PHONEBUTTONMODE_Constants. The size of the array MUST be specified by dwButtonModesSize.

dwButtonFunctionsSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the button functions field.

dwButtonFunctionsOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of this packet to the variably sized field that contains the button functions of the phone buttons. The array is indexed by button/lamp identifier. This array uses the PHONEBUTTONFUNCTION_Constants. The size of the array MUST be specified by dwButtonFunctionsSize.

dwLampModesSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the lamp modes array.

dwLampModesOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of this packet to the variably sized field that contains the lamp modes of the phone lamps. The array is indexed by button/lamp identifier. This array uses the PHONELAMPMODE_Constants. The size of the array MUST be specified by dwLampModesSize.

dwNumSetData (4 bytes): An unsigned 32-bit integer. The number of different download areas in the phone device. The different areas are referred to by using the data IDs 0, 1, dwNumSetData minus one. If this member is zero, the phone does not support the download capability.

dwSetDataSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the data size array.

dwSetDataOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of this packet to the variably sized field that contains the sizes, in bytes, of the phone's download data areas. This is an array that has DWORD-sized elements that are indexed by data identifier. The size of the array MUST be specified by dwSetDataSize.

dwNumGetData (4 bytes): An unsigned 32-bit integer. The number of different upload areas in the phone device. The different areas are referred to by using the data IDs 0, 1, dwNumGetData minus one. If this field is zero, the phone does not support the upload capability.

dwGetDataSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the data size array.

dwGetDataOffset (4 bytes): An unsigned 32-bit integer. The offset, from the beginning of this packet to the variably sized field, that contains the sizes, in bytes, of the phone's upload data areas. This is an array that has DWORD-sized elements that are indexed by data identifier. The size of the array MUST be specified by dwGetDataSize.

dwDevSpecificSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the device-specific field. If the device-specific information is a pointer to a string, the size MUST include the null terminator.

dwDevSpecificOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of this packet to the variably sized device-specific field. The size of the field MUST be specified by dwDevSpecificSize.

dwDeviceClassesSize (4 bytes): An unsigned 32-bit integer. The size, in bytes, of the supported device class identifiers.

dwDeviceClassesOffset (4 bytes): An unsigned 32-bit integer. The offset from the beginning of this packet to a string that consists of the device class identifiers that are supported on this device for use with the GetID packet. The identifiers are separated by NULLs, and the last identifier in the list is followed by two NULLs. The size of the field MUST be specified by dwDeviceClassesSize.

dwPhoneFeatures (4 bytes): An unsigned 32-bit integer. The flags that indicate which TAPI functions can be invoked on the phone. A zero indicates that the corresponding feature is not implemented and can never be invoked by the application on the phone; a one indicates that the feature can be invoked, depending on the device state and other factors. This member MUST use PHONEFEATURE_Constants.

dwSettableHandsetHookSwitchModes (4 bytes): An unsigned 32-bit integer. The PHONEHOOKSWITCHMODE_Constants that can be set on the handset by using the SetHookSwitch packet.

dwSettableSpeakerHookSwitchModes (4 bytes): An unsigned 32-bit integer. The PHONEHOOKSWITCHMODE_Constants that can be set on the speakerphone by using the SetHookSwitch packet.

dwSettableHeadsetHookSwitchModes (4 bytes): An unsigned 32-bit integer. The PHONEHOOKSWITCHMODE_Constants that can be set on the headset by using the SetHookSwitch packet.

dwMonitoredHandsetHookSwitchModes (4 bytes): An unsigned 32-bit integer. The PHONEHOOKSWITCHMODE_Constants that can be detected and reported for the handset in a PHONE_STATE packet and by the GetHookSwitch packet.

dwMonitoredSpeakerHookSwitchModes (4 bytes): An unsigned 32-bit integer. The PHONEHOOKSWITCHMODE_Constants that can be detected and reported for the speakerphone in a PHONE_STATE packet and by the GetHookSwitch packet.

dwMonitoredHeadsetHookSwitchModes (4 bytes): An unsigned 32-bit integer. The PHONEHOOKSWITCHMODE_Constants that can be detected and reported for the headset in a PHONE_STATE packet and by the GetHookSwitch packet.

PermanentPhoneGuid (16 bytes): The GUID that is permanently associated with this phone.

VarData (variable): MUST contain:

  • Service provider–specific information, as specified by dwProviderInfoOffset.

  • Phone-specific information, as specified by dwPhoneInfoOffset.

  • The user-configurable name for the phone, as specified by dwPhoneNameOffset.

  • The button modes of the phone buttons, as specified by dwButtonModesOffset.

  • The button functions of the phone buttons, as specified by dwButtonFunctionsOffset.

  • The lamp modes of the phone lamps, as specified by dwLampModesOffset.

  • The sizes, in bytes, of the phone's download data areas, as specified by dwSetDataOffset.

  • The sizes, in bytes, of the phone's upload data areas, as specified by dwGetDataOffset.

  • Device-specific information, as specified by dwDevSpecificOffset

  • The device class identifiers that are supported on the device, as specified by dwDeviceClassesOffset.

Device-specific extensions SHOULD use the DevSpecific (dwDevSpecificSize and dwDevSpecificOffset) variably sized area of this packet.

The members dwDeviceClassesSize through dwMonitoredHeadsetHookSwitchModes are available only to applications that open the phone device with TAPI versions 2.0, 2.1, 2.2, 3.0, and 3.1.