This function increments the lock count of an array, and places a pointer to the array data in pvData of the array descriptor.
The pointer in the array descriptor is valid until SafeArrayUnlock is called.
Calls to SafeArrayLock can be nested. An equal number of calls to SafeArrayUnlock are required.
Passing invalid (and under some circumstances NULL) pointers to this function causes an unexpected termination of the application.
An array cannot be deleted while it is locked.