#if 0

  Microsoft Windows
  Copyright (C) Microsoft Corporation, 1992 - 1992.
  All rights reserved.

  This .def file is preprocessed by the compiler to create the version for
  the current build in the appropriate subdir.  Basically, whatever you
  would have used in your code to control what is compiled when can be
  used in this file for the same purpose.  The following defines are in
  use at the time this file was written:

     FLAT       - Used to indicate a NT/DOS7 build
     i386       -   Intel i386/i486 build
     MIPS       -   MIPS R3000/R4000 build
     ALPHA      -   DEC Alpha build
     DBG        - Used to control Debug/Retail.  Set to 1 if Debug,
                   0 if Retail.
     WIN31      - Win16 build
     __OS2__    - OS/2 build (used by CT mostly)

  If none of these are used, it is assumed the entire file can be used
  for all builds.

#endif

#ifdef FLAT

LIBRARY      compob32

EXPORTS

#if defined(i386)

        CoBuildVersion@0                        @1
        CoInitialize@4                          @2
        CoUninitialize@0                        @3
        CoGetMalloc@8                           @4

        CoMarshalInterface@24                   @5
        CoUnmarshalInterface@12                 @6
        CoReleaseMarshalData@4                  @7
	CoGetStandardMarshal@24 		@8
	CoGetMarshalSizeMax@24			@23
        CoMarshalHresult@8                      @9
        CoUnmarshalHresult@8                    @10

        CoRegisterClassObject@20                @11
        CoRevokeClassObject@4                   @12
        CoGetClassObject@20                     @13
        CoCreateInstance@20                     @14

;	unused					@15
        CoDisconnectObject@8                    @16
        CoLockObjectExternal@12                 @17

        CoLoadLibrary@8                         @18
        CoFreeLibrary@4                         @19
        CoFreeAllLibraries@0                    @20
        CoFreeUnusedLibraries@0                 @21

        CoRegisterMessageFilter@4               @22
;        CoBlock@0                              //23 used by CoGetMarshalSizeMax
;        CoUnblock@4                             @24
        CoFileTimeToDosDateTime@12              @25
        CoDosDateTimeToFileTime@12              @26

	CoInitializeCriticalSection@4		@27
	CoEnterCriticalSection@4		@28
	CoLeaveCriticalSection@4		@29
	CoDeleteCriticalSection@4		@30

        GetRunningObjectTable@8                 @31

	; unused				@32
        CoOpenClassKey@8                        @33
        CoIsOle1Class@4                         @34
        CoTreatAsClass@8                        @35
        CoGetTreatAsClass@8                     @36
        CoGetCurrentProcess@0                   @37

        IsEqualGUID@8                           @38
        StringFromCLSID@8                       @39
        CLSIDFromString@8                       @40
        ProgIDFromCLSID@8                       @41
        CLSIDFromProgID@8                       @42
        StringFromGUID2@12                      @43

        IsValidPtrIn@8                          @44
        IsValidPtrOut@8                         @45
        IsValidInterface@4                      @46
        IsValidIid@4                            @47

;;	 ResultFromScode@4			 @48
;;	 GetScode@4				 @49


        ;; Temporary entry points used for shared memory allocation.

        SharedMemAlloc@8                        @50
        SharedMemReAlloc@12                     @51
        SharedMemFree@8                         @52
	CoMemctxOf@4				@53
    ; Removed as this is really obsolete
    ;	 CoMemAlloc@12				 @54
    ;	 CoMemFree@8				 @55
	CoGetPersistentInstance@24		@56
	CoNewPersistentInstance@32		@57


        ;; OLE2.01 functionality

        CoIsHandlerConnected@4                  @58
	    ;; 59 unused
        CoFileTimeNow@4                         @60

        ;; 61-69 unused, reserved for additional 2.01 stuff

        ;; Moniker Functions

        BindMoniker@16                          @70
        MkParseDisplayName@16                   @71
        CreateBindCtx@8                         @72
        CreateItemMoniker@12                    @73
        CreateFileMoniker@8                     @74
        CreateGenericComposite@12               @75
        CreateAntiMoniker@4                     @76
        CreatePointerMoniker@8                  @77
	MonikerRelativePathTo@16		@78
#ifdef _CAIRO_
	CreateFileMonikerEx@12			@79
#else
;	 unused					@79
#endif
	GetClassFile@8				@80
	OleSaveToStream@8			@81
	OleLoadFromStream@12			@82
	MonikerCommonPrefixWith@12		@83

        ;; internal calls below this point

	;; The following two entries are probably temporary as
	;; they are helpers for drag and drop
	AssignEndpointProperty@4
	UnAssignEndpointProperty@4
	GetInterfaceFromWindowProp@16

	;; this maybe should be removed
	FnAssert@16

