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
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
83 84 85 |
# File 'lib/windows/synchronize.rb', line 83 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.
89 90 91 92 93 94 95 96 97 98 |
# File 'lib/windows/synchronize.rb', line 89 def RUBY_CRITICAL(&block) critical_section = [0].pack('L') begin InitializeCriticalSection(critical_section) EnterCriticalSection(critical_section) block.call ensure LeaveCriticalSection(critical_section) end end |