1/* 2 * Copyright (c) 1998-2010 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22 23#ifndef _IOKIT_IOAUDIOCONTROLUSERCLIENT_H 24#define _IOKIT_IOAUDIOCONTROLUSERCLIENT_H 25 26#include <IOKit/IOUserClient.h> 27 28#ifndef IOAUDIOFAMILY_SELF_BUILD 29#include <IOKit/audio/IOAudioTypes.h> 30#else 31#include "IOAudioTypes.h" 32#endif 33 34class IOAudioControl; 35 36class IOAudioControlUserClient : public IOUserClient 37{ 38 OSDeclareDefaultStructors(IOAudioControlUserClient) 39 40protected: 41 task_t clientTask; 42 IOAudioControl * audioControl; 43 IOAudioNotificationMessage * notificationMessage; 44 45 virtual IOReturn clientClose(); 46 virtual IOReturn clientDied(); 47 48protected: 49 struct ExpansionData { }; 50 51 ExpansionData *reserved; 52 53public: 54 virtual void sendChangeNotification(UInt32 notificationType); 55 // OSMetaClassDeclareReservedUsed(IOAudioControlUserClient, 1); 56 virtual bool initWithAudioControl(IOAudioControl *control, task_t owningTask, void *securityID, UInt32 type, OSDictionary *properties); 57 58private: 59 OSMetaClassDeclareReservedUsed(IOAudioControlUserClient, 0); 60 OSMetaClassDeclareReservedUsed(IOAudioControlUserClient, 1); 61 62 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 2); 63 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 3); 64 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 4); 65 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 5); 66 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 6); 67 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 7); 68 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 8); 69 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 9); 70 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 10); 71 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 11); 72 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 12); 73 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 13); 74 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 14); 75 OSMetaClassDeclareReservedUnused(IOAudioControlUserClient, 15); 76 77public: 78 static IOAudioControlUserClient *withAudioControl(IOAudioControl *control, task_t clientTask, void *securityID, UInt32 type); 79 static IOAudioControlUserClient *withAudioControl(IOAudioControl *control, task_t clientTask, void *securityID, UInt32 type, OSDictionary *properties); 80 81 virtual bool initWithAudioControl(IOAudioControl *control, task_t owningTask, void *securityID, UInt32 type); 82 83 virtual void free(); 84 85 virtual IOReturn registerNotificationPort(mach_port_t port, UInt32 type, UInt32 refCon); 86 87 virtual void sendValueChangeNotification(); 88}; 89 90#endif /* _IOKIT_IOAUDIOCONTROLUSERCLIENT_H */ 91