В VARIANT типах данных есть VT_BOOL, так что оно передаётся как есть без всякого преобразования.
А вот НЕОПРЕДЕЛЕНО - это в терминах VARIANTARG - VT_EMPTY.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший