void SearchDevices()
    {
        DeviceStatus devSatus = CGAPI.DeviceInitialSDK(IntPtr.Zero, false);

        if (DeviceStatus.STATUS_OK == devSatus)
        {
            int iCameraCounts = 0;
            devSatus = CGAPI.EnumDevice(IntPtr.Zero, ref iCameraCounts);
            if (DeviceStatus.STATUS_OK == devSatus)
            {
                IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(new EnumDeviceParam()) * iCameraCounts);
                devSatus = CGAPI.EnumDevice(ptr, ref iCameraCounts);
                if (DeviceStatus.STATUS_OK == devSatus)
                {
                    for (int i = 0; i < iCameraCounts; i++)
                    {
                        EnumDeviceParam edp = (EnumDeviceParam)Marshal.PtrToStructure((IntPtr)((int)ptr + i * Marshal.SizeOf(new EnumDeviceParam())),
                                                                                      typeof(EnumDeviceParam));
                        string strDevice = String.Format("{0} : {1}", edp.lpDeviceDesc, edp.devIndex);
                        Debug.Log("DeviceInfo " + strDevice);
                    }
                }
                Marshal.FreeHGlobal(ptr);
            }
        }
    }
        public bool SearchCameras(out int count)
        {
            count = 0;
            DeviceStatus devSatus = CGAPI.EnumDevice(IntPtr.Zero, ref count);

            return(devSatus == DeviceStatus.STATUS_OK);
        }