Answering my own post here: https://www.robot-forum.com/robotforum/kuk…62987/#msg62987
Turns out, I had a spelling error in the Scanner Name.
The EIP manual lists the IOCTL function as returning 3 states: 0=success, 1=unsuccessful, and 2=bad parameter (I'm assuming that means a nonexistant node number, but I need to test that experimentally).
However! There is a 4th return state that the EIP manual does not mention: -1. Apparently, this is the result when the IOCTL function cannot parse the command. In my case, I had the "device" as "EIP_Scanner", when it needed to be "EIP-Scanner". And I spent a few days trying to figure out what I was doing wrong, with the problem staring me in the face....