CoWaitForMultipleObjects function ole32

int CoWaitForMultipleObjects(
  1. int dwFlags,
  2. int dwTimeout,
  3. int cHandles,
  4. Pointer<Pointer<NativeType>> pHandles,
)

A replacement for CoWaitForMultipleHandles.

This replacement API hides the options for CoWaitForMultipleHandles that are not supported in ASTA.

Throws a WindowsException on failure.

To learn more, see learn.microsoft.com/windows/win32/api/combaseapi/nf-combaseapi-cowaitformultipleobjects.

Implementation

int CoWaitForMultipleObjects(
  int dwFlags,
  int dwTimeout,
  int cHandles,
  Pointer<Pointer> pHandles,
) {
  final lpdwindex = adaptiveCalloc<Uint32>();
  final hr$ = HRESULT(
    _CoWaitForMultipleObjects(
      dwFlags,
      dwTimeout,
      cHandles,
      pHandles,
      lpdwindex,
    ),
  );
  if (hr$.isError) {
    free(lpdwindex);
    throw WindowsException(hr$);
  }
  final result$ = lpdwindex.value;
  free(lpdwindex);
  return result$;
}