;        StringFromCLSID2@12
        CoGetClassExt@8
        Ole1ClassFromCLSID2@12
;        CMemBytesUnMarshal@0
;        CMemStmUnMarshal@0
        GetOleMutex@0
        ReleaseOleMutex@0
        StringFromIID@8
        IIDFromString@8
;	SzFixNet@20
	Concatenate@12

	;;  are these still needed?
        ;;
        ;;CloneSharedMemStm@4
        ;;CreateSharedMemStm@8
        ;;FreeSharedMemStmHandle@4
        ;;CreateMemLockbytes@8
	;;?Create@CMemBytes@@SGPAV1@PAX@Z

	;; BUGBUG:  Temporary name of memory allocators till real
	;;	    memory philosophy defined.
	?CoMemAlloc@@YGPAXKKPAX@Z
	?CoMemFree@@YGXPAXK@Z

        ?PubMemAlloc@@YGPAXK@Z
        ?PubMemFree@@YGXPAX@Z

#ifndef _CAIRO_
        ??2CPrivAlloc@@SGPAXI@Z
        ??3CPrivAlloc@@SGXPAX@Z

#if DBG==1
	vdprintf
#endif
#endif

	; Export ability to create remote handler
	RemCreateRemoteHandler@16
	CoInitializeEx@8
	DllDebugObjectRPCHook=DllDebugObjectRPCHook@8

#if DBG==1
	Dbg_FindRemoteHdlr
#endif

#ifdef LRPC
	;;  BUGBUG: The following are old exports from 16 bit having to do
	;;	    with the LRPC part of the system. We are just keeping
	;;	    them here for reference.
        RemCreateRemoteHandler@40
        RemAllocOID@4
        RemFreeOID@4
        RemConnectToObject@8
        RemSetHandler@8
        RemClearHandler@4
        RemLookupHandler@8
        RemUninitHandlers@0
        RemRevokeServer@4
        RemLookupOrCreateServer@16
        RemLookupServerUnk@12
        RemLookupServerOID@12
	RemLookupSHUnk@12
        RemUninitServers@0
        RemCreateRHClassObject@24
        RemEnsureLocalClassObject@8
        RemEnsureUniqueHandler@12
        RemGetInfoForCid@24
	RemCreateStubManager@16


        LrpcCall@12
        LrpcDispatch@12
        LrpcRegisterMonitor@4
        LrpcRevokeMonitor@4
        LrpcGetConnClient@4
        LrpcGetConnObject@4
        LrpcGetObjServer@4
        LrpcGetMessage@20
        LrpcTimeout@4
        LrpcGetThreadWindow@0
#endif // LRPC

#elif defined(_MIPS_)

        CoBuildVersion                          @1
        CoInitialize                            @2
        CoUninitialize                          @3
        CoGetMalloc                             @4

        CoMarshalInterface                      @5
        CoUnmarshalInterface                    @6
        CoReleaseMarshalData                    @7
	CoGetStandardMarshal			@8
	CoGetMarshalSizeMax			@23
        CoMarshalHresult                        @9
        CoUnmarshalHresult                      @10

        CoRegisterClassObject                   @11
        CoRevokeClassObject                     @12
        CoGetClassObject                        @13
        CoCreateInstance                        @14

;	unused					@15
        CoDisconnectObject                      @16
        CoLockObjectExternal                    @17

        CoLoadLibrary                           @18
        CoFreeLibrary                           @19
        CoFreeAllLibraries                      @20
        CoFreeUnusedLibraries                   @21
        CoRegisterMessageFilter                 @22
;        CoBlock                                 @23
;        CoUnblock                               @24
        CoFileTimeToDosDateTime                 @25
        CoDosDateTimeToFileTime                 @26

	CoInitializeCriticalSection		@27
	CoEnterCriticalSection			@28
	CoLeaveCriticalSection			@29
	CoDeleteCriticalSection			@30

        GetRunningObjectTable                   @31

	; unused				@32
        CoOpenClassKey                          @33
        CoIsOle1Class                           @34
        CoTreatAsClass                          @35
        CoGetTreatAsClass                       @36
        CoGetCurrentProcess                     @37

        IsEqualGUID                             @38
        StringFromCLSID                         @39
        CLSIDFromString                         @40
        ProgIDFromCLSID                         @41
        CLSIDFromProgID                         @42
        StringFromGUID2                         @43

        IsValidPtrIn                            @44
        IsValidPtrOut                           @45
        IsValidInterface                        @46
        IsValidIid                              @47

;;	 ResultFromScode			 @48
;;	 GetScode				 @49


        ;; Temporary entry points used for shared memory allocation.

        SharedMemAlloc                          @50
        SharedMemReAlloc                        @51
        SharedMemFree                           @52
	CoMemctxOf				@53
