void CallEntryPointAsync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data) { Context context; context.Complete = false; context.Result = eNkMAIDResult.kNkMAIDResult_NoError; IntPtr pfnComplete = Marshal.GetFunctionPointerForDelegate(_completionProc); IntPtr pfnRef = new IntPtr(&context); CallEntryPoint( ulCommand, ulParam, ulDataType, data, pfnComplete, pfnRef); while (!context.Complete) { Async(); } // Note: Is it OK to ignore context.Result? }
void data_Progress(NikonObject sender, eNkMAIDCommand ulCommand, UInt32 ulParam, IntPtr refComplete, UInt32 ulDone, UInt32 ulTotal) { Scheduler.Callback(new ProgressDelegate(OnProgress), this, (eNkMAIDDataObjType)sender.Id, (int)ulDone, (int)ulTotal); }
void CallEntryPoint( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr pfnComplete, IntPtr refComplete) { Debug.Assert(_md3 != null); Console.WriteLine("CallEntryPoint: {0}", ulCommand.ToString()); try { eNkMAIDResult result = _md3.EntryPoint( pObject, ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); switch (result) { // Note: Ignore these return values case eNkMAIDResult.kNkMAIDResult_NoError: case eNkMAIDResult.kNkMAIDResult_Pending: case eNkMAIDResult.kNkMAIDResult_OrphanedChildren: break; default: Console.WriteLine("===>NikonException {0},{1},{2},{3},{4}", result, ulCommand, ulParam, ulDataType, data); /* * throw new NikonException( * result, * ulCommand, * ulParam, * ulDataType, * data); */ break; } } catch (System.AccessViolationException ex) { Console.WriteLine("===> {0}", ex.Message); } }
public NikonException(eNkMAIDResult errorCode, eNkMAIDCommand errorCommand, UInt32 errorParam, eNkMAIDDataType errorDataType, IntPtr errorData) : base(string.Format("[{0}] ({1}, {2}, {3}, {4})", errorCode.ToString(), errorCommand.ToString(), errorParam.ToString(), errorDataType.ToString(), errorData.ToString())) { _errorCode = errorCode; _errorCommand = errorCommand; _errorParam = errorParam; _errorDataType = errorDataType; _errorData = errorData; }
void CompletionProc( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr refComplete, eNkMAIDResult nResult) { Context *context = (Context *)refComplete.ToPointer(); context->Complete = true; context->Result = nResult; }
// // Call Entry Point // void CallEntryPointSync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data) { CallEntryPoint( ulCommand, ulParam, ulDataType, data, IntPtr.Zero, IntPtr.Zero); }
void CallEntryPoint( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr pfnComplete, IntPtr refComplete) { fixed(NkMAIDObject *p = &_object) { CallEntryPoint( new IntPtr(p), ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); } }
void CallEntryPoint( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr pfnComplete, IntPtr refComplete) { Debug.Assert(_md3 != null); eNkMAIDResult result = _md3.EntryPoint( pObject, ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); switch (result) { // Note: Ignore these return values case eNkMAIDResult.kNkMAIDResult_NoError: case eNkMAIDResult.kNkMAIDResult_Pending: case eNkMAIDResult.kNkMAIDResult_OrphanedChildren: break; default: throw new NikonException( result, ulCommand, ulParam, ulDataType, data); } }
public NikonException(eNkMAIDResult errorCode, eNkMAIDCommand errorCommand, UInt32 errorParam, eNkMAIDDataType errorDataType, Int32 errorData) : base(string.Format("[{0}] ({1}, {2}, {3}, {4})", errorCode.ToString(), errorCommand.ToString(), errorParam.ToString(), errorDataType.ToString(), errorData.ToString())) { _errorCode = errorCode; _errorCommand = errorCommand; _errorParam = errorParam; _errorDataType = errorDataType; _errorData = errorData; }
// // Progress Callback // void ProgressProc( eNkMAIDCommand ulCommand, UInt32 ulParam, IntPtr refComplete, UInt32 ulDone, UInt32 ulTotal) { if (Progress != null) { Progress( this, ulCommand, ulParam, refComplete, ulDone, ulTotal); } }
void CompletionProc( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data, IntPtr refComplete, eNkMAIDResult nResult) { Context* context = (Context*)refComplete.ToPointer(); context->Complete = true; context->Result = nResult; }
// // Call Entry Point // void CallEntryPointSync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data) { CallEntryPoint( ulCommand, ulParam, ulDataType, data, IntPtr.Zero, IntPtr.Zero); }
void CallEntryPointAsync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data) { Context context; context.Complete = false; context.Result = eNkMAIDResult.kNkMAIDResult_NoError; CallEntryPoint( ulCommand, ulParam, ulDataType, data, Marshal.GetFunctionPointerForDelegate(_completionProc), new IntPtr(&context)); while (!context.Complete) { Async(); } // Note: Is it OK to ignore context.Result? }
void CallEntryPoint( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data, IntPtr pfnComplete, IntPtr refComplete) { Debug.Assert(_md3 != null); eNkMAIDResult result = _md3.EntryPoint( pObject, ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); switch (result) { // Note: Ignore these return values case eNkMAIDResult.kNkMAIDResult_NoError: case eNkMAIDResult.kNkMAIDResult_Pending: case eNkMAIDResult.kNkMAIDResult_OrphanedChildren: break; default: throw new NikonException( result, ulCommand, ulParam, ulDataType, data); } }
void CallEntryPoint( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data, IntPtr pfnComplete, IntPtr refComplete) { fixed (NkMAIDObject* p = &_object) { CallEntryPoint( new IntPtr(p), ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); } }