1// +build !windows 2 3package ole 4 5import ( 6 "time" 7 "unsafe" 8) 9 10// coInitialize initializes COM library on current thread. 11// 12// MSDN documentation suggests that this function should not be called. Call 13// CoInitializeEx() instead. The reason has to do with threading and this 14// function is only for single-threaded apartments. 15// 16// That said, most users of the library have gotten away with just this 17// function. If you are experiencing threading issues, then use 18// CoInitializeEx(). 19func coInitialize() error { 20 return NewError(E_NOTIMPL) 21} 22 23// coInitializeEx initializes COM library with concurrency model. 24func coInitializeEx(coinit uint32) error { 25 return NewError(E_NOTIMPL) 26} 27 28// CoInitialize initializes COM library on current thread. 29// 30// MSDN documentation suggests that this function should not be called. Call 31// CoInitializeEx() instead. The reason has to do with threading and this 32// function is only for single-threaded apartments. 33// 34// That said, most users of the library have gotten away with just this 35// function. If you are experiencing threading issues, then use 36// CoInitializeEx(). 37func CoInitialize(p uintptr) error { 38 return NewError(E_NOTIMPL) 39} 40 41// CoInitializeEx initializes COM library with concurrency model. 42func CoInitializeEx(p uintptr, coinit uint32) error { 43 return NewError(E_NOTIMPL) 44} 45 46// CoUninitialize uninitializes COM Library. 47func CoUninitialize() {} 48 49// CoTaskMemFree frees memory pointer. 50func CoTaskMemFree(memptr uintptr) {} 51 52// CLSIDFromProgID retrieves Class Identifier with the given Program Identifier. 53// 54// The Programmatic Identifier must be registered, because it will be looked up 55// in the Windows Registry. The registry entry has the following keys: CLSID, 56// Insertable, Protocol and Shell 57// (https://msdn.microsoft.com/en-us/library/dd542719(v=vs.85).aspx). 58// 59// programID identifies the class id with less precision and is not guaranteed 60// to be unique. These are usually found in the registry under 61// HKEY_LOCAL_MACHINE\SOFTWARE\Classes, usually with the format of 62// "Program.Component.Version" with version being optional. 63// 64// CLSIDFromProgID in Windows API. 65func CLSIDFromProgID(progId string) (*GUID, error) { 66 return nil, NewError(E_NOTIMPL) 67} 68 69// CLSIDFromString retrieves Class ID from string representation. 70// 71// This is technically the string version of the GUID and will convert the 72// string to object. 73// 74// CLSIDFromString in Windows API. 75func CLSIDFromString(str string) (*GUID, error) { 76 return nil, NewError(E_NOTIMPL) 77} 78 79// StringFromCLSID returns GUID formated string from GUID object. 80func StringFromCLSID(clsid *GUID) (string, error) { 81 return "", NewError(E_NOTIMPL) 82} 83 84// IIDFromString returns GUID from program ID. 85func IIDFromString(progId string) (*GUID, error) { 86 return nil, NewError(E_NOTIMPL) 87} 88 89// StringFromIID returns GUID formatted string from GUID object. 90func StringFromIID(iid *GUID) (string, error) { 91 return "", NewError(E_NOTIMPL) 92} 93 94// CreateInstance of single uninitialized object with GUID. 95func CreateInstance(clsid *GUID, iid *GUID) (*IUnknown, error) { 96 return nil, NewError(E_NOTIMPL) 97} 98 99// GetActiveObject retrieves pointer to active object. 100func GetActiveObject(clsid *GUID, iid *GUID) (*IUnknown, error) { 101 return nil, NewError(E_NOTIMPL) 102} 103 104// VariantInit initializes variant. 105func VariantInit(v *VARIANT) error { 106 return NewError(E_NOTIMPL) 107} 108 109// VariantClear clears value in Variant settings to VT_EMPTY. 110func VariantClear(v *VARIANT) error { 111 return NewError(E_NOTIMPL) 112} 113 114// SysAllocString allocates memory for string and copies string into memory. 115func SysAllocString(v string) *int16 { 116 u := int16(0) 117 return &u 118} 119 120// SysAllocStringLen copies up to length of given string returning pointer. 121func SysAllocStringLen(v string) *int16 { 122 u := int16(0) 123 return &u 124} 125 126// SysFreeString frees string system memory. This must be called with SysAllocString. 127func SysFreeString(v *int16) error { 128 return NewError(E_NOTIMPL) 129} 130 131// SysStringLen is the length of the system allocated string. 132func SysStringLen(v *int16) uint32 { 133 return uint32(0) 134} 135 136// CreateStdDispatch provides default IDispatch implementation for IUnknown. 137// 138// This handles default IDispatch implementation for objects. It haves a few 139// limitations with only supporting one language. It will also only return 140// default exception codes. 141func CreateStdDispatch(unk *IUnknown, v uintptr, ptinfo *IUnknown) (*IDispatch, error) { 142 return nil, NewError(E_NOTIMPL) 143} 144 145// CreateDispTypeInfo provides default ITypeInfo implementation for IDispatch. 146// 147// This will not handle the full implementation of the interface. 148func CreateDispTypeInfo(idata *INTERFACEDATA) (*IUnknown, error) { 149 return nil, NewError(E_NOTIMPL) 150} 151 152// copyMemory moves location of a block of memory. 153func copyMemory(dest unsafe.Pointer, src unsafe.Pointer, length uint32) {} 154 155// GetUserDefaultLCID retrieves current user default locale. 156func GetUserDefaultLCID() uint32 { 157 return uint32(0) 158} 159 160// GetMessage in message queue from runtime. 161// 162// This function appears to block. PeekMessage does not block. 163func GetMessage(msg *Msg, hwnd uint32, MsgFilterMin uint32, MsgFilterMax uint32) (int32, error) { 164 return int32(0), NewError(E_NOTIMPL) 165} 166 167// DispatchMessage to window procedure. 168func DispatchMessage(msg *Msg) int32 { 169 return int32(0) 170} 171 172func GetVariantDate(value uint64) (time.Time, error) { 173 return time.Now(), NewError(E_NOTIMPL) 174} 175