Why do you say that a COM STA thread must pump messages if I see sample code creating STA threads and not pumping messages?
A COM STA thread must pump messages when idle, but if the thread is never idle—because it performs continuous work or exits quickly—message pumping may not be necessary, which explains why some sample code omits it.