Hi,
your error is very strange. PKCS#11 specification says:
CKR_KEY_NOT_NEEDED: An extraneous key was supplied to C_SetOperationState. For example, an attempt was made to restore a session that
had been performing a message digesting operation, and an encryption key was supplied.
Even if this error is related to the function SetOperationState it seems that the key you passed to DecryptInit is not good for decryption. Probably that key doesn't have the flag CKA_DECRYPT to true.