public void GetWritingSystems(ArrayPtr rgws, int cws) { var wss = new int[cws]; int i = 0; foreach (IWritingSystem ws in LocalWritingSystems) { if (i >= cws) break; wss[i] = ws.Handle; i++; } for (; i < cws; i++) wss[i] = 0; MarshalEx.ArrayToNative(rgws, cws, wss); }