public IEnumerable <Camera> GetCameras()
        {
            UInt32 returnValue;

            IntPtr cameraListPointer;

            returnValue = EDSDK.EdsGetCameraList(out cameraListPointer);
            ReturnValueManager.HandleFunctionReturnValue(returnValue);

            try
            {
                Int32 cameraListCount;
                returnValue = EDSDK.EdsGetChildCount(cameraListPointer, out cameraListCount);
                ReturnValueManager.HandleFunctionReturnValue(returnValue);

                for (var i = 0; i < cameraListCount; ++i)
                {
                    IntPtr cameraPointer;
                    returnValue = EDSDK.EdsGetChildAtIndex(cameraListPointer, i, out cameraPointer);
                    ReturnValueManager.HandleFunctionReturnValue(returnValue);

                    Camera camera = new Camera(cameraPointer);

                    yield return(camera);
                }
            }
            finally
            {
                // Release Camera List Pointer
                if (cameraListPointer != IntPtr.Zero)
                {
                    EDSDK.EdsRelease(cameraListPointer);
                }
            }
        }
        /// <summary>
        /// Terminates the SDK.
        /// </summary>
        /// <remarks></remarks>
        private void terminateSDK()
        {
            UInt32 returnValue = EDSDK.EdsTerminateSDK();

            ReturnValueManager.HandleFunctionReturnValue(returnValue);
        }
        /// <summary>
        /// Initializes the SDK.
        /// </summary>
        /// <remarks></remarks>
        private void initializeSDK()
        {
            UInt32 returnValue = EDSDK.EdsInitializeSDK();

            ReturnValueManager.HandleFunctionReturnValue(returnValue);
        }