1 #include "dsound_private.h"
3 HRESULT
VoiceMan_Query(DSBuffer
*buf
, DWORD propid
, ULONG
*pTypeSupport
) {
7 case DSPROPERTY_VMANAGER_MODE
:
8 TRACE("DSPROPERTY_VMANAGER_MODE\n");
9 *pTypeSupport
= KSPROPERTY_SUPPORT_GET
| KSPROPERTY_SUPPORT_SET
;
13 case DSPROPERTY_VMANAGER_PRIORITY
:
14 TRACE("DSPROPERTY_VMANAGER_PRIORITY\n");
15 *pTypeSupport
= KSPROPERTY_SUPPORT_GET
| KSPROPERTY_SUPPORT_SET
;
19 case DSPROPERTY_VMANAGER_STATE
:
20 TRACE("DSPROPERTY_VMANAGER_STATE\n");
21 *pTypeSupport
= KSPROPERTY_SUPPORT_GET
;
26 FIXME("Unhandled propid: 0x%08lx\n", propid
);
27 return E_PROP_ID_UNSUPPORTED
;
30 HRESULT
VoiceMan_Set(DSBuffer
*buf
, DWORD propid
, void *pPropData
, ULONG cbPropData
) {
32 case DSPROPERTY_VMANAGER_MODE
:
33 if (cbPropData
>= sizeof(DWORD
) && *(DWORD
*)pPropData
< VMANAGER_MODE_MAX
) {
34 TRACE("DSPROPERTY_VMANAGER_MODE set: %ld\n", *(DWORD
*)pPropData
);
35 buf
->share
->vm_managermode
= *(DWORD
*)pPropData
;
39 return DSERR_INVALIDPARAM
;
41 case DSPROPERTY_VMANAGER_PRIORITY
:
42 if (cbPropData
>= sizeof(DWORD
)) {
43 TRACE("DSPROPERTY_VMANAGER_PRIORITY set: %ld\n", *(DWORD
*)pPropData
);
44 buf
->vm_voicepriority
= *(DWORD
*)pPropData
;
48 return DSERR_INVALIDPARAM
;
51 FIXME("Unhandled propid: 0x%08lx\n", propid
);
52 return E_PROP_ID_UNSUPPORTED
;
55 HRESULT
VoiceMan_Get(DSBuffer
*buf
, DWORD propid
, void *pPropData
, ULONG cbPropData
, ULONG
*pcbReturned
) {
59 case DSPROPERTY_VMANAGER_MODE
:
60 if (cbPropData
>= sizeof(DWORD
)) {
61 *pcbReturned
= sizeof(DWORD
);
63 *(DWORD
*)pPropData
= buf
->share
->vm_managermode
;
64 TRACE("DSPROPERTY_VMANAGER_MODE get %ld\n", *(DWORD
*)pPropData
);
68 return DSERR_INVALIDPARAM
;
70 case DSPROPERTY_VMANAGER_PRIORITY
:
71 if (cbPropData
>= sizeof(DWORD
)) {
72 *pcbReturned
= sizeof(DWORD
);
74 *(DWORD
*)pPropData
= buf
->vm_voicepriority
;
75 TRACE("DSPROPERTY_VMANAGER_PRIORITY get %ld\n", *(DWORD
*)pPropData
);
79 return DSERR_INVALIDPARAM
;
81 case DSPROPERTY_VMANAGER_STATE
:
82 if (cbPropData
>= sizeof(DWORD
)) {
83 *pcbReturned
= sizeof(DWORD
);
85 /* FIXME: dubious handling */
87 *(DWORD
*)pPropData
= DSPROPERTY_VMANAGER_STATE_PLAYING3DHW
;
89 *(DWORD
*)pPropData
= DSPROPERTY_VMANAGER_STATE_SILENT
;
91 TRACE("DSPROPERTY_VMANAGER_STATE get %ld\n", *(DWORD
*)pPropData
);
95 return DSERR_INVALIDPARAM
;
98 FIXME("Unhandled propid: 0x%08lx\n", propid
);
99 return E_PROP_ID_UNSUPPORTED
;