KeRemoveQueueEx information

I am looking into using KQUEUE’s for a specific purpose. I note that KeInitializeQueue, KeInsertQueue and KeRemoveQueue are documented, but KeRemoveQueueEx is not. Unfortunately I need an alertable version of KeRemoveQueue, hence my interest in KeRemoveQueueEx.

The prototype is included in ntifs.h:

#if (NTDDI_VERSION >= NTDDI_VISTA)
IRQL_requires_min(PASSIVE_LEVEL)
When((Timeout==NULL || Timeout->QuadPart!=0), IRQL_requires_max(APC_LEVEL))
When((Timeout!=NULL && Timeout->QuadPart==0), IRQL_requires_max(DISPATCH_LEVEL))
NTKERNELAPI
ULONG
KeRemoveQueueEx (
Inout PKQUEUE Queue,
In KPROCESSOR_MODE WaitMode,
In BOOLEAN Alertable,
In_opt PLARGE_INTEGER Timeout,
Out_writes_to(Count, return) PLIST_ENTRY *EntryArray,
In ULONG Count
);
#endif

My intent is to use it along the lines of:

Count = KeRemoveQueueEx(Queue, KernelMode, TRUE, Timeout, &Entry, 1);
// is this Count or Status or both?

in order to get things like STATUS_ALERTED, etc. but disallow user APC’s.

Any information on this? I can deduce how it is used from the prototype and using WinDbg, but I like to play by the rules when I can.

Bill