As a general rule of thumb, all open calls needs to be followed by close calls after the intended use of the function is completed. There are many reasons why you would want to do that. In case of the redirection/SOL libraries, only after you call the close operation all of the allocated resources in AMT are released. Also by not calling close function, you will encounter an error next time when you try to establish the SOL/IDE-R session.
I am curious to know if there is any particular reason why you would not want to call the close functions. Please let me know.
Hope this helps.
From experience, not calling SOLCloseSession is probably harmless since as soon as the SOL TCP connections is closed (Closing your application completely), Intel AMT will just wait for another session. SOL has no state so no big deal.
IDERCloseSession() and more importantly IMR_IDERSetDeviceState()should really BOTH be called. Especialy IMR_IDERSetDeviceState(). The SetState command sends a command to AMT to enable the redirected drives. If you don't call SetState() to disable the drives once you are done and before calling IDERCloseSession(), the drives will still be there once you boot into a normal OS, but any access to them will fail.
Thanks for the question, this is a little known fact about IDE-R and the importance of SetDeviceState().
Hope this helps,
Ylian (Intel AMT Blog)