Module: Unknownr::Windows

Extended by:
FFI::Library
Defined in:
lib/unknownr.rb

Defined Under Namespace

Modules: AnonymousSupport, COM Classes: BLOB, BSTRBLOB, CA, DECIMAL, DISPPARAMS, FILETIME, GUID, INTERFACEDATA, LARGE_INTEGER, METHODDATA, PARAMDATA, PROPERTYKEY, PROPVARIANT, SAFEARRAY, SAFEARRAYBOUND, ULARGE_INTEGER, VARIANT

Constant Summary collapse

S_OK =
0
S_FALSE =
1
E_UNEXPECTED =
0x8000FFFF - 0x1_0000_0000
E_NOTIMPL =
0x80004001 - 0x1_0000_0000
E_OUTOFMEMORY =
0x8007000E - 0x1_0000_0000
E_INVALIDARG =
0x80070057 - 0x1_0000_0000
E_NOINTERFACE =
0x80004002 - 0x1_0000_0000
E_POINTER =
0x80004003 - 0x1_0000_0000
E_HANDLE =
0x80070006 - 0x1_0000_0000
E_ABORT =
0x80004004 - 0x1_0000_0000
E_FAIL =
0x80004005 - 0x1_0000_0000
E_ACCESSDENIED =
0x80070005 - 0x1_0000_0000
E_PENDING =
0x8000000A - 0x1_0000_0000
FACILITY_WIN32 =
7
ERROR_CANCELLED =
1223
CLSCTX_INPROC_SERVER =
0x1
CLSCTX_INPROC_HANDLER =
0x2
CLSCTX_LOCAL_SERVER =
0x4
CLSCTX_INPROC_SERVER16 =
0x8
CLSCTX_REMOTE_SERVER =
0x10
CLSCTX_INPROC_HANDLER16 =
0x20
CLSCTX_RESERVED1 =
0x40
CLSCTX_RESERVED2 =
0x80
CLSCTX_RESERVED3 =
0x100
CLSCTX_RESERVED4 =
0x200
CLSCTX_NO_CODE_DOWNLOAD =
0x400
CLSCTX_RESERVED5 =
0x800
CLSCTX_NO_CUSTOM_MARSHAL =
0x1000
CLSCTX_ENABLE_CODE_DOWNLOAD =
0x2000
CLSCTX_NO_FAILURE_LOG =
0x4000
CLSCTX_DISABLE_AAA =
0x8000
CLSCTX_ENABLE_AAA =
0x10000
CLSCTX_FROM_DEFAULT_CONTEXT =
0x20000
CLSCTX_ACTIVATE_32_BIT_SERVER =
0x40000
CLSCTX_ACTIVATE_64_BIT_SERVER =
0x80000
CLSCTX_ENABLE_CLOAKING =
0x100000
CLSCTX_PS_DLL =
-0x80000000
CLSCTX_INPROC =
CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER
CLSCTX_ALL =
CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER
CLSCTX_SERVER =
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER
IUnknown =
Unknown =
IDispatch =
Dispatch =
DCallback =
IConnectionPointContainer =
ConnectionPointContainer =
IConnectionPoint =
ConnectionPoint =
IObjectWithSite =
ObjectWithSite =
VT_EMPTY =
0
VT_NULL =
1
VT_I2 =
2
VT_I4 =
3
VT_R4 =
4
VT_R8 =
5
VT_CY =
6
VT_DATE =
7
VT_BSTR =
8
VT_DISPATCH =
9
VT_ERROR =
10
VT_BOOL =
11
VT_VARIANT =
12
VT_UNKNOWN =
13
VT_DECIMAL =
14
VT_I1 =
16
VT_UI1 =
17
VT_UI2 =
18
VT_UI4 =
19
VT_I8 =
20
VT_UI8 =
21
VT_INT =
22
VT_UINT =
23
VT_VOID =
24
VT_HRESULT =
25
VT_PTR =
26
VT_SAFEARRAY =
27
VT_CARRAY =
28
VT_USERDEFINED =
29
VT_LPSTR =
30
VT_LPWSTR =
31
VT_FILETIME =
64
VT_BLOB =
65
VT_STREAM =
66
VT_STORAGE =
67
VT_STREAMED_OBJECT =
68
VT_STORED_OBJECT =
69
VT_BLOB_OBJECT =
70
VT_CF =
71
VT_CLSID =
72
VT_VECTOR =
0x1000
VT_ARRAY =
0x2000
VT_BYREF =
0x4000
VT_RESERVED =
0x8000
VT_ILLEGAL =
0xffff
VT_ILLEGALMASKED =
0xfff
VT_TYPEMASK =
0xff
OLEIVERB_PRIMARY =
0
OLEIVERB_SHOW =
-1
OLEIVERB_OPEN =
-2
OLEIVERB_HIDE =
-3
OLEIVERB_UIACTIVATE =
-4
OLEIVERB_INPLACEACTIVATE =
-5
OLEIVERB_DISCARDUNDOSTATE =
-6
IOleWindow =
OleWindow =
IOleInPlaceObject =
OleInPlaceObject =
IOleInPlaceSite =
OleInPlaceSite =
IOleClientSite =
OleClientSite =
OLEGETMONIKER_ONLYIFTHERE =
1
OLEGETMONIKER_FORCEASSIGN =
2
OLEGETMONIKER_UNASSIGN =
3
OLEGETMONIKER_TEMPFORUSER =
4
OLEWHICHMK_CONTAINER =
1
OLEWHICHMK_OBJREL =
2
OLEWHICHMK_OBJFULL =
3
USERCLASSTYPE_FULL =
1
USERCLASSTYPE_SHORT =
2
USERCLASSTYPE_APPNAME =
3
OLEMISC_RECOMPOSEONRESIZE =
0x00000001
OLEMISC_ONLYICONIC =
0x00000002
OLEMISC_INSERTNOTREPLACE =
0x00000004
OLEMISC_STATIC =
0x00000008
OLEMISC_CANTLINKINSIDE =
0x00000010
OLEMISC_CANLINKBYOLE1 =
0x00000020
OLEMISC_ISLINKOBJECT =
0x00000040
OLEMISC_INSIDEOUT =
0x00000080
OLEMISC_ACTIVATEWHENVISIBLE =
0x00000100
OLEMISC_RENDERINGISDEVICEINDEPENDENT =
0x00000200
OLEMISC_INVISIBLEATRUNTIME =
0x00000400
OLEMISC_ALWAYSRUN =
0x00000800
OLEMISC_ACTSLIKEBUTTON =
0x00001000
OLEMISC_ACTSLIKELABEL =
0x00002000
OLEMISC_NOUIACTIVATE =
0x00004000
OLEMISC_ALIGNABLE =
0x00008000
OLEMISC_SIMPLEFRAME =
0x00010000
OLEMISC_SETCLIENTSITEFIRST =
0x00020000
OLEMISC_IMEMODE =
0x00040000
OLEMISC_IGNOREACTIVATEWHENVISIBLE =
0x00080000
OLEMISC_WANTSTOMENUMERGE =
0x00100000
OLEMISC_SUPPORTSMULTILEVELUNDO =
0x00200000
OLECLOSE_SAVEIFDIRTY =
0
OLECLOSE_NOSAVE =
1
OLECLOSE_PROMPTSAVE =
2
IOleObject =
OleObject =
CC_FASTCALL =
0
CC_CDECL =
1
CC_MSCPASCAL =
CC_CDECL + 1
CC_PASCAL =
CC_MSCPASCAL
CC_MACPASCAL =
CC_PASCAL + 1
CC_STDCALL =
CC_MACPASCAL + 1
CC_FPFASTCALL =
CC_STDCALL + 1
CC_SYSCALL =
CC_FPFASTCALL + 1
CC_MPWCDECL =
CC_SYSCALL + 1
CC_MPWPASCAL =
CC_MPWCDECL + 1
CC_MAX =
CC_MPWPASCAL + 1
DISPATCH_METHOD =
0x1
DISPATCH_PROPERTYGET =
0x2
DISPATCH_PROPERTYPUT =
0x4
DISPATCH_PROPERTYPUTREF =
0x8

Class Method Summary collapse

Class Method Details

.DetonateHresult(name, *args) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/unknownr.rb', line 38

def DetonateHresult(name, *args)
	failed = FAILED(result = send(name, *args)) and raise "#{name} failed (hresult #{format('%#08x', result)})."

	result
ensure
	yield failed if block_given?
end

.FAILED(hr) ⇒ Object



30
# File 'lib/unknownr.rb', line 30

def FAILED(hr) hr < 0 end

.HRESULT_FROM_WIN32(x) ⇒ Object



31
# File 'lib/unknownr.rb', line 31

def HRESULT_FROM_WIN32(x) (x <= 0) ? x : (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 end

.InitializeOleObject



323
324
325
326
327
# File 'lib/unknownr.rb', line 323

def InitializeOle
	DetonateHresult(:OleInitialize, nil)

	at_exit { OleUninitialize() }
end

.SUCCEEDED(hr) ⇒ Object



29
# File 'lib/unknownr.rb', line 29

def SUCCEEDED(hr) hr >= 0 end