Windows2003-3790/multimedia/media/audiosrv/audiosrv.idl
2020-09-30 16:53:55 +02:00

95 lines
3.1 KiB
Plaintext

// ISSUE-2000/10/25-FrankYe Default to unique pointers
// Probably should default pointer to unique, then won't
// need so much redefinition of data structures to have
// unique embedded pointers
[
uuid(3faf4738-3a21-4307-b46c-fdda9bb8c0d5),
version(1.0),
endpoint("ncalrpc:[AudioSrv]")]
interface AudioSrv
{
import "wtypes.idl";
typedef __int3264 RHANDLE;
typedef [string, unique] wchar_t * UNIQUE_PWSTR;
typedef struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
byte Data4[ 8 ];
} RPC_GUID;
typedef RPC_GUID RPC_CLSID;
typedef struct _DILIST {
int Count;
[size_is(Count)] UNIQUE_PWSTR DeviceInterface[];
} DILIST;
typedef [unique] DILIST *UNIQUE_PDILIST;
typedef struct _GFX {
unsigned int Id;
UNIQUE_PWSTR GfxFactoryDi;
RPC_CLSID Clsid;
unsigned int Type;
unsigned int Order;
} GFX, *PGFX;
typedef struct _PGFXLIST {
int Count;
[size_is(Count)] GFX Gfx[];
} GFXLIST;
typedef [unique] GFXLIST *UNIQUE_PGFXLIST;
long s_gfxCreateZoneFactoriesList([out] UNIQUE_PDILIST *ppDiList);
long s_gfxCreateGfxFactoriesList([in, string] wchar_t *pZoneDi,
[out] UNIQUE_PDILIST *ppDiList);
long s_gfxCreateGfxList([in, string] wchar_t *pZoneDi,
[out] UNIQUE_PGFXLIST *ppGfxList);
long s_gfxRemoveGfx([in] unsigned long Id);
long s_gfxAddGfx([in, string] wchar_t *ZoneFactoryDi,
[in, string] wchar_t *GfxFactoryDi,
[in] unsigned long Type,
[in] unsigned long Order,
[out] unsigned long *pNewId);
long s_gfxModifyGfx([in] unsigned long Id,
[in] unsigned long Order);
// TODO learn how to pass HANDLE as OUT param
long s_gfxOpenGfx([in] unsigned long dwProcessId,
[in] unsigned long dwGfxId,
[out] RHANDLE *pFileHandle);
void s_gfxLogon([in] handle_t hBinding,
[in] unsigned long dwProcessId);
void s_gfxLogoff(void);
typedef [context_handle] void * HANDLE_SESSIONNOTIFICATION;
typedef [ref] HANDLE_SESSIONNOTIFICATION *PHANDLE_SESSIONNOTIFICATION;
long s_winmmRegisterSessionNotificationEvent([in] unsigned long dwProcessId,
[in] RHANDLE hEvent,
[out] PHANDLE_SESSIONNOTIFICATION phSessionNotification);
long s_winmmUnregisterSessionNotification([in, out] PHANDLE_SESSIONNOTIFICATION phSessionNotification);
long s_winmmSessionConnectState([in] unsigned long dwProcessId, [out] int *ConnectState);
long s_wdmDriverOpenDrvRegKey([in] DWORD dwProcessId, [in] LPCTSTR DeviceInterface, [in] ULONG samDesired, [out] RHANDLE *phkey);
void s_winmmAdvisePreferredDeviceChange(void);
long s_winmmGetPnpInfo([out] long *pcbPnpInfo, [out, size_is(,*pcbPnpInfo)] BYTE **PnpInfo);
}