You can use TPM Base Sevices for sending commands to the TPM. So you need to assemble the commands yourself.
The TPM commands, structures and flows are defined in 3 documents:
- Part 1 - Design Principles
- Part 2 - Structures of the TPM
- Part 3 - Commands
First you need to figure out which command you want to send. Then you have to lookup the command's reference in Part 3 and assembled the needed structures as described in Part 2.
The TPM_seal
command for example is defined in section 10.1 on page 72 of Part 3. Line 1331 shows you how the command has to look like. After issuing the command you can evaluate the returned structure according to line 1332. (All numbers apply to revision 116.)
This can be really tricky. However, you can have a look at other implementations. If you just need a few commands it's not that hard, especially when you can be sure that some cornercases don't happen.
I would suggest you start looking at IBM's software TPM. This project also provides libtpm and some utilities. This is one of the lighter implementations I know.
You can also try whether TrouSerS for Windows is stable enough to fit your needs. There you would have a highlevel TSS API.
If Java is an option, have a look at jTSS. It supports Windows.