[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

E 相違点,API,インタフェースの一覧

この付録には,COM for OpenVMSとMicrosoft COMの実装上の相違点,APIの一覧,COM for OpenVMSの本リリースで提供されるインタフェースの一覧を示します。

E.1 COM for OpenVMSとMicrosoft COMの相違点

ここでは,COM for OpenVMSとMicrosoftのCOM の実装上の重要な相違点を示します。

E.1.1 サービス制御マネージャ(SCM)

OpenVMSでは,Windows NTのサービス制御マネージャに相当する機能を提供していません。 この結果,Serverサービス(stop,start,pause, resumeなど)に依存するアプリケーションは,同様の機能を提供するOpenVMS 機能に依存します(このような機能が提供される場合)。

たとえば,OpenVMSサイト固有のスタートアップ・コマンド・プロシージャとシャットダウン・ コマンド・プロシージャを使用して, システムのスタートアップ時にサービスを自動起動し,システムのシャットダウン時にサービスの自動的なシャットダウンを実装できます。 RegisterServiceCtrlHandlerChangeServiceConfig などのサービスAPIは,OpenVMSでは提供されません。

E.1.2 サーバ・アプリケーションのスタック・ サイズ

COM for OpenVMSでは,サーバ・アプリケーションの機能はサーバ・ スレッドのコンテキストで実行されます。この結果, サーバ機能のスタック空間は48 KBに制限されます。ローカル変数や構造を格納するために追加空間が必要な場合は, ローカル変数または構造用に動的メモリを割り当てなければなりません。

E.1.3 "char"データ型の使用

OpenVMSとWindows NTはIDLベースのデータ型"char"を異なる方法で変換します。

OpenVMSでは,このデータ型をMIDL_CHARとして変換します。これはCHARとして定義されており, さらに"char"としても定義されています。OpenVMS コンパイラはデフォルト設定で,これを"unsigned char"に相当するものと解釈します。 ほとんどの場合,これらは同じように使用できます。しかし, この2つは正確には同じでありません。C++では,クラス・メンバ定義でこの2 つを指定した場合,異なるデータ型として取り扱われます。

Windows NTでは,このデータ型は直接"unsigned char"として変換されます。 これはVisual C++と矛盾します。Visual C++では,"char"データ型は"signed char" と同じであるものとして取り扱われます。OpenVMSの場合と同様に,"char" はクラス・メンバ定義では"signed char"と同じでありません。

この矛盾を回避するには,次の2つの方法があります。

E.1.4 MIDLコンパイラのバージョン

COM for OpenVMSに添付されているMIDLコンパイラは,MicrosoftのMIDLコンパイラV3.00.44 を基礎にしています。

E.1.5 アプリケーション構成のアクセス権を変更するためのDCOM$CNFG の使用

アプリケーションに関連付けられている一部のキーのOpenVMS Registryキー・ アクセス権を変更するには, 「Application Security」サブメニューのオプション5とオプション6 を使用します。オプション5とオプション6は次のキーのセキュリティ設定に影響します。


HKEY_CLASSES_ROOT\APPID\{guid}
HKEY_CLASSES_ROOT\CLSID\{guid}とサブキー

Windows NTシステムでは,HKEY_ CLASSES_ROOT\CLSID\{guid } の下のサブキーのセキュリティ設定は, 既存のセキュリティ設定が HKEY_ CLASSES_ROOT\APPID\{guid } の元の設定と一致する場合にだけ変更されます。

OpenVMSシステムでは,サブキーの設定は,HKEY_CLASSES_ ROOT\APPID\{guid } の元の設定と既存の設定が一致しない場合でも 変更されます。

オプション5とオプション6は,アプリケーションに関連付けられているすべてのキーの設定を変更するわけではありません。 たとえば,オプション5 とオプション6は次のキーには影響しません。


HKEY_CLASSES_ROOT\APPID\fi lename
     HKEY_CLASSES_ROOT\TYPELIB\{typelib guid}

HKEY_CLASSES_ROOT\INTERFACES\{interface guid(s)} とサブキー
HKEY_CLASSES_ROOT\name とサブキー
KEY_CLASSES_ROOT\version independent name とサブキー

これらのキーのセキュリティ設定を変更するには,次の操作を行います。

  1. Windows NTシステムからRegEdt32 を起動します。

  2. 「レジストリ」メニューの「コンピュータの選択」 を選択し,OpenVMS Registryが格納されているOpenVMS システムに接続します。

  3. 変更するアプリケーションに関連付けられているキーを選択します。

  4. 「セキュリティ」メニューの「アクセス権... 」を選択し,ユーザにフル・コントロール・アクセス権を与えます。

  5. アプリケーションに関連付けられている各レジストリ・キーに対して、 最後の2つの手順を繰り返します(この節で前に説明したキーの一覧を参照) 。


注意
HKEY_CLASSES_ ROOTHKEY_LOCAL_MACHINE\SOFTWARE\Classes のエイリアスです。Regedt32 を使用してWindows NTからOpenVMS Registryに接続し, HKEY_CLASSES_ROOT キーを変更する場合は, HKEY_LOCAL_MACHINE\SOFTWARE\Classes キーを変更してください。

E.2 API

セキュリティ・サポートが必要なAPIは,COM Version 1.0 for OpenVMSではサポートされません。

本リリースでサポートされるAPIは次のとおりです。

     BindMoniker
     BstrFromVector
     CLSIDFromProgID
     CLSIDFromString
     CoAddRefServerProcess
     CoCopyProxy
     CoCreateFreeThreadedMarshaler
     CoCreateGuid
     CoCreateInstance
     CoCreateInstanceEx
     CoDisconnectObject
     CoDosDateTimeToFileTime
     CoFileTimeNow
     CoFileTimeToDosDateTime
     CoFreeAllLibraries
     CoFreeLibrary
     CoFreeUnusedLibraries
     CoGetCallContext
     CoGetClassObject
     CoGetCurrentProcess
     CoGetInstanceFromFile
     CoGetInstanceFromIStorage
     CoGetInterfaceAndReleaseStream
     CoGetMalloc
     CoGetMarshalSizeMax
     CoGetPSClsid
     CoGetStandardMarshal
     CoGetTreatAsClass
     CoImpersonateClient
     CoInitialize
     CoInitializeEx
     CoInitializeSecurity
     CoIsHandlerConnected
     CoLoadLibrary
     CoLockObjectExternal
     CoMarshalInterface
     CoQueryAuthenticationServices
     CoQueryClientBlanket
     CoQueryProxyBlanket
     CoRegisterClassObject
     CoRegisterMallocSpy
     CoRegisterMessageFilter
     CoRegisterPSClsid
     CoReleaseMarshalData
     CoReleaseServerProcess
     CoResumeClassObjects
     CoRevertToSelf
     CoRevokeClassObject
     CoRevokeMallocSpy
     CoSetProxyBlanket
     CoSuspendClassObjects
     CoTaskMemAlloc
     CoTaskMemFree
     CoTaskMemRealloc
     CoTreatAsClass
     CoUninitialize
     CoUnmarshalInterface
     CreateAntiMoniker
     CreateBindCtx
     CreateClassMoniker
     CreateDataAdviseHolder
     CreateDispTypeInfo
     CreateErrorInfo
     CreateGenericComposite
     CreateILockBytesOnHGlobal
     CreateItemMoniker
     CreatePointerMoniker
     CreateStdDispatch
     CreateStreamOnHGlobal
     CreateTypeLib
     DispGetIDsOfNames
     DispGetParam
     DispInvoke
     DllCanUnloadNow
     DllGetClassObject
     DllGetClassObject
     DllMain
     DllRegisterServer
     DllUnregisterServer
     DosDateTimeToVariantTime
     FreePropVariantArray
     GetActiveObject
     GetAltMonthNames
     GetClassFile
     GetConvertStg
     GetErrorInfo
     GetHGlobalFromILockBytes
     GetHGlobalFromStream
     GetRunningObjectTable
     IIDFromString
     IsEqualCLSID
     IsEqualGUID
     IsEqualIID
     IsValidIid
     IsValidInterface
     IsValidPtrIn
     IsValidPtrOut
     LHashValOfName
     LHashValOfNameSys
     LoadRegTypeLib
     LoadTypeLibEx
     MkParseDisplayName
     MonikerCommonPrefixWith
     MonikerRelativePathTo
     ProgIDFromCLSID
     PropStgNameToFmtId
     PropVariantClear
     PropVariantCopy
     QueryPathOfRegTypeLib
     ReadClassStg
     ReadClassStm
     ReadFmtUserTypeStg
     RegisterActiveObject
     RegisterTypeLib
     ReleaseStgMedium
     RevokeActiveObject
     SafeArrayAccessData
     SafeArrayAllocData
     SafeArrayAllocDescriptor
     SafeArrayCopy
     SafeArrayCopyData
     SafeArrayCreate
     SafeArrayCreateVector
     SafeArrayDestroy
     SafeArrayDestroyData
     SafeArrayDestroyDescriptor
     SafeArrayGetDim
     SafeArrayGetElement
     SafeArrayGetElemsize
     SafeArrayGetLBound
     SafeArrayGetUBound
     SafeArrayLock
     SafeArrayPtrOfIndex
     SafeArrayPutElement
     SafeArrayRedim
     SafeArrayUnaccessData
     SafeArrayUnlock
     SetConvertStg
     SetErrorInfo
     StgCreateDocfile
     StgCreateDocfileOnILockBytes
     StgCreatePropSetStg
     StgCreatePropStg
     StgIsStorageFile
     StgIsStorageILockBytes
     StgOpenPropStg
     StgOpenStorage
     StgOpenStorageOnILockBytes
     StgSetTimes
     StringFromCLSID
     StringFromGUID2
     StringFromIID
     SysAllocString
     SysAllocStringByteLen
     SysAllocStringLen
     SysFreeString
     SysReAllocString
     SysReAllocStringLen
     SysStringByteLen
     SysStringLen
     SystemTimeToVariantTime
     UnRegisterTypeLib
     VarDateFromUdate
     VarNumFromParseNum
     VarParseNumFromStr
     VarUdateFromDate
     VariantChangeType
     VariantChangeTypeEx
     VariantClear
     VariantCopy
     VariantCopyInd
     VariantInit
     VariantTimeToDosDateTime
     VariantTimeToSystemTime
     VectorFromBstr
     WriteClassStg
     WriteClassStm
     WriteFmtUserTypeStg

E.3 インタフェース

本リリースでサポートされるインタフェースは,次のとおりです。

     IAdviseSink
     IBindCtx
     IClassActivator
     IClassFactory
     IConnectionPoint
     IConnectionPointContainer
     ICreateErrorInfo
     ICreateTypeInfo
     ICreateTypeLib
     IDataAdviseHolder
     IDataObject
     IDispatch
     IEnumCallBack
     IEnumConnectionPoints
     IEnumConnections
     IEnumFORMATETC
     IEnumMoniker
     IEnumOLEVerb
     IEnumSTATDATA
     IEnumSTATPROPSETSTG
     IEnumSTATSTG
     IEnumString
     IEnumUnknown
     IEnumVariant
     IErrorInfo
     IExternalConnection
     ILockBytes
     IMalloc
     IMallocSpy
     IMarshal
     IMessageFilter
     IMoniker
     IMultiQI
     IParseDisplayName
     IPersist
     IPersistFile
     IPersistStorage
     IPersistStream
     IPropertySetStorage
     IPropertyStorage
     IRootStorage
     IRunnableObject
     IRunningObjectTable
     IStdMarshalInfo
     IStorage
     IStream
     ISupportErrorInfo
     ITypeComp
     ITypeInfo
     ITypeInfo2
     ITypeLib
     ITypeLib2
     IUnknown


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]