VOID _CRTAPI1 main (int argc, char *argv[]) { BOOL Result; LPSTR lpFileName; SECURITY_DESCRIPTOR SecurityDescriptor; // CHAR Dacl[256]; HANDLE TokenHandle; // // We expect a file... // if (argc <= 1) { printf("Must specify a file name"); return; } lpFileName = argv[1]; #if VERBOSE printf("Filename is %s\n", lpFileName ); #endif Result = VariableInitialization(); if ( !Result ) { printf("Out of memory\n"); return; } Result = GetTokenHandle( &TokenHandle ); if ( !Result ) { // // This should not happen // printf("Unable to obtain the handle to our token, exiting\n"); return; } // // Attempt to put a NULL Dacl on the object // InitializeSecurityDescriptor( &SecurityDescriptor, SECURITY_DESCRIPTOR_REVISION ); // Result = InitializeAcl ( (PACL)Dacl, 256, ACL_REVISION2 ); // // if ( !Result ) { // printf("Unable to initialize Acl, exiting\n"); // return; // } // // // Result = AddAccessAllowedAce ( // (PACL)Dacl, // ACL_REVISION2, // GENERIC_ALL, // AliasAdminsSid // ); // // // // if ( !Result ) { // printf("Unable to create required ACL, error code = %d\n", GetLastError()); // printf("Exiting\n"); // return; // } Result = SetSecurityDescriptorDacl ( &SecurityDescriptor, TRUE, NULL, FALSE ); if ( !Result ) { printf("SetSecurityDescriptorDacl failed, error code = %d\n", GetLastError()); printf("Exiting\n"); return; } Result = SetFileSecurity( lpFileName, DACL_SECURITY_INFORMATION, &SecurityDescriptor ); if ( !Result ) { #if VERBOSE printf("SetFileSecurity failed, error code = %d\n", GetLastError()); #endif } else { printf("Successful, protection removed\n"); return; } // // That didn't work. // // // Attempt to make Administrator the owner of the file. // Result = SetSecurityDescriptorOwner ( &SecurityDescriptor, AliasAdminsSid, FALSE ); if ( !Result ) { printf("SetSecurityDescriptorOwner failed, lasterror = %d\n", GetLastError()); return; } Result = SetFileSecurity( lpFileName, OWNER_SECURITY_INFORMATION, &SecurityDescriptor ); if ( Result ) { #if VERBOSE printf("Owner successfully changed to Admin\n"); #endif } else { // // That didn't work either. // #if VERBOSE printf("Opening file for WRITE_OWNER failed\n"); printf("Attempting to assert TakeOwnership privilege\n"); #endif // // Assert TakeOwnership privilege, then try again // Result = AssertTakeOwnership( TokenHandle ); if ( !Result ) { printf("Could not enable SeTakeOwnership privilege\n"); printf("Log on as Administrator and try again\n"); return; } Result = SetFileSecurity( lpFileName, OWNER_SECURITY_INFORMATION, &SecurityDescriptor ); if ( Result ) { #if VERBOSE printf("Owner successfully changed to Administrator\n"); #endif } else { printf("Unable to assign Administrator as owner\n"); printf("Log on as Administrator and try again\n"); return; } } // // Try to put a benign DACL onto the file again // Result = SetFileSecurity( lpFileName, DACL_SECURITY_INFORMATION, &SecurityDescriptor ); if ( !Result ) { // // There's no hope. Something is screwed up. // printf("SetFileSecurity unexpectedly failed, error code = %d\n", GetLastError()); } else { printf("Successful, protection removed\n"); return; } }
int hyd_unit_loop_proc() { int LoopCtrl; int iTripCode=0; int cmd; double fReference; VariableInitialization(); iTripCode = HardwareParameterVerification(); if( iTripCode !=0 ) return iTripCode; iTripCode = SL_SPEED_CNTL_Parameter(); // csk_debug if( iTripCode != 0) return iTripCode; // csk_debug IER &= ~M_INT3; // debug for PWM InitEPwm_ACIM_Inverter(); // debug EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT IER |= M_INT3; // debug for PWM gRunFlag =1; strncpy(MonitorMsg," INIT MOTOR RUN ",20); gfRunTime = 0.0; LoopCtrl = 1; reference_in = btn_start_ref; gMachineState = STATE_RUN; while(LoopCtrl == 1) { if(gPWMTripCode != 0){ iTripCode = gPWMTripCode; LoopCtrl = 0; break; } get_command(& cmd ,&fReference); // Command를 입력 받음 monitor_proc(); if( cmd == CMD_START) reference_in = fReference; else if( cmd == CMD_STOP) reference_in = 0.0; switch( gMachineState ) { case STATE_RUN: if( cmd == CMD_STOP ){ strncpy(MonitorMsg," INV GO STOP ",20); reference_in = 0.0; gMachineState = STATE_GO_STOP; } else{ // if( gfRunTime < 0.25 ) reference_out = 0.05; // debug // else hyd_unit_proc( gMachineState, & reference_out); hyd_unit_proc( gMachineState, & reference_out); } case STATE_GO_STOP: //---- 재 시동 if( cmd == CMD_START ) { //"01234567890123456789" strncpy(MonitorMsg," INVERTER RUN ",20); gMachineState = STATE_RUN; hyd_unit_proc( gMachineState, & reference_out); } else if( fabs( reference_out ) < 0.005 ){ strncpy(MonitorMsg," INVERTER READY ",20); gMachineState = STATE_READY; LoopCtrl =0; } else{ // debug hyd_unit_proc( gMachineState, & reference_out); } break; } } return iTripCode; }
int test_run() { int LoopCtrl; int iTripCode=0; int iCommand; double fReference; VariableInitialization(); iTripCode = HardwareParameterVerification(); if( iTripCode !=0 ) return iTripCode; iTripCode = SL_SPEED_CNTL_Parameter(); if( iTripCode != 0) return iTripCode; // debug IER &= ~M_INT3; // debug for PWM InitEPwm_ACIM_Inverter(); // debug EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT IER |= M_INT3; // debug for PWM gRunFlag =1; strncpy(MonitorMsg," INIT MOTOR RUN ",20); gfRunTime = 0.0; LoopCtrl = 1; reference_in = btn_start_ref; gMachineState = STATE_RUN; while(LoopCtrl == 1) { if(gPWMTripCode != 0){ iTripCode = gPWMTripCode; LoopCtrl = 0; break; } get_command(&iCommand,&fReference); // Command를 입력 받음 monitor_proc(); if( iCommand == CMD_START) reference_in = fReference; else if( iCommand == CMD_STOP) reference_in = 0.0; switch( gMachineState ) { case STATE_RUN: if ( iCommand == CMD_NULL ) ramp_proc( reference_in, &reference_out); else if(( iCommand == CMD_SPEED_UP ) && (reference_in < 1.0 )) reference_in += 0.01; else if(( iCommand == CMD_SPEED_DOWN ) && ( reference_in > 0.01 )) reference_in -= 0.01; else if( iCommand == CMD_STOP ) { //"01234567890123456789" strncpy(MonitorMsg," INV GO STOP ",20); reference_in = 0.0; gMachineState = STATE_GO_STOP; } else if( iCommand == CMD_START ) ramp_proc( reference_in, &reference_out); else{ reference_in = 0.0; gMachineState = STATE_GO_STOP; } break; case STATE_GO_STOP: //---- 재 시동 if( iCommand == CMD_START ) { //"01234567890123456789" strncpy(MonitorMsg," INVERTER RUN ",20); gMachineState = STATE_RUN; reference_in = fReference; } else if( fabs( reference_out ) < 0.01 ){ strncpy(MonitorMsg," INVERTER READY ",20); gMachineState = STATE_READY; LoopCtrl =0; } else{ reference_in = 0.0; ramp_proc(reference_in, &reference_out); } break; } } return iTripCode; }