Module: Windows::Synchronize
- Defined in:
- lib/windows/synchronize.rb
Constant Summary collapse
- INFINITE =
0xFFFFFFFF
- WAIT_OBJECT_0 =
0
- WAIT_TIMEOUT =
0x102
- WAIT_ABANDONED =
128
- WAIT_ABANDONED_0 =
WAIT_ABANDONED
- WAIT_FAILED =
0xFFFFFFFF
- STATUS_WAIT_0 =
0
- STATUS_ABANDONED_WAIT_0 =
128
- STATUS_USER_APC =
192
- STATUS_TIMEOUT =
258
- STATUS_PENDING =
259
- QS_ALLEVENTS =
Wake mask constants
0x04BF
- QS_ALLINPUT =
0x04FF
- QS_ALLPOSTMESSAGE =
0x0100
- QS_HOTKEY =
0x0080
- QS_INPUT =
0x407
- QS_KEY =
0x0001
- QS_MOUSE =
0x0006
- QS_MOUSEBUTTON =
0x0004
- QS_MOUSEMOVE =
0x0002
- QS_PAINT =
0x0020
- QS_POSTMESSAGE =
0x0008
- QS_RAWINPUT =
0x0400
- QS_SENDMESSAGE =
0x0040
- QS_TIMER =
0x0010
- MWMO_ALERTABLE =
Wait type constants
0x0002
- MWMO_INPUTAVAILABLE =
0x0004
- MWMO_WAITALL =
0x0001
- EVENT_ALL_ACCESS =
Access rights
0x1F0003
- EVENT_MODIFY_STATE =
0x0002
- MUTEX_ALL_ACCESS =
0x1F0001
- MUTEX_MODIFY_STATE =
0x0001
- SEMAPHORE_ALL_ACCESS =
0x1F0003
- SEMAPHORE_MODIFY_STATE =
0x0002
- PRIVATE_NAMESPACE_FLAG_DESTROY =
Namespace flags
0x00000001
Instance Method Summary collapse
-
#HasOverlappedIoCompleted(overlapped) ⇒ Object
Macros.
-
#RUBY_CRITICAL(&block) ⇒ Object
This simulates the RUBY_CRITICAL macro from rubysig.h, although I’ve added the begin/ensure wrapper to boot.
Instance Method Details
#HasOverlappedIoCompleted(overlapped) ⇒ Object
Macros
92 93 94 |
# File 'lib/windows/synchronize.rb', line 92 def HasOverlappedIoCompleted(overlapped) overlapped[0,4].unpack('L')[0] != STATUS_PENDING end |
#RUBY_CRITICAL(&block) ⇒ Object
This simulates the RUBY_CRITICAL macro from rubysig.h, although I’ve added the begin/ensure wrapper to boot.
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/windows/synchronize.rb', line 99 def RUBY_CRITICAL(&block) critical_section = [0].pack('L') begin InitializeCriticalSection(critical_section) EnterCriticalSection(critical_section) block.call ensure LeaveCriticalSection(critical_section) end end |