Title and Copyright Information |
Preface |
The Open Group |
The Development of Product Standards |
Open Group Publications |
Versions and Issues of Specifications |
Corrigenda |
Ordering Information |
Typographical Conventions |
Problem Reporting |
Part 1 -- ActiveX Core Technology Introduction |
1 | Introduction and Terminology |
1.1 | The Component Object Model |
1.1.1 | COM Infrastructure |
1.1.2 | ORPC |
1.1.3 | Service Control Manager |
1.1.4 | Security |
1.1.5 | Error Handling |
1.1.6 | Uniform Data Transfer |
1.1.7 | Structured Storage |
1.1.7.1 | Persistent Property Sets |
1.1.8 | Persistent Objects |
1.1.9 | Monikers |
1.1.10 | Connectable Objects |
1.1.11 | Component Categories |
1.1.12 | Licensing |
1.1.13 | Type Libraries |
1.1.14 | Automation |
1.2 | MS-RPC |
1.3 | Registry |
1.4 | Security Support Provider Interface |
1.5 | Windows NT Distributed Security Provider |
2 | The Motivations for COM |
2.1 | Challenges Facing The Software Industry |
2.2 | The Solution: Component Software |
2.3 | The Component Software Solution: COM |
2.3.1 | Reusable Component Objects |
2.3.2 | Binary and Wire-Level Standards for Interoperability |
2.3.2.1 | Why Is Providing a Binary and Network Standard Important? |
2.3.2.2 | COM's Standards Enable Object Interoperability |
2.3.3 | A True System Object Model |
2.3.3.1 | Globally Unique Identifiers |
2.3.3.2 | Code Reusability and Implementation Inheritance |
2.3.3.3 | Single Programming Model |
2.3.3.4 | Life-cycle Encapsulation |
2.3.3.5 | Security |
2.3.4 | Distributed Capabilities |
3 | Component Object Model Technical Overview |
3.1 | Objects and Interfaces |
3.1.1 | Attributes of Interfaces |
3.1.2 | Object Pictures |
3.1.3 | Objects with Multiple Interfaces and QueryInterface |
3.1.3.1 | Robustly Evolving Functionality Over Time |
3.1.4 | Interfaces and C++ Classes |
3.1.5 | Interfaces and Inheritance |
3.1.6 | Interface Definitions: IDL |
3.1.7 | Basic Operations: The IUnknown Interface |
3.1.7.1 | Navigating Multiple Interfaces: the QueryInterface Function |
3.1.7.2 | Reference Counting: Controlling Object Life-cycle |
3.1.8 | How an Interface Works |
3.1.9 | Interfaces Enable Interoperability |
3.1.9.1 | Polymorphism |
3.1.9.2 | Encapsulation |
3.1.9.3 | Transparent Remoting |
3.2 | Clients, Servers, and Object implementors |
3.2.1 | Server Flavors: In-Process and Out-Of-Process |
3.2.2 | Location Transparency |
3.3 | Memory Management Rules |
3.4 | The COM Client/Server Model |
3.4.1 | COM Objects and Class Identifiers |
3.4.2 | COM Clients |
3.4.3 | COM Servers |
3.4.4 | The COM Library and Service Control Manager |
3.4.5 | Architecture for Distributed Objects |
3.4.6 | The Service Control Manager |
3.4.7 | Security |
3.4.7.1 | Security by Configuration |
3.4.7.2 | Programmatic Control Over Security |
3.4.7.3 | Security on the Internet |
3.5 | Object Reusability |
3.5.1 | COM Reusability Mechanisms |
3.6 | Connectable Objects and Events |
3.7 | Error Codes and Error Handling |
3.8 | Enumerators and Enumerator Interfaces |
3.9 | Persistent Storage |
3.9.1 | A File System Within A File |
3.9.2 | Storage and Stream Objects |
3.9.3 | Application Design with Structured Storage |
3.9.4 | Naming Elements |
3.9.5 | Direct Access vs. Transacted Access |
3.9.6 | Browsing Elements |
3.9.7 | Persistent Objects |
3.10 | Persistent, Intelligent Names: Monikers |
3.10.1 | Moniker Objects |
3.10.2 | Types of Monikers |
3.10.3 | Connections and Reconnections |
3.11 | Uniform Data Transfer |
3.11.1 | Isolation of Transfer Protocols |
3.11.2 | Data Formats and Transfer Mediums |
3.11.3 | Data Selection |
3.11.4 | Notification |
3.12 | Type Libraries |
3.13 | Automation |
Part 2 -- Component Object Model Programming Interface |
4 | Objects and Interfaces |
4.1 | Interfaces |
4.1.1 | The Interface Binary Standard |
4.1.2 | Interface Definition and Identity |
4.1.3 | Defining Interfaces: IDL |
4.1.4 | C vs. C++ vs. ... |
4.1.5 | Remoting Magic Through Vtbls |
4.2 | Globally Unique Identifiers |
4.3 | The IUnknown Interface |
4.3.1 | Reference Counting |
4.4 | Providing Class Information |
4.5 | Connectable Objects and Events |
4.6 | Designing and Implementing Objects |
4.6.1 | Implementing Interfaces: Multiple Inheritance |
4.6.2 | Implementing Interfaces: Interface Containment |
4.7 | Objects And Interfaces API Descriptions |
4.7.1 | IUnknown |
IUnknown::AddRef() |
IUnknown::QueryInterface() |
IUnknown::Release() |
4.7.2 | IProvideClassInfo |
IProvideClassInfo::GetClassInfo() |
4.7.3 | IProvideClassInfo2 |
IProvideClassInfo2::GetGUID() |
4.8 | Objects and Interfaces Enumeration Description |
4.8.1 | GUIDKIND |
5 | The COM Library |
5.1 | COM Application Responsibilities |
5.2 | Library Initialization / Uninitialization |
5.3 | Memory Management |
5.3.1 | Memory Allocation Example |
5.4 | COM Library Interface Descriptions |
5.4.1 | IMalloc |
IMalloc::Alloc() |
IMalloc::DidAlloc() |
IMalloc::Free() |
IMalloc::GetSize() |
IMalloc::HeapMinimize() |
IMalloc::Realloc() |
5.4.2 | IMallocSpy |
IMallocSpy::PreAlloc() |
IMallocSpy::PostAlloc() |
IMallocSpy::PreDidAlloc() |
IMallocSpy::PostDidAlloc() |
IMallocSpy::PreFree() |
IMallocSpy::PostFree() |
IMallocSpy::PreGetSize() |
IMallocSpy::PostGetSize() |
IMallocSpy::PreHeapMinimize() |
IMallocSpy::PostHeapMinimize() |
IMallocSpy::PreRealloc() |
IMallocSpy::PostRealloc() |
5.4.3 | IOleContainer |
IOleContainer::EnumObjects() |
IOleContainer::LockContainer() |
5.4.4 | IPersistMoniker |
IPersistMoniker::GetCurMoniker() |
IPersistMoniker::IsDirty() |
IPersistMoniker::Load() |
IPersistMoniker::Save() |
IPersistMoniker::SaveCompleted() |
5.4.5 | IRunnableObject |
IRunnableObject::GetRunningClass() |
IRunnableObject::IsRunning() |
IRunnableObject::LockRunning() |
IRunnableObject::Run() |
IRunnableObject::SetContainedObject() |
5.5 | COM Library API Descriptions |
CoGetMalloc() |
CoInitialize() |
CoInitializeEx() |
CoTaskMemAlloc() |
CoTaskMemFree() |
CoTaskMemRealloc() |
CoUninitialize() |
CoRegisterMallocSpy() |
CoRevokeMallocSpy() |
CLSIDFromProgID() |
CLSIDFromString() |
CoCreateGuid() |
CoDosDateTimeToFileTime() |
CoFileTimeNow() |
CoFileTimeToDosDateTime() |
CoGetCurrentProcess() |
IIDFromString() |
IsEqualGUID() |
IsEqualCLSID() |
IsEqualIID() |
GetRunningObjectTable() |
ProgIDFromCLSID() |
StringFromCLSID() |
StringFromGUID2() |
StringFromIID() |
CoRegisterMessageFilter() |
5.6 | COM Library Enumeration Definitions |
COINIT() |
6 | COM Threading Models |
6.1 | Choosing the Threading Model |
6.2 | Single-threaded Apartments |
6.3 | Multi-threaded Apartments |
6.4 | Single-/Multi-threaded Communication |
6.5 | In-process server Threading Issues |
6.6 | Process and Thread Related Interface Descriptions |
6.6.1 | IMessageFilter |
IMessageFilter::HandleInComingCall() |
IMessageFilter::MessagePending() |
IMessageFilter::RetryRejectedCall() |
6.7 | Process and Thread Related API Descriptions |
CoCreateFreeThreadedMarshaler() |
CoGetInterfaceAndReleaseStream() |
CoMarshalInterThreadInterfaceInStream() |
6.8 | Process and Thread Related Structure Descriptions |
6.8.1 | INTERFACEINFO |
6.9 | Process and Thread Related Enumeration Descriptions |
6.9.1 | CALLTYPE |
6.9.2 | PENDINGMESSAGE |
6.9.3 | PENDINGTYPE |
6.9.4 | SERVERCALL |
7 | COM Clients |
7.1 | Getting a Pointer to an Object |
7.1.1 | Creating an Object through a Class Object |
7.1.2 | COM Class Objects and CLSIDs |
7.1.3 | Locating a Remote Object |
7.1.4 | Instance Creation Helper Functions |
7.2 | Initializing the Object |
7.3 | Managing the Object |
7.4 | Releasing the Object |
7.5 | Server Management |
7.6 | Client Related Interface Descriptions |
7.6.1 | ICatInformation |
ICatInformation::EnumCategories() |
ICatInformation::EnumClassesOfCategories() |
ICatInformation::EnumImplCategoriesOfClass() |
ICatInformation::EnumReqCategoriesOfClass() |
ICatInformation::GetCategoryDesc() |
ICatInformation::IsClassOfCategories() |
7.6.2 | IMultiQI |
IMultiQI::QueryMultipleInterfaces() |
7.7 | Client Related API Descriptions |
CoCreateInstance() |
CoCreateInstanceEx() |
CoFreeAllLibraries() |
CoFreeLibrary() |
CoFreeUnusedLibraries() |
CoGetClassObject() |
CoGetInstanceFromFile() |
CoGetInstanceFromIStorage() |
CoGetTreatAsClass() |
CoIsHandlerConnected() |
CoLoadLibrary() |
CoTreatAsClass() |
7.8 | COM Client Related Structure Definitions |
7.8.1 | MULTI_QI |
7.9 | COM Client Related Enumeration Definitions |
7.9.1 | CLSCTX |
8 | COM Servers |
8.1 | COM Server Responsibilities |
8.2 | Implementing IClassFactory |
8.3 | Licensing and IClassFactory2 |
8.4 | Registering COM Servers |
8.4.1 | Registering a Class at Installation |
8.4.2 | Registering a Running EXE Server |
8.4.3 | Registering Objects in the ROT |
8.5 | Self-Registration |
8.6 | Out-of-process Server Implementation Helpers |
8.7 | Object Handlers |
8.8 | Object Reusability |
8.8.1 | Reusability Through Containment |
8.8.2 | Reusability Through Aggregation |
8.8.2.1 | Caching interfaces on the inner object |
8.8.2.2 | Efficiency at any Depth of Aggregation |
8.9 | Emulating Other Servers |
8.10 | COM Server Related Interface Descriptions |
8.10.1 | ICatRegister |
ICatRegister::RegisterCategories() |
ICatRegister::RegisterClassImplCategories() |
ICatRegister::RegisterClassReqCategories() |
ICatRegister::UnRegisterCategories() |
ICatRegister::UnRegisterClassImplCategories() |
ICatRegister::UnRegisterClassReqCategories() |
8.10.2 | IClassFactory |
IClassFactory::CreateInstance() |
IClassFactory::LockServer() |
8.10.3 | IClassFactory2 |
IClassFactory2::CreateInstanceLic() |
IClassFactory2::GetLicInfo() |
IClassFactory2::RequestLicKey() |
8.10.4 | IExternalConnection |
IExternalConnection::AddConnection() |
IExternalConnection::ReleaseConnection() |
8.11 | COM Server Related API Descriptions |
CoDisconnectObject() |
CoLockObjectExternal() |
CoRevokeClassObject() |
CoRegisterClassObject() |
DllCanUnloadNow() |
DllGetClassObject() |
DllRegisterServer() |
DllUnregisterServer() |
CoAddRefServerProcess() |
CoReleaseServerProcess() |
CoResumeClassObjects() |
CoSuspendClassObjects() |
8.12 | COM Server Related Structure Definitions |
LICINFO() |
8.13 | COM Server Related Enumeration Definitions |
8.13.1 | REGCLS |
9 | Interface Remoting and Marshaling |
9.1 | How Interface Remoting Works |
9.2 | Architecture of Custom Object Marshaling |
9.3 | Architecture of Standard Interface / Object Marshaling |
9.4 | Architecture of Handler Marshaling |
9.5 | Standards for Marshaled Data Packets |
9.6 | Creating an Initial Connection Between Processes |
9.7 | Interface Remoting and Marshaling Interface Descriptions |
9.7.1 | IMarshal |
IMarshal::DisconnectObject() |
IMarshal::GetMarshalSizeMax() |
IMarshal::GetUnmarshalClass() |
IMarshal::MarshalInterface() |
IMarshal::ReleaseMarshalData() |
IMarshal::UnmarshalInterface() |
9.7.2 | IMarshal - Default Implementation |
9.7.3 | IPSFactoryBuffer |
IPSFactoryBuffer::CreateProxy() |
IPSFactoryBuffer::CreateStub() |
9.7.4 | IRpcChannelBuffer |
9.7.4.1 | RPCOLEMESSAGE and related structures |
IRpcChannelBuffer::GetBuffer() |
IRpcChannelBuffer::SendReceive() |
IRpcChannelBuffer::FreeBuffer() |
IRpcChannelBuffer::GetDestCtx() |
IRpcChannelBuffer::IsConnected() |
9.7.5 | IRpcProxyBuffer |
IRpcProxyBuffer::Connect() |
IRpcProxyBuffer::Disconnect() |
9.7.6 | IRpcStubBuffer |
IRpcStubBuffer::Connect() |
IRpcStubBuffer::Disconnect() |
IRpcStubBuffer::Invoke() |
IRpcStubBuffer::IsIIDSupported() |
IRpcStubBuffer::CountRefs() |
IRpcStubBuffer::DebugServerQueryInterface() |
IRpcStubBuffer::DebugServerRelease() |
9.7.7 | IStdMarshalInfo |
IStdMarshalInfo::GetClassForHandler() |
9.8 | Interface Remoting and Marshaling API Descriptions |
CoGetMarshalSizeMax() |
CoGetStandardMarshal() |
CoGetPSClsid() |
CoMarshalHresult() |
CoMarshalInterface() |
CoRegisterPSClsid() |
CoReleaseMarshalData() |
CoUnmarshalHresult() |
CoUnmarshalInterface() |
9.9 | Interface Remoting and Marshaling Enumeration Definitions |
9.9.1 | EXTCONN |
9.9.2 | MSHCTX |
9.9.3 | MSHLFLAGS |
10 | Security in COM |
10.1 | Launch Security |
10.2 | Call Security |
10.3 | Security Related Interface Descriptions |
10.3.1 | IClientSecurity |
IClientSecurity::CopyProxy() |
IClientSecurity::QueryBlanket() |
IClientSecurity::SetBlanket() |
10.3.2 | IServerSecurity |
IServerSecurity::QueryBlanket() |
IServerSecurity::ImpersonateClient() |
IServerSecurity::RevertToSelf() |
IServerSecurity::IsImpersonating() |
10.4 | Security Related API Descriptions |
CoCopyProxy() |
CoGetCallContext() |
CoImpersonateClient() |
CoInitializeSecurity() |
CoQueryAuthenticationServices() |
CoQueryClientBlanket() |
CoQueryProxyBlanket() |
CoRevertToSelf() |
CoSetProxyBlanket() |
10.5 | Security Related Structure Definitions |
10.5.1 | COAUTHINFO |
10.5.2 | COSERVERINFO |
10.6 | Security Related Enumeration Descriptions |
10.6.1 | RPC_C_AUTHN_XXX |
10.6.2 | RPC_C_AUTH_LEVEL_XXX |
10.6.3 | RPC_C_AUTHZ_XXX |
10.6.4 | RPC_C_IMP_LEVEL_XXX |
11 | NTLM |
11.1 | NTLM Passthrough Architecture |
11.2 | NTLM Security |
11.2.1 | Protocol |
11.2.2 | The Negotiate Message |
11.2.2.1 | Flag Details |
11.2.3 | The Challenge Message |
11.2.3.1 | Flag Details |
11.2.4 | The Authenticate Message |
11.2.5 | Reauthentication |
11.2.6 | Challenge Algorithm |
11.2.7 | Response Message Algorithm |
11.2.8 | Session Key Algorithm |
11.3 | Client-Passthrough Communications |
11.4 | Passthrough-Domain Communications |
11.5 | Bibliography |
12 | Error Handling |
12.1 | Returning Error Information |
12.2 | Retrieving Error Information |
12.3 | Error Handling API Descriptions |
12.3.1 | IErrorInfo |
IErrorInfo::GetDescription() |
IErrorInfo::GetGUID() |
IErrorInfo::GetHelpContext() |
IErrorInfo::GetHelpFile() |
IErrorInfo::GetSource() |
12.3.2 | ICreateErrorInfo |
ICreateErrorInfo::SetDescription() |
ICreateErrorInfo::SetGUID() |
ICreateErrorInfo::SetHelpContext() |
ICreateErrorInfo::SetHelpFile() |
ICreateErrorInfo::SetSource() |
12.3.3 | ISupportErrorInfo |
ISupportErrorInfo::InterfaceSupportsErrorInfo() |
CreateErrorInfo() |
GetErrorInfo() |
SetErrorInfo() |
12.3.4 | HRESULT |
12.3.4.1 | Use of FACILITY_ITF |
12.3.5 | IErrorLog |
12.3.5.1 | When to Implement |
12.3.5.2 | When to Use |
12.3.5.3 | See Also |
IErrorLog::AddError() |
13 | Enumerators and Enumerator Interfaces |
IEnum::Next() |
IEnum::Skip() |
IEnum::Reset() |
IEnum::Clone() |
14 | Connectable Objects |
14.1 | Connectable Objects Interface Descriptions |
14.1.1 | IConnectionPoint |
IConnectionPoint::GetConnectionInterface() |
IConnectionPoint::GetConnectionPointContainer() |
IConnectionPoint::Advise() |
IConnectionPoint::Unadvise() |
IConnectionPoint::EnumConnections() |
14.1.2 | IConnectionPointContainer |
IConnectionPointContainer::EnumConnectionPoints() |
IConnectionPointContainer::FindConnectionPoint() |
14.1.3 | IEnumConnectionPoints |
IEnumConnectionPoints::Next() |
IEnumConnectionPoints::Skip() |
IEnumConnectionPoints::Reset() |
IEnumConnectionPoints::Clone() |
14.1.4 | IEnumConnections |
IEnumConnections::Next() |
IEnumConnections::Skip() |
IEnumConnections::Reset() |
IEnumConnections::Clone() |
14.2 | Connectable Objects Structure Descriptions |
14.2.1 | CONNECTDATA |
15 | Persistent Storage |
15.1 | Interfaces |
15.2 | API Functions |
15.3 | Access Modes |
15.3.1 | Transaction Flags |
15.3.2 | Storage Creation Flags |
15.3.3 | Temporary Creation Flag |
15.3.4 | Priority Flag |
15.3.5 | Access Permission Flags |
15.3.6 | Shared Access Flags |
15.4 | Storage Object Naming Conventions |
15.5 | Persistent Property Sets |
15.5.1 | Managing Property Sets |
15.5.2 | Managing Properties |
15.5.3 | Using Property Sets |
15.5.3.1 | The Summary Information Property Set |
15.5.3.1.1 | Guidelines for Implementing the Summary Information Property Set |
15.5.4 | Property Set Implementations |
15.5.4.1 | Performance Characteristics |
15.5.5 | Using Implemented Property Sets |
15.5.6 | IPropertySetStorage Implementation Considerations |
15.5.7 | Names in IStorage |
15.5.8 | Storage vs Stream for a Property Set |
15.5.9 | Setting the CLSID of the Property Set |
15.5.10 | Synchronization Points |
15.5.11 | Code pages: Unicode strings, Macintosh, etc. |
15.5.12 | Dictionary |
15.5.13 | Extensions |
15.6 | Persistent Storage Interface Descriptions |
15.6.1 | IEnumSTATPROPSETSTG |
15.6.2 | IEnumSTATPROPSETSTG-Compound File Implementation |
15.6.3 | IEnumSTATPROPSTG |
15.6.4 | IEnumSTATPROPSTG-Compound File Implementation |
15.6.5 | IEnumSTATSTG |
15.6.6 | ILockBytes |
ILockBytes::Flush() |
ILockBytes::LockRegion() |
ILockBytes::ReadAt() |
ILockBytes::SetSize() |
ILockBytes::Stat() |
ILockBytes::UnlockRegion() |
ILockBytes::WriteAt() |
15.6.7 | ILockBytes - File-Based Implementation |
15.6.8 | ILockBytes - Global Memory Implementation |
15.6.9 | IPersist |
IPersist::GetClassID() |
15.6.10 | IPersistFile |
IPersistFile::GetCurFile() |
IPersistFile::IsDirty() |
IPersistFile::Load() |
IPersistFile::Save() |
IPersistFile::SaveCompleted() |
15.6.11 | IPersistMemory |
IPersistMemory::GetSizeMax() |
IPersistMemory::InitNew() |
IPersistMemory::IsDirty() |
IPersistMemory::Load() |
IPersistMemory::Save() |
15.6.12 | IPersistPropertyBag |
IPersistPropertyBag::InitNew() |
IPersistPropertyBag::Load() |
IPersistPropertyBag::Save() |
15.6.13 | IPersistStorage |
IPersistStorage::HandsOffStorage() |
IPersistStorage::InitNew() |
IPersistStorage::IsDirty() |
IPersistStorage::Load() |
IPersistStorage::Save() |
IPersistStorage::SaveCompleted() |
15.6.14 | IPersistStream |
IPersistStream::GetSizeMax() |
IPersistStream::IsDirty() |
IPersistStream::Load() |
IPersistStream::Save() |
15.6.15 | IPersistStreamInit |
IPersistStreamInit::GetSizeMax() |
IPersistStreamInit::InitNew() |
IPersistStreamInit::IsDirty() |
IPersistStreamInit::Load() |
IPersistStreamInit::Save() |
15.6.16 | IPropertyBag |
IPropertyBag::Read() |
IPropertyBag::Write() |
15.6.17 | IPropertySetStorage |
IPropertySetStorage::Create() |
IPropertySetStorage::Delete() |
IPropertySetStorage::Enum() |
IPropertySetStorage::Open() |
15.6.18 | IPropertySetStorage-Compound File Implementation |
15.6.19 | IPropertySetStorage-Standalone Implementation |
15.6.20 | IPropertyStorage |
IPropertyStorage::Commit() |
IPropertyStorage::DeleteMultiple() |
IPropertyStorage::DeletePropertyNames() |
IPropertyStorage::Enum() |
IPropertyStorage::ReadMultiple() |
IPropertyStorage::ReadPropertyNames() |
IPropertyStorage::Revert() |
IPropertyStorage::Stat() |
IPropertyStorage::SetClass() |
IPropertyStorage::SetTimes() |
IPropertyStorage::WriteMultiple() |
IPropertyStorage::WritePropertyNames() |
15.6.21 | IPropertyStorage-Compound File Implementation |
15.6.22 | IPropertyStorage-Standalone Implementation |
15.6.23 | IRootStorage |
IRootStorage::SwitchToFile() |
15.6.24 | IRootStorage - Compound File Implementation |
15.6.25 | IStorage |
IStorage::Commit() |
IStorage::CopyTo() |
IStorage::CreateStorage() |
IStorage::CreateStream() |
IStorage::DestroyElement() |
IStorage::EnumElements() |
IStorage::MoveElementTo() |
IStorage::OpenStorage() |
IStorage::OpenStream() |
IStorage::RenameElement() |
IStorage::Revert() |
IStorage::SetClass() |
IStorage::SetElementTimes() |
IStorage::SetStateBits() |
IStorage::Stat() |
15.6.26 | IStorage - Compound File Implementation |
15.6.27 | IStream |
IStream::Clone() |
IStream::Commit() |
IStream::CopyTo() |
IStream::LockRegion() |
IStream::Read() |
IStream::Revert() |
IStream::Seek() |
IStream::SetSize() |
IStream::Stat() |
IStream::UnlockRegion() |
IStream::Write() |
15.6.28 | IStream - Compound File Implementation |
15.7 | Persistent Storage API Descriptions |
FreePropVariantArray() |
PropStgNameToFmtId() |
PropVariantClear() |
PropVariantCopy() |
ReadClassStg() |
ReadClassStm() |
ReadFmtUserTypeStg() |
SetConvertStg() |
StgCreateDocfile() |
StgCreateDocfileOnILockBytes() |
StgCreatePropSetStg() |
StgCreatePropStg() |
StgIsStorageFile() |
StgIsStorageILockBytes() |
StgOpenPropStg() |
StgOpenStorage() |
StgOpenStorageOnILockBytes() |
StgSetTimes() |
WriteClassStg() |
WriteClassStm() |
WriteFmtUserTypeStg() |
CreateILockBytesOnHGlobal() |
CreateStreamOnHGlobal() |
GetClassFile() |
GetConvertStg() |
GetHGlobalFromILockBytes() |
GetHGlobalFromStream() |
15.8 | Persistent Storage Structure Descriptions |
15.8.1 | FILETIME |
15.8.2 | RemSNB |
15.8.3 | STATPROPSETSTG |
15.8.4 | STATPROPSTG |
15.8.5 | STATSTG |
15.9 | Persistent Storage Enumeration Descriptions |
15.9.1 | LOCKTYPE |
15.9.2 | PROPSETFLAG |
15.9.3 | STGC |
15.9.4 | STGFMT |
15.9.5 | STGM |
15.9.6 | STGMOVE |
15.9.7 | STGTY |
15.9.8 | STREAM_SEEK |
16 | Persistent Intelligent Names: Monikers |
16.1 | Overview |
16.2 | Moniker Interface Descriptions |
16.2.1 | IBindCtx |
IBindCtx::EnumObjectParam() |
IBindCtx::GetBindOptions() |
IBindCtx::GetObjectParam() |
IBindCtx::GetRunningObjectTable() |
IBindCtx::RegisterObjectBound() |
IBindCtx::RegisterObjectParam() |
IBindCtx::ReleaseBoundObjects() |
IBindCtx::RevokeObjectBound() |
IBindCtx::RevokeObjectParam() |
IBindCtx::SetBindOptions() |
16.2.2 | IClassActivator |
IClassActivator::GetClassObject() |
16.2.3 | IEnumMoniker |
16.2.4 | IEnumString |
16.2.5 | IEnumUnknown |
16.2.6 | IMoniker |
IMoniker::BindToObject() |
IMoniker::BindToStorage() |
IMoniker::CommonPrefixWith() |
IMoniker::ComposeWith() |
IMoniker::Enum() |
IMoniker::GetDisplayName() |
IMoniker::GetTimeOfLastChange() |
IMoniker::Hash() |
IMoniker::Inverse() |
IMoniker::IsEqual() |
IMoniker::IsRunning() |
IMoniker::IsSystemMoniker() |
IMoniker::ParseDisplayName() |
IMoniker::Reduce() |
IMoniker::RelativePathTo() |
16.2.7 | IMoniker - Anti-Moniker Implementation |
16.2.8 | IMoniker - Class Moniker Implementation |
16.2.9 | IMoniker - File Moniker Implementation |
16.2.10 | IMoniker - Generic Composite Moniker Implementation |
16.2.11 | IMoniker - Item Moniker Implementation |
16.2.12 | IMoniker - Pointer Moniker Implementation |
16.2.13 | IOleItemContainer |
IOleItemContainer::GetObject() |
IOleItemContainer::GetObjectStorage() |
IOleItemContainer::IsRunning() |
16.2.14 | IParseDisplayName |
IParseDisplayName::ParseDisplayName() |
16.2.15 | IROTData |
IROTData::GetComparisonData() |
16.2.16 | IRunningObjectTable |
IRunningObjectTable::EnumRunning() |
IRunningObjectTable::GetObject() |
IRunningObjectTable::GetTimeOfLastChange() |
IRunningObjectTable::IsRunning() |
IRunningObjectTable::NoteChangeTime() |
IRunningObjectTable::Register() |
IRunningObjectTable::Revoke() |
16.3 | Moniker API Descriptions |
BindMoniker() |
MkParseDisplayName() |
MkParseDisplayNameEx() |
MonikerCommonPrefixWith() |
MonikerRelativePathTo() |
CreateAntiMoniker() |
CreateBindCtx() |
CreateClassMoniker() |
CreateFileMoniker() |
CreateGenericComposite() |
CreateItemMoniker() |
CreatePointerMoniker() |
16.4 | Moniker Structure Definitions |
16.4.1 | BIND_OPTS |
16.4.2 | BIND_OPTS2 |
16.5 | Moniker Enumeration Definitions |
16.5.1 | BIND_FLAGS |
16.5.2 | MKRREDUCE |
16.5.3 | MKSYS |
17 | Uniform Data Transfer |
17.1 | Data Transfer Interfaces |
17.2 | Data Formats and Transfer Media |
17.2.1 | The FORMATETC Structure |
17.2.2 | The STGMEDIUM Structure |
17.3 | Data Notification |
17.4 | Uniform Data Transfer Interface Descriptions |
17.4.1 | IAdviseSink |
17.4.1.1 | Methods |
17.4.1.1.1 | When to Implement |
17.4.1.1.2 | When to Use |
17.4.1.1.3 | Notes |
17.4.1.1.4 | See Also |
IAdviseSink::OnClose() |
IAdviseSink::OnDataChange() |
IAdviseSink::OnRename() |
IAdviseSink::OnSave() |
IAdviseSink::OnViewChange() |
17.4.2 | IDataAdviseHolder |
IDataAdviseHolder::Advise() |
IDataAdviseHolder::EnumAdvise() |
IDataAdviseHolder::SendOnDataChange() |
IDataAdviseHolder::Unadvise() |
17.4.3 | IDataObject |
IDataObject::DAdvise() |
IDataObject::DUnadvise() |
IDataObject::EnumDAdvise() |
IDataObject::EnumFormatEtc() |
IDataObject::GetCanonicalFormatEtc() |
IDataObject::GetData() |
IDataObject::GetDataHere() |
IDataObject::QueryGetData() |
IDataObject::SetData() |
17.4.4 | IEnumFORMATETC |
17.4.5 | IEnumSTATDATA |
17.5 | Uniform Data Transfer API Descriptions |
CreateDataAdviseHolder() |
CreateFormatEnumerator() |
ReleaseStgMedium() |
17.6 | Uniform Data Transfer Structure Descriptions |
17.6.1 | DVASPECTINFO |
17.6.2 | DVEXTENTINFO |
17.6.3 | DVTARGETDEVICE |
17.6.4 | FORMATETC |
17.6.5 | STATDATA |
17.6.6 | STGMEDIUM |
17.7 | Uniform Data Transfer Enumeration Descriptions |
17.7.1 | ADVF |
17.7.2 | DATADIR |
17.7.3 | DVASPECT |
17.7.4 | DVASPECT2 |
17.7.5 | DVASPECTINFOFLAG |
17.7.6 | STATFLAG |
17.7.7 | TYMED |
18 | Type Libraries |
18.1 | Overview of Type Description Interfaces |
18.1.1 | Type Descriptions |
18.1.1.1 | Alias |
18.1.1.2 | Enumeration (Statement) |
18.1.1.3 | Structure (Statement) |
18.1.1.4 | Union (Statement) |
18.1.1.5 | Module (Statement) |
18.1.1.6 | V-table Interface |
18.1.1.7 | IDispatch Interface |
18.1.1.8 | Dual Interface |
18.1.1.9 | Component Object Classes |
18.2 | Type Library Interface Descriptions |
18.2.1 | IProvideClassInfo |
18.2.2 | IProvideClassInfo2 |
18.2.3 | ITypeLib |
ITypeLib::FindName() |
ITypeLib::GetDocumentation() |
ITypeLib::GetLibAttr() |
ITypeLib::GetTypeComp() |
ITypeLib::GetTypeInfo() |
ITypeLib::GetTypeInfoCount() |
ITypeLib::GetTypeInfoOfGuid() |
ITypeLib::GetTypeInfoType() |
ITypeLib::IsName() |
ITypeLib::ReleaseTLibAttr() |
18.2.4 | ITypeLib2 |
ITypeLib2::GetCustData() |
ITypeLib2::GetDocumentation2() |
ITypeLib2::GetLibStatistics() |
ITypeLib2::GetAllCustData() |
18.2.5 | ITypeInfo |
ITypeInfo::AddressOfMember() |
ITypeInfo::CreateInstance() |
ITypeInfo::GetContainingTypeLib() |
ITypeInfo::GetDllEntry() |
ITypeInfo::GetDocumentation() |
ITypeInfo::GetFuncDesc() |
ITypeInfo::GetIDsOfNames() |
ITypeInfo::GetImplTypeFlags() |
ITypeInfo::GetMops() |
ITypeInfo::GetNames() |
ITypeInfo::GetRefTypeInfo() |
ITypeInfo::GetRefTypeOfImplType() |
ITypeInfo::GetTypeAttr() |
ITypeInfo::GetTypeComp() |
ITypeInfo::GetVarDesc() |
ITypeInfo::Invoke() |
ITypeInfo::ReleaseFuncDesc() |
ITypeInfo::ReleaseTypeAttr() |
ITypeInfo::ReleaseVarDesc() |
18.2.6 | ITypeInfo2 |
ITypeInfo2::GetTypeKind() |
ITypeInfo2::GetTypeFlags() |
ITypeInfo2::GetFuncIndexOfMemId() |
ITypeInfo2::GetVarIndexOfMemId() |
ITypeInfo2::GetCustData() |
ITypeInfo2::GetAllCustData() |
ITypeInfo2::GetAllFuncCustData() |
ITypeInfo2::GetAllImplTypeCustData() |
ITypeInfo2::GetAllParamCustData() |
ITypeInfo2::GetAllVarCustData() |
ITypeInfo2::GetFuncCustData() |
ITypeInfo2::GetParamCustData() |
ITypeInfo2::GetVarCustData() |
ITypeInfo2::GetImplTypeCustData() |
ITypeInfo2::GetDocumentation2() |
18.2.7 | ITypeComp |
ITypeComp::Bind() |
ITypeComp::BindType() |
18.3 | Type Library API Descriptions |
CreateTypeLib() |
LHashValOfName() |
LHashValOfNameSys() |
LoadTypeLibEx() |
LoadRegTypeLib() |
RegisterTypeLib() |
UnRegisterTypeLib() |
QueryPathOfRegTypeLib() |
19 | Automation |
19.1 | Overview of the IDispatch Interface |
19.1.1 | Implementing the IDispatch Interface |
19.2 | Registering the Object |
19.3 | National Language Support Functions |
19.3.1 | Overview of Functions |
19.3.2 | Localized Member Names |
19.3.3 | Locale Identifier (LCID) |
19.3.4 | Language Identifier (LANGID) |
19.3.5 | Locale Constants (LCTYPE) |
19.4 | Automation Interface Descriptions |
19.4.1 | IDispatch |
IDispatch::GetIDsOfNames() |
IDispatch::GetTypeInfo() |
IDispatch::GetTypeInfoCount() |
IDispatch::Invoke() |
19.4.2 | ICreateTypeInfo Interface |
ICreateTypeInfo::AddFuncDesc() |
ICreateTypeInfo::AddImplType() |
ICreateTypeInfo::AddRefTypeInfo() |
ICreateTypeInfo::AddVarDesc() |
ICreateTypeInfo::DefineFuncAsDllEntry() |
ICreateTypeInfo::LayOut() |
ICreateTypeInfo::SetAlignment() |
ICreateTypeInfo::SetDocString() |
ICreateTypeInfo::SetFuncAndParamNames() |
ICreateTypeInfo::SetFuncDocString() |
ICreateTypeInfo::SetFuncHelpContext() |
ICreateTypeInfo::SetGuid() |
ICreateTypeInfo::SetHelpContext() |
ICreateTypeInfo::SetImplTypeFlags() |
ICreateTypeInfo::SetMops() |
ICreateTypeInfo::SetTypeDescAlias() |
ICreateTypeInfo::SetTypeFlags() |
ICreateTypeInfo::SetVarDocString() |
ICreateTypeInfo::SetVarHelpContext() |
ICreateTypeInfo::SetVarName() |
ICreateTypeInfo::SetVersion() |
19.4.3 | ICreateTypeInfo2 Interface |
19.4.3.1 | Examples |
ICreateTypeInfo2::SetName() |
ICreateTypeInfo2::DeleteFuncDesc() |
ICreateTypeInfo2::DeleteFuncDescByMemId() |
ICreateTypeInfo2::DeleteVarDesc() |
ICreateTypeInfo2::DeleteVarDescByMemId() |
ICreateTypeInfo2::DeleteImplType() |
ICreateTypeInfo2::SetCustData() |
ICreateTypeInfo2::SetHelpStringContext() |
ICreateTypeInfo2::SetFuncCustData() |
ICreateTypeInfo2::SetFuncHelpStringContext() |
ICreateTypeInfo2::SetVarCustData() |
ICreateTypeInfo2::SetParamCustData() |
ICreateTypeInfo2::SetImplTypeCustData() |
ICreateTypeInfo2::SetVarHelpStringContext() |
19.4.4 | ICreateTypeLib Interface |
ICreateTypeLib::CreateTypeInfo() |
ICreateTypeLib::SaveAllChanges() |
ICreateTypeLib::SetDocString() |
ICreateTypeLib::SetGuid() |
ICreateTypeLib::SetHelpContext() |
ICreateTypeLib::SetHelpFileName() |
ICreateTypeLib::SetLibFlags() |
ICreateTypeLib::SetLcid() |
ICreateTypeLib::SetName() |
ICreateTypeLib::SetVersion() |
19.4.5 | ICreateTypeLib2 Interface |
19.4.5.1 | Examples |
ICreateTypeLib2::SetName() |
ICreateTypeLib2::DeleteTypeInfo() |
ICreateTypeLib2::SetCustData() |
ICreateTypeLib2::SetHelpStringContext() |
ICreateTypeLib2::SetHelpStringDll() |
19.5 | Automation API Descriptions |
BstrFromVector() |
CreateDispTypeInfo() |
CreateStdDispatch() |
DispGetIDsOfNames() |
DispGetParam() |
DispInvoke() |
DosDateTimeToVariantTime() |
GetActiveObject() |
RegisterActiveObject() |
RevokeActiveObject() |
CompareString() |
LCMapString() |
GetLocaleInfo() |
GetStringType() |
GetSystemDefaultLangID() |
GetSystemDefaultLCID() |
GetUserDefaultLangID() |
GetUserDefaultLCID() |
SafeArrayAccessData() |
SafeArrayAllocData() |
SafeArrayAllocDescriptor() |
SafeArrayCopy() |
SafeArrayCopyData() |
SafeArrayCreate() |
SafeArrayCreateVector() |
SafeArrayDestroy() |
SafeArrayDestroyData() |
SafeArrayDestroyDescriptor() |
SafeArrayGetDim() |
SafeArrayGetElement() |
SafeArrayGetElemsize() |
SafeArrayGetLBound() |
SafeArrayGetUBound() |
SafeArrayLock() |
SafeArrayPtrOfIndex() |
SafeArrayPutElement() |
SafeArrayRedim() |
SafeArrayUnaccessData() |
SafeArrayUnlock() |
SysAllocString() |
SysAllocStringByteLen() |
SysAllocStringLen() |
SysFreeString() |
SysReAllocString() |
SysReAllocStringLen() |
SysStringByteLen() |
SysStringLen() |
SystemTimeToVariantTime() |
VariantChangeType() |
VariantChangeTypeEx() |
VariantClear() |
VariantCopy() |
VariantCopyInd() |
VariantInit() |
VariantTimeToDosDateTime() |
VariantTimeToSystemTime() |
VarNumFromParseNum() |
VarParseNumFromStr() |
VectorFromBstr() |
19.6 | Automation Related Structure Definitions |
19.6.1 | NUMPARSE |
19.6.2 | SAFEARRAY |
19.6.3 | SAFEARRAYBOUND |
20 | Support for Remote Debugging |
20.1 | Implementation |
DllDebugObjectRPCHook() |
20.2 | Architectural Overview |
20.3 | Calling Convention for Notifications |
20.4 | Notifications |
DebugORPCClientGetBufferSize() |
DebugORPCClientFillBuffer() |
DebugORPCServerNotify() |
DebugORPCServerGetBufferSize() |
DebugORPCServerFillBuffer() |
DebugORPCClientNotify() |
20.5 | Special Segments |
20.6 | Registry specific information |
20.7 | Format of Debug Information |
Part 3 -- Component Object Model Protocols and Services |
21 | Interface Definition Language |
21.1 | Object RPC IDL Extensions |
21.1.1 | ODL Extensions |
21.1.2 | `Object' Interface Attribute |
21.1.3 | Interface Name as a Type |
21.1.4 | No handle_t Required |
21.1.5 | Interface Inheritance |
21.1.6 | iid_is and Use of void* |
21.1.7 | All Methods Must Return void or HRESULT |
21.1.8 | The wire_marshal Attribute |
21.1.9 | The user_marshal Attribute |
21.1.10 | User Supplied Routines |
21.1.10.1 | _UserSize |
21.1.10.2 | _UserMarshal |
21.1.10.3 | _UserUnmarshal |
21.1.10.4 | _UserFree |
21.1.11 | The Library Keyword |
21.2 | Mapping from ORPC IDL to DCE RPC IDL |
21.2.1 | An Example |
21.2.1.1 | Object RPC Style |
21.2.1.2 | DCE Style |
22 | Component Object Model Protocol |
22.1 | Purpose |
22.1.1 | Data Marshaling |
22.1.2 | Security |
22.1.3 | Safe Non-Coordinated Versioning of Interfaces |
22.2 | Overall Operation |
22.2.1 | Object Calls |
22.2.2 | OXIDs and Object Exporters |
22.2.3 | Marshaled Interface References |
22.2.4 | Reference Counting |
22.2.5 | Pinging |
22.2.5.1 | Delta Pinging |
22.2.6 | QueryInterface |
22.2.7 | Causality ID |
22.3 | Data Types and Structures |
22.3.1 | DCE Packet Headers |
22.3.2 | ORPC Base Definitions |
22.3.3 | OBJREF |
22.3.3.1 | OBJREF_STANDARD |
22.3.3.2 | OBJREF_HANDLER |
22.3.3.3 | OBJREF_CUSTOM |
22.3.4 | STDOBJREF |
22.3.5 | SORFLAGS |
22.3.6 | ORPCINFOFLAGS |
22.3.7 | ORPCTHIS |
22.3.8 | ORPCTHAT |
22.3.9 | HRESULTs |
22.3.10 | Body Extensions |
22.3.10.1 | Debugging Extension |
22.3.10.2 | Extended Error Extension |
22.4 | IRemUnknown interface |
22.4.1 | IRemUnknown::RemQueryInterface |
22.4.1.1 | REMQIRESULT |
22.4.2 | IRemUnknown::RemAddRef |
22.4.2.1 | REMINTERFACEREF |
22.4.3 | IRemUnknown::RemRelease |
22.5 | The OXID Resolver |
22.5.1 | OXID Resolver Ports/Endpoints |
22.5.2 | The IOXIDResolver Interface |
22.5.2.1 | IOXIDResolver::ResolveOxid |
22.5.2.1.1 | Lookup Between Friends |
22.5.2.1.2 | Lazy Protocol Registration |
22.5.2.2 | IOXIDResolver::SimplePing |
22.5.2.3 | IOXIDResolver::ComplexPing |
22.6 | Wrapping DCE RPC calls to Interoperate with ORPC |
22.6.1 | Implementing ORPC in RPC |
Part 4 -- Other ActiveX Core Technologies |
23 | MSRPC |
24 | Registry |
24.1 | Structure of the Registry |
24.2 | Registry Storage Space |
24.3 | Predefined Keys |
24.4 | Opening, Creating, and Closing Keys |
24.5 | Writing and Deleting Registry Data |
24.6 | Retrieving Data from the Registry |
24.7 | Registry Files |
24.8 | The Registry API Descriptions |
RegCloseKey() |
RegConnectRegistry() |
RegCreateKeyEx() |
RegDeleteKey() |
RegDeleteValue() |
RegEnumKeyEx() |
RegEnumValue() |
RegFlushKey() |
RegGetKeySecurity() |
RegLoadKey() |
RegNotifyChangeKeyValue() |
RegOpenKeyEx() |
RegQueryInfoKey() |
RegQueryMultipleValues() |
RegQueryValueEx() |
RegReplaceKey() |
RegRestoreKey() |
RegSaveKey() |
RegSetKeySecurity() |
RegSetValueEx() |
RegUnLoadKey() |
24.9 | Registry Structures |
24.9.1 | VALENT |
25 | Security Support Provider Interface |
25.1 | Security Package Capabilities |
25.2 | Initializing the Security Provider |
25.2.1 | Initializing the SSPI |
25.3 | Loading the Security Provider DLL |
25.4 | Provider Initialization |
25.5 | Security Function Table |
25.5.1 | Memory Use, Security Buffers, and Descriptor |
25.6 | Establishing an Authenticated Connection |
25.6.1 | Client Context Initialization |
25.6.2 | Server Context Initialization |
25.6.3 | Client Continuation |
25.6.4 | Server Continuation |
25.7 | Secure Message Exchange |
25.7.1 | Sender |
25.7.2 | Receiver |
25.7.3 | Impersonation |
25.7.4 | Using Delegation in Kerberos |
25.7.5 | Security Context Details |
25.7.5.1 | Connection-Oriented Contexts |
25.7.5.2 | Datagram Contexts |
25.7.5.3 | Stream Contexts |
25.7.5.4 | Context Requirements |
25.8 | Datatype Descriptions |
25.8.1 | BINDPTR |
25.8.2 | BOOL |
25.8.3 | BSTR |
25.8.4 | BYTE |
25.8.5 | CLIPFORMAT |
25.8.6 | CONST |
25.8.7 | CUSTDATA |
25.8.8 | DISPID |
25.8.9 | DISPPARAMS |
25.8.10 | DWORD |
25.8.11 | FAR * |
25.8.12 | FUNCDESC |
25.8.13 | HANDLE |
25.8.14 | HBITMAP |
25.8.15 | HENHMETAFILE |
25.8.16 | HGLOBAL |
25.8.17 | HINSTANCE |
25.8.18 | HKEY |
25.8.19 | HMETAFILEPICT |
25.8.20 | HREFTYPE |
25.8.21 | HTASK |
25.8.22 | HUGEP |
25.8.23 | INVOKEKIND |
25.8.24 | IPID |
25.8.25 | LANGID |
25.8.26 | LCID |
25.8.27 | LCTYPE |
25.8.28 | LONG |
25.8.29 | LPBC |
25.8.30 | LPBYTE |
25.8.31 | LPCLSID |
25.8.32 | LPCOLESTR |
25.8.33 | LPCTSTR |
25.8.34 | LPCWSTR |
25.8.35 | LPDWORD |
25.8.36 | LPIID |
25.8.37 | LPMALLOC |
25.8.38 | LPMALLOCSPY |
25.8.39 | LPMARSHAL |
25.8.40 | LPMONIKER |
25.8.41 | LPOLESTR |
25.8.42 | LPRUNNINGOBJECTTABLE |
25.8.43 | LPSECURITY_ATTRIBUTES |
25.8.44 | LPSTR |
25.8.45 | LPSTREAM |
25.8.46 | LPUNKNOWN |
25.8.47 | LPVOID |
25.8.48 | LPWORD |
25.8.49 | LPWSTR |
25.8.50 | MEMBERID |
25.8.51 | OLECHAR |
25.8.52 | PFILETIME |
25.8.53 | PHKEY |
25.8.54 | PROPID |
25.8.55 | PROPSPEC |
25.8.55.1 | Members |
25.8.55.2 | Remarks |
25.8.56 | PROPVARIANT |
25.8.56.1 | Remarks |
25.8.57 | PSECURITY_DESCRIPTOR |
25.8.58 | PULONG |
25.8.59 | PVALENT |
25.8.60 | PVOID |
25.8.61 | PWCHAR |
25.8.62 | REFCLSID |
25.8.63 | REFFMTID |
25.8.64 | REFGUID |
25.8.65 | REFIID |
25.8.66 | REGKIND |
25.8.67 | REGSAM |
25.8.68 | RPC_AUTH_IDENTITY_HANDLE |
25.8.69 | RPC_AUTHZ_HANDLE |
25.8.70 | RPC_FAR |
25.8.71 | RPCOLEMESSAGE |
25.8.72 | SECURITY_INFORMATION |
25.8.73 | SIZEL |
25.8.74 | SOLE_AUTHENTICATION_SERVICE |
25.8.74.1 | Members |
25.8.75 | STDAPI |
25.8.76 | SYSKIND |
25.8.77 | SYSTEMTIME |
25.8.78 | TLIBATTR |
25.8.79 | TYPEATTR |
25.8.80 | UINT |
25.8.81 | ULARGE_INTEGER |
25.8.81.1 | Members |
25.8.82 | ULONG |
25.8.83 | USHORT |
25.8.84 | VARDESC |
25.8.85 | VARIANT and VARIANTARG |
25.8.86 | VARTYPE |
25.8.87 | VOID |
25.8.88 | WCHAR |
25.8.89 | WINAPI |
25.8.90 | WINOLEAPI |
25.8.91 | WORD |
A | Header Files and Libraries |
B | Bibliography |
C | Document Revision History |
ACTIVEX GLOSSARY |
Figures |
1-1 | COM Client and Object Communicate Directly |
2-1 | Traditional System Service API Communication Paradigm |
2-2 | COM Client and Object Communicate Directly |
3-1 | An Object that Supports Three Interfaces |
3-2 | Interfaces Extend towards Clients Connected to Them |
3-3 | Two Applications May Connect to Each Other's Objects |
3-4 | The IUnknown Interface Extends from the Top of Objects |
3-5 | Interface Negotiation |
3-6 | An Interface Pointer |
3-7 | Rrepresentation of Function Tables |
3-8 | Clients Use, and Objects are Called by, In-Process Code |
3-9 | Locating and Accessing Objects in COM |
3-10 | A COM Client Creates Objects through a Class Factory |
3-11 | General Structure of a COM Server |
3-12 | Transparent Access through Proxy and Stub Objects |
3-13 | Components of COM's Distributed Architecture |
3-14 | The SCM Loads and Launches Servers |
3-15 | Security by Configuration |
3-16 | Per-Interface Security Using Registry Keys |
3-17 | Containment of an Inner Object and Delegation to its Interfaces |
3-18 | Aggregation of an Inner Object |
3-19 | A Flat-File Structure for a Diary Application |
3-20 | A Structured Storage Scheme for a Diary Application |
3-21 | A Composite Moniker |
3-22 | An Object Implemented with the IAdviseSink Interface |
4-1 | The Interface Structure |
4-2 | Object Data Placement |
4-3 | In-Process Objects are Always Used |
4-4 | Category 1: Nested Lifetimes |
4-5 | Category 2: Staggered Overlapping Lifetimes |
4-6 | Recommended Backpointer Design |
4-7 | An Object with IDataObject and IPersistFile Interfaces |
8-1 | Using Inner Objects through Containment |
8-2 | Exposing an Inner Object's Interface |
8-3 | Aggregation Mechanism |
9-1 | A Client and Server Process |
9-2 | Establishing the Second Connection |
9-3 | Simplified Conceptual View of Client-Server Remoting Structures |
11-1 | NTLM Use of DCOM and Secured RPC |
11-2 | PAULAS and PAULAD |
11-3 | Protocol Sequence between Client and Server |
11-4 | Client to PAULAD |
16-1 | A Moniker Referring to a Spreadsheet |
16-2 | Reduction of a Moniker |
25-1 | NTLM Challenge Response Authentication Protocol via SSPI |
Tables |
4-1 | IUnknown Methods in VTable Order |
4-2 | IProvideClassInfo Methods in VTable Order |
4-3 | IProvideClassInfo Methods |
4-4 | IProvideClassInfo2 Methods in VTable Order |
4-5 | IProvideClassInfo Methods |
4-6 | IProvideClassInfo2 Methods |
5-1 | IMalloc Methods in VTable Order |
5-2 | IMalloc Methods |
5-3 | IMallocSpy Methods in Vtable Order |
5-4 | IMallocSpy Methods |
5-5 | IOleContainer Methods in VTable Order |
5-6 | IParseDisplayName Method |
5-7 | IOleContainer Methods |
5-8 | IPersistMoniker Methods in Vtable Order |
5-9 | IPersist Method |
5-10 | IPersistMoniker Methods |
5-11 | IRunnableObject Methods in VTable Order |
5-12 | IRunnableObject Methods |
6-1 | IMessageFilter Methods in VTable Order |
6-2 | IMessageFilter Methods |
7-1 | ICatInformation Methods in VTable Order |
7-2 | ICatInformation Methods |
7-3 | IMultiQI Methods in VTable Order |
7-4 | IMultiQI Methods |
7-5 | COM Use of CLSCTX Values |
8-1 | ICatRegister Methods in VTable Order |
8-2 | ICatRegister Methods |
8-3 | IClassFactory Methods in VTable Order |
8-4 | IClassFactory Methods |
8-5 | IClassFactory2 Methods in VTable Order |
8-6 | IClassFactory Methods |
8-7 | IClassFactory2 Methods |
8-8 | IExternalConnection Methods in VTable Order |
8-9 | IExternalConnection Methods |
8-10 | Allowable REGCLS Combinations |
9-1 | IMarshal Methods in VTable Order |
9-2 | IMarshal Methods |
9-3 | Interpretation of dataPresentation |
9-4 | IStdMarshalInfo Methods in VTable Order |
9-5 | IStdMarshalInfo Methods |
10-1 | IClientSecurity Methods in VTable Order |
10-2 | IClientSecurity Methods |
10-3 | IServerSecurity Methods in VTable Order |
10-4 | IServerSecurity Methods |
10-5 | Default NTLMSSP Authentication Settings |
11-1 | Response Message Notation Key |
12-1 | IErrorInfo Elements |
12-2 | ICreateErrorInfo Elements |
12-3 | ISupportErrorInfo Elements |
12-4 | HRESULT Facility Codes |
12-5 | IErrorLog Methods in Vtable Order |
12-6 | IErrorLog Methods |
15-1 | String Property Names |
15-2 | Security Levels |
15-3 | FMTID String Names |
15-4 | ILockBytes Methods in VTable Order |
15-5 | ILockBytes Methods |
15-6 | IPersist Methods in VTable Order |
15-7 | IPersist Methods |
15-8 | IPersistFile Methods in VTable Order |
15-9 | IPersist Methods |
15-10 | IPersistFile Methods |
15-11 | IPersistMemory Methods in VTable Order |
15-12 | IPersist Methods |
15-13 | IPersistMemory Methods |
15-14 | IPersistPropertyBag Methods in VTable Order |
15-15 | IPersist Methods |
15-16 | IPersistPropertyBag Methods |
15-17 | IPersistStorage Methods in VTable Order |
15-18 | IPersist Methods |
15-19 | IPersistStorage Methods |
15-20 | IPersistStream Methods in VTable Order |
15-21 | IPersist Methods |
15-22 | IPersistStream Methods |
15-23 | IPersistStreamInit Methods in VTable Order |
15-24 | IPersistStreamInit Methods |
15-25 | IPropertyBag Methods in VTable Order |
15-26 | IPropertyBag Methods |
15-27 | IPropertySetStorage Methods in VTable Order |
15-28 | IPropertySetStorage Methods |
15-29 | IPropertySetStorage Programming Information |
15-30 | IPropertyStorage Methods in VTable Order |
15-31 | IPropertyStorage Methods |
15-32 | IPropertyStorage Programming Information |
15-33 | IRootStorage Methods in VTable Order |
15-34 | IRootStorage Methods |
15-35 | IStorage Methods in VTable Order |
15-36 | IStorage Methods |
15-37 | IStream Read and Seek Asynchronous Behavior |
15-38 | IStream Methods in VTable Order |
15-39 | IStream Methods |
15-40 | PROPSETFLAG Programming Information |
15-41 | STGM Values |
16-1 | IBindCtx Methods in VTable Order |
16-2 | IBindCtx Methods |
16-3 | IClassActivator Methods in VTable Order |
16-4 | IClassActivator Methods |
16-5 | IMoniker Methods in VTable Order |
16-6 | IPersist Methods |
16-7 | IPersistStream Methods |
16-8 | IMoniker Methods |
16-9 | IOleItemContainer Methods in VTable Order |
16-10 | IParseDisplayName Methods |
16-11 | IOleContainer Methods |
16-12 | IOleItemContainer Methods |
16-13 | IParseDisplayName Methods in VTable Order |
16-14 | IParseDisplayName Method |
16-15 | IROTData Methods in VTable Order |
16-16 | IROTData Method |
16-17 | IRunningObjectTable Methods in VTable Order |
16-18 | IRunningObjectTable Methods |
17-1 | FORMATETC Structure Fields |
17-2 | IAdviseSink Asynchronous Notification Methods |
17-3 | IAdviseSink Methods in Vtable Order |
17-4 | IAdviseSink Methods |
17-5 | IDataAdviseHolder Methods in VTable Order |
17-6 | IDataAdviseHolder Methods |
17-7 | IDataObject Methods in VTable Order |
17-8 | IDataObject Methods |
18-1 | Type Description Interface Elements |
18-2 | Type Description Forms |
18-3 | IProvideClassInfo Elements |
18-4 | ITypeComp Elements |
19-1 | IDispatch Member Functions |
19-2 | IDispatch Elements |
19-3 | NLS Functions |
19-4 | Primary and Sublanguage ID Special Combinations |
19-5 | Primary LANGIDs |
19-6 | Sublanguage IDs Supported by Automation |
19-7 | Supported LCTYPES |
19-8 | Equivalence beteen LCTYPE Values and Win.ini [intl] Information |
20-1 | Semantic Specific Information |
20-2 | Existing Opcodes |
20-3 | General Semantic Extents |
21-1 | pFlags Layout |
22-1 | OBJREF_STANDARD Members |
22-2 | OBJREF_HANDLER Members |
22-3 | OBJREF_CUSTOM Members |
22-4 | STDOBJREF Members |
22-5 | SORFLAGS Meanings |
22-6 | ORPCINFOFLAGS Meanings |
22-7 | ORPCTHIS Members |
22-8 | ORPCTHAT Members |
22-9 | Defined HRESULTs |
22-10 | HRESULT Facility Fields |
22-11 | IRemUnknown::RemQueryInterface Arguments |
22-12 | IRemUnknown::RemQueryInterface Return Values |
22-13 | REMQIRESULT Members |
22-14 | IRemUnknown::RemAddRef Arguments |
22-15 | IRemUnknown::RemAddRef Return Values |
22-16 | REMINTERFACEREF Members |
22-17 | IRemUnknown::RemRelease Arguments |
22-18 | IRemUnknown::RemRelease Return Values |
22-19 | OXID Resolver Protocol String Names |
22-20 | IOXIDResolver::ResolveOxid Arguments |
22-21 | IOXIDResolver::ResolveOxid Return Values |
22-22 | IOXIDResolver::SimplePing Arguments |
22-23 | IOXIDResolver::SimplePing Return Values |
22-24 | IOXIDResolver::ComplexPing Arguments |
22-25 | IOXIDResolver::ComplexPing Return Values |
24-1 | Registry Entry Points |
24-2 | VALENT ve_type Values |
25-1 | Security Contexts |
25-2 | Buffer Lists |
25-3 | Buffer List after Successful Return |
25-4 | Context Requirements |
25-5 | Sublanguages Using the Latin 1 Script |
25-6 | Sublanguages Using Latin 2 Script |
25-7 | Sublanguages and Locales Using Cyrillic Script |
25-8 | Sublanguages and Locales Using Other Script |
25-9 | Special Identifiers |
25-10 | LCTYPE Values |
25-11 | LOCALE_ILZERO Values |
25-12 | LCTYPE Values (continued) |
25-13 | LOCALE_INEGNUMBER Values |
25-14 | LCTYPE Values (continued) |
25-15 | LOCALE_ICURRENCY Values |
25-16 | LCTYPE Values (continued) |
25-17 | LOCALE_INEGCURR Values |
25-18 | LCTYPE Values (continued) |
25-19 | LOCALE_IDATE Values |
25-20 | LCTYPE Values (continued) |
25-21 | LOCALE_ILDATE Values |
25-22 | LCTYPE Values (continued) |
25-23 | LOCALE_ITIME Values |
25-24 | LCTYPE Values (continued) |
25-25 | LOCALE_ICENTURY Values |
25-26 | LCTYPE Values (continued) |
25-27 | LOCALE_ITLZERO Values |
25-28 | LCTYPE Values (continued) |
25-29 | LOCALE_IDAYLZERO Values |
25-30 | LCTYPE Values (continued) |
25-31 | LOCALE_IMONLZERO Values |
25-32 | LCTYPE Values (continued) |
25-33 | LOCALE_S1159 Values |
25-34 | LCTYPE Values (continued) |
25-35 | LOCALE_IOPTIONALCALENDAR Values |
25-36 | LCTYPE Values (continued) |
25-37 | LOCALE_IFIRSTDAYOFWEEK Values |
25-38 | LCTYPE Values (continued) |
25-39 | LOCALE_IFIRSTWEEKOFYEAR Values |
25-40 | LCTYPE Values (continued) |
25-41 | LOCALE_IPOSSIGNPOSN Values |
25-42 | LCTYPE Values (continued) |
25-43 | MEMBERID Format |
25-44 | PROPVARIANT Types |
25-45 | Clipboard Format Identifiers |
25-46 | REGKIND Values |
25-47 | Security Information Bit Flags |
25-48 | SYSKIND Values |
25-49 | tagVARIANT vt Values |
A-1 | Header Files and Libraries |
Index |