137{
143
144
145 for (;;)
146 {
147
149
150
152
153
154 if (Gate->Header.SignalState) break;
155
156
158 {
159
160 Gate->Header.SignalState = 1;
161 break;
162 }
163 else
164 {
165
168 WaitListEntry);
169
170
171 WaitThread = WaitBlock->
Thread;
172
173
175 {
176
178
179
181 continue;
182 }
183
184
186
187
189
190
193
194
196
197
199
200
201
202
203 if (WaitThread->
Queue)
204 {
205
207
208
209 if (WaitThread->
Queue)
210 {
211
213 }
214
215
217 }
218
219
221
222
224 return;
225 }
226 }
227
228
231}
#define RemoveEntryList(Entry)
#define IsListEmpty(ListHead)
#define KeLowerIrql(oldIrql)
KIRQL NTAPI KeRaiseIrqlToSynchLevel(VOID)
FORCEINLINE VOID KiReleaseDispatcherObject(IN DISPATCHER_HEADER *Object)
FORCEINLINE VOID KiAcquireDispatcherObject(IN DISPATCHER_HEADER *Object)
FORCEINLINE VOID KiReleaseDispatcherLockFromSynchLevel(VOID)
FORCEINLINE VOID KiReleaseThreadLock(IN PKTHREAD Thread)
FORCEINLINE VOID KiAcquireDispatcherLockAtSynchLevel(VOID)
FORCEINLINE BOOLEAN KiTryThreadLock(IN PKTHREAD Thread)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
VOID NTAPI KiReadyThread(IN PKTHREAD Thread)
VOID FASTCALL KiExitDispatcher(KIRQL OldIrql)
#define ASSERT_IRQL_LESS_OR_EQUAL(x)
volatile ULONG CurrentCount
volatile INT_PTR WaitStatus
#define CONTAINING_RECORD(address, type, field)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define ASSERT_GATE(Object)