Are you missing closing quote?
The missing quote was my mistake. The code is on a VM and I had to manually re-type those lines; the end quote is in the actual code. I tried both of those and neither worked.
What is odd is if I do:
2) Cycle through each one in the returned array
3) call swComp->get_Name2(&name) //name is declared as BSTR
3) Compare the returned name to L"HYDRAULICJACK1Z-1"
3a) If a match, call swAsm->GetComponentByName(name, &swComponent)
swComponent returns a non-null pointer. As far as I can tell this is doing the exact same thing as above, only much longer and inefficient (since I know the exact name of the component).
Try this as well:
BSTR compName = ::SysAllocString(L"HYDRAULICJACK1Z-1");