1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23#ifndef _IOKIT_IOCFPLUGIN_H_
24#define _IOKIT_IOCFPLUGIN_H_
25
26/* IOCFPlugIn.h
27 */
28#include <sys/cdefs.h>
29
30__BEGIN_DECLS
31
32#include <CoreFoundation/CFPlugIn.h>
33#if COREFOUNDATION_CFPLUGINCOM_SEPARATE
34#include <CoreFoundation/CFPlugInCOM.h>
35#endif
36
37#include <IOKit/IOKitLib.h>
38
39/* C244E858-109C-11D4-91D4-0050E4C6426F */
40#define kIOCFPlugInInterfaceID CFUUIDGetConstantUUIDWithBytes(NULL,	\
41    0xC2, 0x44, 0xE8, 0x58, 0x10, 0x9C, 0x11, 0xD4,			\
42    0x91, 0xD4, 0x00, 0x50, 0xE4, 0xC6, 0x42, 0x6F)
43
44
45#define IOCFPLUGINBASE							\
46    UInt16	version;						\
47    UInt16	revision;						\
48    IOReturn (*Probe)(void *thisPointer, CFDictionaryRef propertyTable,	\
49                    io_service_t service, SInt32 * order);		\
50    IOReturn (*Start)(void *thisPointer, CFDictionaryRef propertyTable,	\
51                      io_service_t service);				\
52    IOReturn (*Stop)(void *thisPointer)
53
54typedef struct IOCFPlugInInterfaceStruct {
55    IUNKNOWN_C_GUTS;
56    IOCFPLUGINBASE;
57} IOCFPlugInInterface;
58
59
60kern_return_t
61IOCreatePlugInInterfaceForService(io_service_t service,
62                CFUUIDRef pluginType, CFUUIDRef interfaceType,
63                IOCFPlugInInterface *** theInterface, SInt32 * theScore);
64
65kern_return_t
66IODestroyPlugInInterface(IOCFPlugInInterface ** interface);
67
68__END_DECLS
69
70#endif /* !_IOKIT_IOCFPLUGIN_H_ */
71