;   Moved to mangled names because these are not documented
;	 CoMemAlloc				 @54
;	 CoMemFree				 @55
	CoGetPersistentInstance 		@56
	CoNewPersistentInstance 		@57

        ;; OLE2.01 functionality

        CoIsHandlerConnected                    @58
	    ;; 59 unused
        CoFileTimeNow                           @60

        ;; 61-69 reserved for additional 2.01 functionality

        ;; Moniker Functions

        BindMoniker                             @70
        MkParseDisplayName                      @71
        CreateBindCtx                           @72
        CreateItemMoniker                       @73
        CreateFileMoniker                       @74
        CreateGenericComposite                  @75
        CreateAntiMoniker                       @76
        CreatePointerMoniker                    @77
	MonikerRelativePathTo			@78
#ifdef	_CAIRO_
 ;	CreateFileMonikerEx			@79
#else
;	unused					@79
#endif
	GetClassFile				@80
	OleSaveToStream				@81
	OleLoadFromStream			@82
	MonikerCommonPrefixWith			@83

	;; internal calls below this point

	;; The following two entries are probably temporary as
	;; they are helpers for drag and drop
	AssignEndpointProperty
	UnAssignEndpointProperty
	GetInterfaceFromWindowProp

	;; this maybe should be removed
	FnAssert

;	 StringFromCLSID2
        CoGetClassExt
        Ole1ClassFromCLSID2
;        CMemBytesUnMarshal
;        CMemStmUnMarshal
        GetOleMutex
        ReleaseOleMutex
        StringFromIID
        IIDFromString
;	SzFixNet
	Concatenate

	;;  are these still needed?
        ;;
        ;;CloneSharedMemStm
        ;;CreateSharedMemStm
        ;;FreeSharedMemStmHandle
        ;;CreateMemLockbytes
        ;;?Create@CMemBytes@@SGPAV1@PAX@Z


	; Temparary while new CoMemAlloc defined
	?CoMemAlloc@@YAPAXKKPAX@Z
	?CoMemFree@@YAXPAXK@Z

	?PubMemAlloc@@YAPAXK@Z
        ?PubMemFree@@YAXPAX@Z

#ifndef _CAIRO_
	??2CPrivAlloc@@SAPAXI@Z
        ??3CPrivAlloc@@SAXPAX@Z

#if DBG==1
	vdprintf
#endif
#endif

	; Export ability to create remote handler
	RemCreateRemoteHandler

#if DBG==1
	Dbg_FindRemoteHdlr
#endif


	CoInitializeEx

#ifdef LRPC
	;;  BUGBUG: The following are old exports from 16 bit having to do
	;;	    with the LRPC part of the system. We are just keeping
	;;	    them here for reference.
        RemAllocOID
        RemFreeOID
        RemConnectToObject
        RemSetHandler
        RemClearHandler
        RemLookupHandler
        RemUninitHandlers
        RemRevokeServer
        RemLookupOrCreateServer
        RemLookupServerUnk
        RemLookupServerOID
	RemLookupSHUnk
        RemUninitServers
        RemCreateRHClassObject
        RemEnsureLocalClassObject
        RemEnsureUniqueHandler
        RemGetInfoForCid
        RemCreateStubManager

        LrpcCall
        LrpcDispatch
        LrpcRegisterMonitor
        LrpcRevokeMonitor
        LrpcGetConnClient
        LrpcGetConnObject
        LrpcGetObjServer
        LrpcGetMessage
        LrpcTimeout
	LrpcGetThreadWindow

#endif // LRPC

#elif defined(_PPC_)

        CoBuildVersion                          @1
        CoInitialize                            @2
        CoUninitialize                          @3
        CoGetMalloc                             @4

        CoMarshalInterface                      @5
        CoUnmarshalInterface                    @6
        CoReleaseMarshalData                    @7
	CoGetStandardMarshal			@8
	CoGetMarshalSizeMax			@23
        CoMarshalHresult                        @9
        CoUnmarshalHresult                      @10

        CoRegisterClassObject                   @11
        CoRevokeClassObject                     @12
        CoGetClassObject                        @13
        CoCreateInstance                        @14

;	unused					@15
        CoDisconnectObject                      @16
        CoLockObjectExternal                    @17

        CoLoadLibrary                           @18
        CoFreeLibrary                           @19
        CoFreeAllLibraries                      @20
        CoFreeUnusedLibraries                   @21
        CoRegisterMessageFilter                 @22
