일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- dhcp
- 운영관리제어의 축소
- 멀티테넌시
- VMWare View Connection Serve
- 수직적 확장
- 클라우드 제공자
- DHCP 설정
- 자원 풀링
- 커뮤니티 클라우드
- 이 컴퓨터는 도메인의 구성원이 아닙니다.
- 고정 IP주소를 가진 네트워크 어댑터를 검색할 수 없습니다.
- 정수형 데이터타입
- VMware
- View Connection
- 도메인 사용자 또는 그룹을 확인할 수 없습니다.
- 클라우드 보안 취약성
- DHCP 설치
- 수평적 확장
- Community Cloud
- VMWare vSphere
- Virtual Private Cloud
- 클라우드 자원 관리자
- 가상 프라이빗 클라우드
- 온 프레미스
- 클라우드 서비스 소유자
- Error 1720
- IT 자원
- 온디맨드식
- 제한된 이식성
- 클라우드 소비자
- Today
- Total
목록프로그래밍 (65)
한 걸음씩..
WideChar , Multibyte 이 둘중 하나로 변환해야하는 경우가 있다. 버퍼를 크게 잡고 버퍼 크기를 절대 넘지 않는 조건이라면 고려할 필요가 없지만 버퍼를 크게 잡아도 상황에 따라 버퍼 크기보다 클수도 있는 경우는 동적으로 할당을 해야하는데 wcslen , strlen 으로 크기를 알아와도 정확하지 않을 때가 있다. 특히나 영어가 아닌 한글, 일본어 , 중국어가 포함된 문자열이라면 더욱더 그렇다. 때문에 그런 경우 wcslen , strlen 이 아닌 다른 함수로 사이즈를 알아와야 한다. 만약 WideChar를 MultiByte로 변환을 해야 한다면 버퍼 크기를 결정해야 한다. nlength = WideCharToMultiByte(CP_ACP , 0 , PathString.GetBuffer()..
#define XP_EPROC_OFFSET 0x88#define WIN7_EPROC_OFFSET 0xb8 // Process Hide ULONG eproc = 0; PLIST_ENTRY plist_active_procs = NULL; RTL_OSVERSIONINFOW OsVersionInfo = { 0, }; NTSTATUS NtStatus = STATUS_SUCCESS; eproc = (ULONG) PsGetCurrentProcess(); if ( eproc Blink) = (ULONG) plist_active_procs->Flink; *((ULONG *)plist_active_procs->Flink+1) = (ULONG) plist_active_procs->Blink; plist_active_proc..
#define TwoSeconds (2*1000*1000*10)#define AlmostTwoSeconds (TwoSeconds - 1)NTSTATUS HJGetTime( CSHORT LimitYear, CSHORT LimitMonth ){ LARGE_INTEGER Time; TIME_FIELDS TimeFields; // // Get the current system time, and map it into a time field record. // KeQuerySystemTime( &Time ); ExSystemTimeToLocalTime( &Time, &Time ); // // Always add almost two seconds to round up to the nearest double secon..
DTM 테스트를 진행하다 보면 드라이버가 동작하고 있는 도중에 갑자기 IRP_MN_START_DEVICE 명령이 한 번더 오는 경우가 발생합니다. PCI 드라이버의 IRP_MN_START_DEVICE 부분은 메모리 할당 및 ISR 등록 등의 작업을 진행하게 될 텐데 이때 예외처리를 정확히 해줘야 인증에 통과할 수 있습니다. IoConnectInterrupt()를 사용해서 ISR을 등록하는 부분에서 if ( pDeviceExtension->InterruptObject != NULL ) { IoDisconnectInterrupt(pDeviceExtension->InterruptObject ); pDeviceExtension->InterruptObject = NULL; } ntStatus = IoConnect..
의도적으로 메모리 덤프를 발생시켜야만 하는 상황이 생길 수 있다.이때 사용할 수 있는 방법!!! [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\i8042prt\Parameters] "CrashOnCtrlScroll"=dword:00000001 위와 같이 셋팅 해 놓고 키보드의 오른쪽 Ctrl Key 누른상태에서 ScrollLock Key 를 두 번 누르면 된다! 키보드는 PS2 방식 이어야 한다!
할당 속도가 빠르고 사용법이 간단해 디바이스 드라이버에서 가장 많이 사용된다. #include char *buff; buff = kmalloc(1024, GFP_KERNEL); if( buff != NULL ){kfree( buff );} else{printk( "kmalloc error\n ); } 사용법은 malloc(), free()함수와 유사하다. kmalloc()함수를 사용할 때는 할당 가능한 크기가 32xPAGE_SIZE라는 점에 주의해야 한다. 대부분의 시스템에서 PAGE_SIZE의 크기는 4096이므로 131072Byte 이상은 메모리를 할 당할 수 없다. malloc()함수와 다른점은 메모리 할 당시점에 처리 방식을 매개변수 값으로 준다. GFP_KERNEL : 동적 메모리 할당이 항상 ..
PsSetLoadImageNotifyRoutine, PsRemoveLoadImageNotifyRoutine 함수를 사용하면 새롭게 Load 되는 프로세스 정보를 알 수 있다. 하지만 현재 시스템의 모든 프로세스 정보를 알아낼 수는 없다! 현재 시스템의 모든 프로세스를 알아내기 위해서는 ZwQuerySystemInformation 함수를 사용하면 된다. UnDocument 함수이기 때문에 NTSTATUS ZwQuerySystemInformation( ULONG SystemInformationClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength ); 위와 같은 정의를 미리 해 줘야 한다. 사용방법은 아래와 같다. ..
/************************************* VxWorks에서 Critical Section이 없기 때문에* 세마포어를 이용하여 구현* 이걸 왜 만들었더라? 그냥 세마포어 쓰면 될 껄..************************************/ /*세마포어를 크리티컬 섹션이란 이름으로 재 정의*/typedef SEM_IDCRITICAL_SECTION;typedef SEM_ID*LPTCRITICAL_SECTION; /* 함수 원형 작성 */BOOL CreateCriticalSection( LPTCRITICAL_SECTION CriticalSection );BOOL DeleteCriticalSection( LPTCRITICAL_SECTION CriticalSection );..
프로그램 개발 중 문자열 변환과 관련된 부분을 처리하는 경우가 있다. 검색중 아래와 같은 내용을 찾아 참고 하면 좋을 것 같다. KSC5601 한글 완성형 표준(한글 2,350자 표현) 한국공업표준 정보처리분야(C)의 5601번 표준안 KSC5636 영문자에 대한 표준 한국공업표준 정보처리분야(C)의 5636번 표준안 기존 ASCII Code에서 역슬래쉬(\)를 원(\) 표시로 대체 EUC-KR Bell Laboratories에서 유닉스 상에서 영문자 이외의 문자를 지원하기 위해 제안한 확장 유닉스 코드(Extend UNIX Code)중 한글 인코딩 방식 영문은 KSC5636로 처리하고 한글은 KSC5601로 처리 EUC-KR = KSC5601 + KSC5636
SendInput 에 Ctrl , Esc , Shift , Alt 등을 사용한다면 원하는 문자를 보낸후에 KEYEVENTF_KEYUP 옵션을 주고 다시 한번 보내야 정상적으로 반응을 한다. 키를 2의 조합 키로 보낸다면 KEYEVENTF_KEYUP를 사용하지 않아도 정상적으로 반응을 하지만 조합키가 2개 이상일 경우 KEYEVENTF_KEYUP 처리를 반드시 해야만 반응을 한다. INPUT input[3] = { 0 , }; ::ZeroMemory(input, sizeof(input)); //KEY_DOWN input[0].type = INPUT_KEYBOARD; input[1].type = INPUT_KEYBOARD; input[2].type = INPUT_KEYBOARD; input[0].ki.wVk..