// ListAudioDeviceName() -> (u32, buffer<bytes, 6>) public ResultCode ListAudioDeviceName(ServiceCtx context) { string[] deviceNames = _impl.ListAudioDeviceName(); ulong position = context.Request.ReceiveBuff[0].Position; ulong size = context.Request.ReceiveBuff[0].Size; ulong basePosition = position; int count = 0; foreach (string name in deviceNames) { byte[] buffer = Encoding.ASCII.GetBytes(name); if ((position - basePosition) + (ulong)buffer.Length > size) { break; } context.Memory.Write(position, buffer); MemoryHelper.FillWithZeros(context.Memory, position + (ulong)buffer.Length, AudioDeviceNameSize - buffer.Length); position += AudioDeviceNameSize; count++; } context.ResponseData.Write(count); return(ResultCode.Success); }