;        CoBlock                                 @23
;        CoUnblock                               @24
        CoFileTimeToDosDateTime                 @25
        CoDosDateTimeToFileTime                 @26

	CoInitializeCriticalSection		@27
	CoEnterCriticalSection			@28
	CoLeaveCriticalSection			@29
	CoDeleteCriticalSection			@30

        GetRunningObjectTable                   @31

	; unused				@32
        CoOpenClassKey                          @33
        CoIsOle1Class                           @34
        CoTreatAsClass                          @35
        CoGetTreatAsClass                       @36
        CoGetCurrentProcess                     @37

        IsEqualGUID                             @38
        StringFromCLSID                         @39
        CLSIDFromString                         @40
        ProgIDFromCLSID                         @41
        CLSIDFromProgID                         @42
        StringFromGUID2                         @43

        IsValidPtrIn                            @44
        IsValidPtrOut                           @45
        IsValidInterface                        @46
        IsValidIid                              @47

;;	 ResultFromScode			 @48
;;	 GetScode				 @49


        ;; Temporary entry points used for shared memory allocation.

        SharedMemAlloc                          @50
        SharedMemReAlloc                        @51
        SharedMemFree                           @52
	CoMemctxOf				@53
;   Moved to mangled names because these are not documented
;	 CoMemAlloc				 @54
;	 CoMemFree				 @55
	CoGetPersistentInstance 		@56
	CoNewPersistentInstance 		@57

        ;; OLE2.01 functionality

        CoIsHandlerConnected                    @58
	    ;; 59 unused
        CoFileTimeNow                           @60

        ;; 61-69 reserved for additional 2.01 functionality

        ;; Moniker Functions

        BindMoniker                             @70
        MkParseDisplayName                      @71
        CreateBindCtx                           @72
        CreateItemMoniker                       @73
        CreateFileMoniker                       @74
        CreateGenericComposite                  @75
        CreateAntiMoniker                       @76
        CreatePointerMoniker                    @77
	MonikerRelativePathTo			@78
#ifdef	_CAIRO_
 ;	CreateFileMonikerEx			@79
#else
;	unused					@79
#endif
	GetClassFile				@80
	OleSaveToStream				@81
	OleLoadFromStream			@82
	MonikerCommonPrefixWith			@83

	;; internal calls below this point

	;; The following two entries are probably temporary as
	;; they are helpers for drag and drop
	AssignEndpointProperty
	UnAssignEndpointProperty
	GetInterfaceFromWindowProp

	;; this maybe should be removed
	FnAssert

;	 StringFromCLSID2
        CoGetClassExt
        Ole1ClassFromCLSID2
;        CMemBytesUnMarshal
;        CMemStmUnMarshal
        GetOleMutex
        ReleaseOleMutex
        StringFromIID
        IIDFromString
;	SzFixNet
	Concatenate

	;;  are these still needed?
        ;;
        ;;CloneSharedMemStm
        ;;CreateSharedMemStm
        ;;FreeSharedMemStmHandle
        ;;CreateMemLockbytes
        ;;?Create@CMemBytes@@SGPAV1@PAX@Z


	; Temparary while new CoMemAlloc defined
	?CoMemAlloc@@YAPAXKKPAX@Z
	?CoMemFree@@YAXPAXK@Z

	?PubMemAlloc@@YAPAXK@Z
        ?PubMemFree@@YAXPAX@Z

#ifndef _CAIRO_
	??2CPrivAlloc@@SAPAXI@Z
        ??3CPrivAlloc@@SAXPAX@Z

#if DBG==1
	vdprintf
#endif
#endif

	; Export ability to create remote handler
	RemCreateRemoteHandler

#if DBG==1
	Dbg_FindRemoteHdlr
#endif


	CoInitializeEx

#ifdef LRPC
	;;  BUGBUG: The following are old exports from 16 bit having to do
	;;	    with the LRPC part of the system. We are just keeping
	;;	    them here for reference.
        RemAllocOID
        RemFreeOID
        RemConnectToObject
        RemSetHandler
        RemClearHandler
        RemLookupHandler
        RemUninitHandlers
        RemRevokeServer
        RemLookupOrCreateServer
        RemLookupServerUnk
        RemLookupServerOID
	RemLookupSHUnk
        RemUninitServers
        RemCreateRHClassObject
        RemEnsureLocalClassObject
        RemEnsureUniqueHandler
        RemGetInfoForCid
        RemCreateStubManager

        LrpcCall
        LrpcDispatch
        LrpcRegisterMonitor
        LrpcRevokeMonitor
        LrpcGetConnClient
        LrpcGetConnObject
        LrpcGetObjServer
        LrpcGetMessage
        LrpcTimeout
	LrpcGetThreadWindow

#endif // LRPC

#endif  // i386 / _MIPS_ / _PPC_

#endif // FLAT
