Critical Sections are not kernal objects. They are not identified with any Handle. They can be only used to synchronize the threads belonging to same process. They cannot be used for synchronization across the process.
CSingleLock ( I assume you are referring this as a lock, in this context) is a wrapper class using RAII concept. It helps you to acquire the thread synchronization object (in its constructor) and call Lock and Unlock API in a easy way. ( hiding all internal details of which synchronization objects it is using).
CSingleLock when used with Critical sections, cannot be used across process. Where as Mutex can be used for this purpose.
When a thread acquires Mutex and no other threads can acquire the Mutex then the state of the Mutex is said to be in Non-Signeled state.
IF the Mutex is available and no threads have acquired then it is in Signeled state.