In some rare cases, the init function is called more than once. I'd add a guard here, like:

```c
if (micHandle != NULL)
  return (0);
```