일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 이 컴퓨터는 도메인의 구성원이 아닙니다.
- VMware
- 도메인 사용자 또는 그룹을 확인할 수 없습니다.
- 고정 IP주소를 가진 네트워크 어댑터를 검색할 수 없습니다.
- 클라우드 제공자
- 온 프레미스
- 클라우드 자원 관리자
- DHCP 설정
- 정수형 데이터타입
- 클라우드 서비스 소유자
- 자원 풀링
- 제한된 이식성
- 클라우드 소비자
- Virtual Private Cloud
- Error 1720
- VMWare vSphere
- View Connection
- Community Cloud
- 클라우드 보안 취약성
- 수직적 확장
- 멀티테넌시
- DHCP 설치
- dhcp
- 커뮤니티 클라우드
- 가상 프라이빗 클라우드
- 운영관리제어의 축소
- IT 자원
- 수평적 확장
- 온디맨드식
- VMWare View Connection Serve
- Today
- Total
목록분류 전체보기 (106)
한 걸음씩..
Device Object Driver는 자신이 참여하는 모든 Device Stack을 위해서 DeviceObject를 생성하게 된다생성된 모든 Driver의 DeviceObject는 Driver의 DriverObject를 통해 모두 찾을 수 있다. 1. DriverObject->DeviceObject // 가장 최근에 드라이버가 생성한 DeviceObject 2. DriverObject->DeviceObject->NextDevice //1의 DeviceObject 보다 바로 전에 생성했던 DeviceObject 3. DriverObject->DeviceObject->NextDevice->NextDevice //2의 DeviceObject 보다 바로 전에 생성했던 DeviceObject Device Obj..
Driver ObjectWDM Device Driver들이 메모리 내에 상주하고 있는 근거로 사용되는 자료구조가 DriverObject 이다.WDM Device Driver들은 각각 저마다의 DriverObject를 선언하고 있으며 이 구조체에 의해서 외부에 자신의 존재를 Export하고 있다. Driver Object 자료구조 typedef struct _DRIVER_OBJECT {CSHORT type;CSHORT Size; //Driver가 최근에 생성한 Device Object 포인터PDEVICE_OBJECT DeviceObject;ULONG Flags; // Driver가 메모리에 보관된 시작 위치PVOID DriverStart ULONG DriverSize;PVOID DriverSection;P..
IRP Dispatch Routine 1. 외부로부터 명령어(IRP)를 받는 곳2. PnP Manager로부터 전달되는 IRP를 처리하는 함수 NTSTATUS SamplePnpDispatch(PDEVICE_OBJECT pDeviceObject,PIRP pIrp){PIO_STACK_LOCATION pIoStackLocation;PDEVICE_EXTENSION pDeviceExtension;NTSTATUS status;PDEVICE_OBJECT pTargetDevice;pDeviceExtension = ( PDEVICE_EXTENSION )pDeviceObject->DeviceExtension;//DeviceExtension 구조체에 저장해 놓은 DeviceStack 상의 하위 DeviceObject pTa..
AddDevice routine 이 하는 역할1. Device Context 생성한다2. 자신의 DeviceObject를 Device Stack 에 포함 시킨다 NTSTATUS SampleAddDevice(PDRIVER_OBJECT pDriverObject,PDEVICE_OBJECT pPhysicalDeviceObject){PDEVICE_EXTENSION pDeviceExtension;PDEVICE_OBJECT pDeviceObject;NTSTATUS status = STATUS_SUCCESS;//Device Context 생성//생성된 Device Object는 IRP가 전달되는 Device Driver 내에 모든 IRP 명령어 처리기로 항상 전달되는 값으로 사용된다status = IoCreateDev..
DriverEntry Routine DriverEntry Routine 은 Device Driver의 시작 위치이다. 코딩상에서 함수명을 반드시 'DeviceEntry' 라고 해야 하는 특징을 가지고 있다. 따라서 C++언어를 사용하는 경우에는 name mangling가 발생할 수 있으므로 반드시 extern "C" 명령을 사용해야 한다 extern "C" NTSTATUS DriverEntry ( PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath ) { pDriverObject->MajorFunction[IRP_MJ_PNP] = SamplePnpDispatch; pDriverObject->DriverExtension->AddDevice = Samp..
BOOTMGR is Missing... 1. Windows 설치 디스크로 부팅을 한다. 2. 설치 처음 화면이 나오면 Shift + F10 누르면 CMD 창이 나온다. 3. diskpart 4. list partition 5. 용량을 확인하여 윈도우 7이 설치된 파티션의 번호를 확인 (ex 파티션 번호 : 2) 6. select partition 2 7. active 8. list volume 9. 볼륨명 확인. 없을 경우 assign letter "X" 하여 볼륨명을 지정. X는 예시 10. bcdboot X:\Windows /s X: /l ko-KR 엔터 11. bootsect /nt60 all /mbr 엔터 12. 리부팅
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..