angelgrd.egloos.com
Egloos | Log-in

 
by 셀린™
카테고리
전체
프로그래밍
WinCE
WinPE
테크닉
참고자료
음악
잡담
미분류
이전 블로그
more...
이글루 링크
로리버드의 이런저런 사..
뚝딱뚝딱 작업방
최근 등록된 덧글
자세히좀 알려주세요 뭐..
by 이런 at 09/27
64비트 사용하시는 분은 ..
by 셀린™ at 07/30
부연설명 해야 할 것으로..
by 셀린™ at 07/24
자자... 너무 상심하지..
by 로리버드 at 07/09
일등 입니다.
by kyt at 07/01
회사가부도나서 업데이..
by 민 at 05/17
허걱... 제 푸념전용 ..
by 셀린™ at 04/15
안녕하세요? ^^; 처음..
by Rhea君 at 04/13
.......병원에서 푹 ..
by 로리버드 at 04/04
자 이 소스에 버그가 있는..
by 셀린™ at 03/12
Powered by egloos
rss

skin by 이글루스
함수 템플릿
요 며칠 특정 어떤 소스코드를 보는데 공부한지 너무 오래되어 낯설어버린 걸 봤다.

http://winapi.co.kr/clec/cpp3/31-1-1.htm (새창)

그 소스를 이해하기 위해 다시 뒤적이며 거꾸로 기초지식 방향을 가봤더니 위와 같은 링크가 있었던 것.

이렇게 템플릿에 대해서 이해를 한 뒤에 원래 보고자 했던 소스로 돌아갈 것이다.

자주 들여다 보는 것이 아닌 경우 잊혀지는 사례가 많은 듯 하다. 나이탓은 아닐 것이고 복습을 안해서일 것이다.
# by 셀린™ | 2008/09/26 16:08 | 프로그래밍 | 트랙백 | 덧글(0)
xp txtsetup.sif & boot disk analysis

[SourceDisksNames]
_x = %cdname%,%cdtagfile%,,"" // CD에 압축되어 있지 않은 파일로 있음. (원본비압축)
_1 = %cdname%,%cdtagfile%,,"" // 부팅 및 설치 스크립트
_2 = %cdname%,%cdtagfile%,,"" // NT 커널 시스템
_3 = %cdname%,%cdtagfile%,,"" // 시스템 파일 및 레지스트리 하이브 setupreg.hiv & 장치
_4 = %cdname%,%cdtagfile%,,"" // 장치관련
_5 = %cdname%,%cdtagfile%,,"" // 장치 및 국가별 키보드레이아웃
_6 = %cdname%,%cdtagfile%,,"" // 설치 미니콘솔

1_ = %cdname%,%cdtagfile%,,"" (원본압축)
2_ = %cdname%,%cdtagfile%,,"" // .EX_ ? 커널실행파일
3_ = %cdname%,%cdtagfile%,,"" // .DL_, .NL_, .FO_, .SY_, 언어 글꼴 시스템 관련
4_ = %cdname%,%cdtagfile%,,"" // .SY_, 장치관리자 기본 하드웨어 관련
5_ = %cdname%,%cdtagfile%,,"" // .SY_ 디스크관련
6_ = %cdname%,%cdtagfile%,,""

[SourceDisksNames.x86]
1  = %cdname%,%cdtagfilei%,,\i386 // RTM 오리지널 원본
2 = "%cd2name%","%cd2tagfilei%",,\cmpnents\tabletpc\i386 // 태블릿
3 = "%cd2name%","%cd2tagfilei%",,\cmpnents\mediactr\i386 // 미디어센터
4 = "%cd2name%","%cd2tagfilei%",,\cmpnents\netfx\i386 // 닷넷
100 = %spcdname%,%spcdtagfilei%,,\i386,1 // 서비스팩
_1    = %bootname1%,"%boottagfile1%",,"" (원본비압축)
_2    = %bootname2%,"%boottagfile2%",,""
_3    = %bootname3%,"%boottagfile3%",,""
_4    = %bootname4%,"%boottagfile4%",,""
_5    = %bootname5%,"%boottagfile5%",,""
_6    = %bootname6%,"%boottagfile6%",,""
1_    = %bootname1%,"%boottagfile1%",,"" (원본압축)
2_    = %bootname2%,"%boottagfile2%",,""
3_    = %bootname3%,"%boottagfile3%",,""
4_    = %bootname4%,"%boottagfile4%",,""
5_    = %bootname5%,"%boottagfile5%",,""
6_    = %bootname6%,"%boottagfile6%",,""

7  = %cdname%,%cdtagfilei%,,\i386\lang
107 = %spcdname%,%spcdtagfilei%,,\i386\lang,1
8  = %cdname%,%cdtagfilei%,,\i386\lang
9  = %cdname%,%cdtagfilei%,,\i386\lang
10 = %cdname%,%cdtagfilei%,,\i386\lang
11 = %cdname%,%cdtagfilei%,,\i386
12 = %cdname%,%cdtagfilei%,,\i386
13 = %cdname%,%cdtagfilei%,,\i386
14 = %cdname%,%cdtagfilei%,,\i386
15 = %cdname%,%cdtagfilei%,,\i386

[SourceDisksNames.amd64]
1  = %cdname%,%cdtagfilem%,,\amd64
7  = %cdname%,%cdtagfilem%,,\amd64\lang
8  = %cdname%,%cdtagfilem%,,\amd64\lang
9  = %cdname%,%cdtagfilem%,,\amd64\lang
10 = %cdname%,%cdtagfilem%,,\amd64\lang
11 = %cdname%,%cdtagfilem%,,\amd64
12 = %cdname%,%cdtagfilem%,,\amd64
13 = %cdname%,%cdtagfilem%,,\amd64
14 = %cdname%,%cdtagfilem%,,\amd64
15 = %cdname%,%cdtagfilem%,,\amd64
55 = %cdname%,%cdtagfilem%,,\i386
56 = %cdname%,%cdtagfilem%,,\i386\lang

[SourceDisksNames.ia64]
1  = %cdname%,%cdtagfilem%,,\ia64
7  = %cdname%,%cdtagfilem%,,\ia64\lang
55 = %cdname%,%cdtagfilem%,,\i386
56 = %cdname%,%cdtagfilem%,,\i386\lang

struct SourceDisksFiles
{
 int SourceDisksNames.Arch; // for each architecture (Arch = x86, IA64, amd64)
 int unk2;
 int unk3;
 int unk4;
 int unk5;
 int unk6;
 int SourceDisksNames; // floppy setup 6 boot disks
 int WinntDirectories;
 int upgradeCode;
 int newInstallCode; // 0 = always copy, 1 = copy if exist, 2 = don't copy if exist, 3 = don't copy
 CString newFileName;
 int unk12;
 int unk13;
};

// WinPE 관련 해당 위치 정보도 있을텐데 구체적으로 아직은 모르겠다. 좀 더 밝혀봐야지.

Service Pack 2 Floppy Disks
---------------1   23456  7  8 9 10 11 12 13
<disk1>
DISK101
SETUPLDR.BIN
bootfont.bin = 1  ,,,,,,_x,1 ,3
ntdetect.com = 100,,,,,,_1,1 ,3, ,    , 1, 1
txtsetup.sif = 100,,,,,,_x,  ,3
biosinfo.inf = 100,,,,,,_1,20,0,0,    , 1, 1

<disk2>
DISK102
ntkrnlmp.exe = 100,,,,,,2_,  ,3,3,    , 1, 2
ntkrnlmp.exe = 100,,,,,,2_,2 ,3

<disk3>
DISK103
setupreg.hiv = 100,,,,,,_3,  ,3
spddlang.sys = 1  ,,,,,,3_,  ,3, ,    , 1, 4 // Windows NT Setup kernel mode language helper for FarEast
setupdd.sys  = 100,,,,,,3_,  ,3, ,    , 1, 4
hal.dll      = 100,,,,,,3_,  ,3,3,    , 1, 2
bootvid.dll  = 1  ,,,,,,3_,2 ,0,0,    , 1, 2
c_949.nls    = 1  ,,,,,,3_,2 ,0,0,    , 1, 2
kdcom.dll    = 1  ,,,,,,3_,2 ,0,0,    , 1, 2
l_intl.nls   = 1  ,,,,,,3_,2 ,0,0,    , 1, 2
kd1394.dll   = 100,,,,,,3_,2 ,0,0,    , 1, 2
hal.dll      = 100,,,,,,3_,2 ,3, ,    , 1, 2
halaacpi.dll = 100,,,,,,3_,2 ,3, ,    , 1, 2
halacpi.dll  = 100,,,,,,3_,2 ,3, ,    , 1, 2
halapic.dll  = 100,,,,,,3_,2 ,3, ,    , 1, 2
halmacpi.dll = 100,,,,,,3_,2 ,3, ,    , 1, 2
halmps.dll   = 100,,,,,,3_,2 ,3, ,    , 1, 2
halsp.dll    = 100,,,,,,3_,2 ,3, ,    , 1, 2
ftdisk.sys   = 1  ,,,,,,3_,4 ,0,0,    , 1, 4
wmilib.sys   = 1  ,,,,,,3_,4 ,0,0,    , 1, 4
fdc.sys      = 100,,,,,,3_,4 ,0,0,    , 1, 4
mountmgr.sys = 100,,,,,,3_,4 ,0,0,    , 1, 4
partmgr.sys  = 100,,,,,,3_,4 ,0,0,    , 1, 4
pciidex.sys  = 100,,,,,,3_,4 ,0,0,    , 1, 4
pcmcia.sys   = 100,,,,,,3_,4 ,0,0,    , 1, 4
1394vdbg.sys = 1  ,,,,,,3_,4 ,1, ,    , 1, 4
acpiec.sys   = 1  ,,,,,,3_,4 ,1, ,    , 1, 4
aliide.sys   = 1  ,,,,,,3_,4 ,1, ,    , 1, 4
cmdide.sys   = 1  ,,,,,,3_,4 ,1, ,    , 1, 4
oprghdlr.sys = 1  ,,,,,,3_,4 ,1, ,    , 1, 4
pciide.sys   = 1  ,,,,,,3_,4 ,1, ,    , 1, 4
toside.sys   = 1  ,,,,,,3_,4 ,1, ,    , 1, 4
1394bus.sys  = 100,,,,,,3_,4 ,1, ,    , 1, 4
acpi.sys     = 100,,,,,,3_,4 ,1, ,    , 1, 4
intelide.sys = 100,,,,,,3_,4 ,1, ,    , 1, 4
isapnp.sys   = 100,,,,,,3_,4 ,1, ,    , 1, 4
ohci1394.sys = 100,,,,,,3_,4 ,1, ,    , 1, 4
pci.sys      = 100,,,,,,3_,4 ,1, ,    , 1, 4
slip.sys     = 100,,,,,,3_,4 ,1, ,    , 1, 4
streamip.sys = 100,,,,,,3_,4 ,1, ,    , 1, 4
viaide.sys   = 100,,,,,,3_,4 ,1, ,    , 1, 4
vgaoem.fon   = 1  ,,,,,,3_,22,0,0,    , 1, 2
drvmain.sdb  = 100,,,,,,_3,60,0,0

<disk4>
DISK104
cbidf2k.sys  = 1  ,,,,,,4_,4 ,0,0,    , 1, 4
atapi.sys    = 100,,,,,,4_,4 ,0,0,    , 1, 4
dmboot.sys   = 100,,,,,,4_,4 ,0,0,    , 1, 4
dmio.sys     = 100,,,,,,4_,4 ,0,0,    , 1, 4
dmload.sys   = 1  ,,,,,,4_,4 ,0,0,    , 1, 4
scsiport.sys = 100,,,,,,4_,4 ,0,0,    , 1, 4
vga.sys      = 100,,,,,,4_,4 ,0,0,    , 1, 4
videoprt.sys = 100,,,,,,4_,4 ,0,0,    , 1, 4
abp480n5.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
adpu160m.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
aha154x.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
aic78u2.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
aic78xx.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
amsint.sys   = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
asc.sys      = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
asc3350p.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
asc3550.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
cd20xrnt.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
cpqarray.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4 
dac2w2k.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
dac960nt.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
dpti2o.sys   = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
hpn.sys      = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
i2omgmt.sys  = 100,,,,,,4_,4 ,1, ,    , 1, 4
i2omp.sys    = 100,,,,,,4_,4 ,1, ,    , 1, 4
i8042prt.sys = 100,,,,,,4_,4 ,1, ,    , 1, 4
ini910u.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
kbdclass.sys = 100,,,,,,4_,4 ,1, ,    , 1, 4
lbrtfdc.sys  = 100,,,,,,4_,4 ,1, ,    , 1, 4
mraid35x.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
perc2.sys    = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
perc2hib.sys = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
ql10wnt.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
ql1080.sys   = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
ql1240.sys   = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
ql1280.sys   = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
ql12160.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
sbp2port.sys = 100,,,,,,4_,4 ,1, ,    , 1, 4
sparrow.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
sym_hi.sys   = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
sym_u3.sys   = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
symc8xx.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4
symc810.sys  = 1  ,,,,,,4_,4 ,1, ,    , 1, 4 // Symbios Logic Inc. SCSI Miniport Driver
tffsport.sys = 100,,,,,,4_,4 ,1, ,    , 1, 4 // TrueFFS Port Driver
ultra.sys    = 1  ,,,,,,4_,4 ,1, ,    , 1, 4 // Promise Ultra66 Miniport Driver
hidclass.sys = 100,,,,,,4_,4 ,1,3,    , 1, 4 // HID Class Library
hidparse.sys = 100,,,,,,4_,4 ,1,3,    , 1, 4 // HID Parsing Library
kbdhid.sys   = 100,,,,,,4_,4 ,1,3,    , 1, 4 // HID Mouse Filter Driver
usbd.sys     = 1  ,,,,,,4_,4 ,1,3,    , 1, 4 // Universal Serial Bus Driver
usbport.sys  = 100,,,,,,4_,4 ,1,3,    , 1, 4 // USB 1.1 & 2.0 Port Driver

  -- InputDevicesSupport --
usbehci.sys  = 100,,,,,,4_,4 ,1,3,    , 1, 4 // Enhanced Host Controller
usbohci.sys  = 100,,,,,,4_,4 ,1,3,    , 1, 4 // Open Host Controller
usbuhci.sys  = 100,,,,,,4_,4 ,1,3,    , 1, 4 // Universal Host Controller
usbhub.sys   = 100,,,,,,4_,4 ,1,3,    , 1, 4 // Generic USB Hub Driver
hidusb.sys   = 100,,,,,,4_,4 ,1,3,    , 1, 4 // Human Interface Parser
serial.sys   = 100,,,,,,4_,4 ,0,0,    , 1, 4 // Serial Port Driver
serenum.sys  = 100,,,,,,4_,4 ,0,0,    , 1, 4 // Serial Port Enumerator
usbstor.sys  = 100,,,,,,4_,4 ,1,3,    , 1, 4 // USB Storage Class Driver
usbccgp.sys  = 100,,,,,,4_,4 ,1,3,    , 1, 4 // USB Generic Parent Driver

<disk5>
DISK105
cdfs.sys     = 100,,,,,,5_,4 ,0,0,    , 1, 4 // CD-ROM File System Driver
cdrom.sys    = 100,,,,,,5_,4 ,0,0,    , 1, 4 // SCSI CD-ROM Driver
classpnp.sys = 100,,,,,,5_,4 ,0,0,    , 1, 4 // SCSI Class System DLL
disk.sys     = 100,,,,,,5_,4 ,0,0,    , 1, 4 // PnP Disk Driver
fastfat.sys  = 100,,,,,,5_,4 ,0,0,    , 1, 4 // Fast FAT File System Driver
flpydisk.sys = 100,,,,,,5_,4 ,0,0,    , 1, 4 // Floopy Driver
ksecdd.sys   = 100,,,,,,_5,4 ,0,0,    , 1, 4 // Kernel Security Support Provider Interface
ntfs.sys     = 100,,,,,,_5,4 ,0,0,    , 1, 4 // NT File System Driver
ramdisk.sys  = 100,,,,,,5_,4 ,1, ,    , 1, 4 // RAM Disk Driver
sfloppy.sys  = 100,,,,,,5_,4 ,0,0,    , 1, 4 // SCSI MATSHITA LS-120 Floppy Driver

  -- Keyboard Layout --
kbd101a.dll  = 1  ,,,,,,_5,2 ,1 // PC/AT 101키 호환 키보드/USB 키보드(종류 1)
kbd101b.dll  = 1  ,,,,,,_5,2 ,1 // PC/AT 101키 호환 키보드/USB 키보드(종류 2)
kbd101c.dll  = 1  ,,,,,,_5,2 ,1 // PC/AT 101키 호환 키보드/USB 키보드(종류 3)
kbd103.dll   = 1  ,,,,,,_5,2 ,1 // 한글 PS/2 키보드/USB 키보드(103/106키)
kbda1.dll    = 1  ,,,,,,_5,2 ,1
kbda2.dll    = 1  ,,,,,,_5,2 ,1
kbda3.dll    = 1  ,,,,,,_5,2 ,1
kbdal.dll    = 1  ,,,,,,_5,2 ,1 // 알바니아어
kbdarme.dll  = 1  ,,,,,,_5,2 ,1
kbdarmw.dll  = 1  ,,,,,,_5,2 ,1
kbdaze.dll   = 1  ,,,,,,_5,2 ,1
kbdazel.dll  = 1  ,,,,,,_5,2 ,1
kbdblr.dll   = 1  ,,,,,,_5,2 ,1 // 벨로루시어
kbdbu.dll    = 1  ,,,,,,_5,2 ,1 // 불가리아어
kbdcr.dll    = 1  ,,,,,,_5,2 ,1 // 크로아토세르비아어, 슬로베니아어
kbdcz.dll    = 1  ,,,,,,_5,2 ,1 // 체코어
kbdcz1.dll   = 1  ,,,,,,_5,2 ,1 // 체코어(QWERTY)
kbdcz2.dll   = 1  ,,,,,,_5,2 ,1
kbddiv1.dll  = 1  ,,,,,,_5,2 ,1
kbddiv2.dll  = 1  ,,,,,,_5,2 ,1
kbdest.dll   = 1  ,,,,,,_5,2 ,1 // 에스토니아어
kbdfa.dll    = 1  ,,,,,,_5,2 ,1
kbdgeo.dll   = 1  ,,,,,,_5,2 ,1
kbdgkl.dll   = 1  ,,,,,,_5,2 ,1 // 그리스어 라틴
kbdhe.dll    = 1  ,,,,,,_5,2 ,1 // 그리스어
kbdhe220.dll = 1  ,,,,,,_5,2 ,1 // 그리스어(220)
kbdhe319.dll = 1  ,,,,,,_5,2 ,1 // 그리스어(319)
kbdheb.dll   = 1  ,,,,,,_5,2 ,1
kbdhela2.dll = 1  ,,,,,,_5,2 ,1 // 그리스어(220) 라틴
kbdhela3.dll = 1  ,,,,,,_5,2 ,1 // 그리스어(319) 라틴
kbdhept.dll  = 1  ,,,,,,_5,2 ,1
kbdhu.dll    = 1  ,,,,,,_5,2 ,1 // 헝가리어
kbdhu1.dll   = 1  ,,,,,,_5,2 ,1
kbdindev.dll = 1  ,,,,,,_5,2 ,1
kbdinguj.dll = 1  ,,,,,,_5,2 ,1
kbdinhin.dll = 1  ,,,,,,_5,2 ,1
kbdinkan.dll = 1  ,,,,,,_5,2 ,1
kbdinmar.dll = 1  ,,,,,,_5,2 ,1
kbdinpun.dll = 1  ,,,,,,_5,2 ,1
kbdintam.dll = 1  ,,,,,,_5,2 ,1
kbdintel.dll = 1  ,,,,,,_5,2 ,1
kbdkaz.dll   = 1  ,,,,,,_5,2 ,1
kbdkyr.dll   = 1  ,,,,,,_5,2 ,1
kbdlt.dll    = 1  ,,,,,,_5,2 ,1
kbdlt1.dll   = 1  ,,,,,,_5,2 ,1
kbdlv.dll    = 1  ,,,,,,_5,2 ,1
kbdlv1.dll   = 1  ,,,,,,_5,2 ,1
kbdmon.dll   = 1  ,,,,,,_5,2 ,1
kbdpl.dll    = 1  ,,,,,,_5,2 ,1
kbdpl1.dll   = 1  ,,,,,,_5,2 ,1
kbdsyr1.dll  = 1  ,,,,,,_5,2 ,1
kbdsyr2.dll  = 1  ,,,,,,_5,2 ,1
kbdth0.dll   = 1  ,,,,,,_5,2 ,1
kbdth1.dll   = 1  ,,,,,,_5,2 ,1
kbdth2.dll   = 1  ,,,,,,_5,2 ,1
kbdth3.dll   = 1  ,,,,,,_5,2 ,1
kbdur.dll    = 1  ,,,,,,_5,2 ,1
kbdurdu.dll  = 1  ,,,,,,_5,2 ,1
kbdbe.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2 // 벨기에 네덜란드어, 벨기에 프랑스어
kbdbr.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2 // 브라질어 (ABNT)
kbdca.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdda.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbddv.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdes.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdfc.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdfi.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdfr.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdgae.dll   = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdgr.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdgr1.dll   = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdic.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdir.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdit.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdit142.dll = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdla.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdne.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdnec.dll   = 100,,,,,,_5,2 ,0,0,    , 1, 2      
kbdno.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdpo.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdsf.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdsg.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdsp.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdsw.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbduk.dll    = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdusl.dll   = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdusr.dll   = 1  ,,,,,,_5,2 ,0,0,    , 1, 2
kbdusx.dll   = 1  ,,,,,,_5,2 ,0,0,    , 1, 2

<disk6>
DISK106
kbdkor.dll   = 1  ,,,,,,_5,2, 1 // 한국어 한글 입력기 (IME 2000)
kbdus.dll    = 1  ,,,,,,_5,2, 0,0,    , 1, 2 // 미국 영어, 불가리아어(라틴)
spcmdcon.sys = 100,,,,,,_6, ,3 ,3,    , 1, 1 // Windows NT Setup mini command console
system32/ntdll.dll    = 100,,,,,,_6,2 ,0,0,    , 1, 2 // NT Layer DLL
system32/smss.exe     = 100,,,,,,  ,2 ,0,0,    , 1, 2 // Windows NT Setup(user mode portion of character-based phase)

# by 셀린™ | 2008/09/21 21:33 | 참고자료 | 트랙백 | 덧글(0)
신기술 또는 신버전과 vs 지원중단 문제

지원중단이라고 하는 것에 대해서 Microsoft 의 제품을 겪어본 것으로 묘한 것이 있다.

Visual Basic 을 Visual Basic.NET 으로 개발자들에게 업그레이드를 강요하고 싶었던 때에

마이크로소프트 사는 책을 무료로 제공하기도 했다. 제발 개발툴 업데이트 좀 하세요. 지원중단하고 싶어요. 라고 말하고

싶을 것이다.

Visual C++ 6.0 쓰는 개발자들에게 Visual Studio 2008 이 더 좋다고 옮겨오시라고 하는 이야기를

세미나에서 자주 들었다. 하지만 현업에선 아직도 VC++ 6.0 을 더 많이 쓰고 있다.

Direct X SDK의 경우에도 버전업을 거치면서 지원이 되고 되지 않고 구버전과의 호환성을 남겨놓는 부분이

있지만 개발SDK에는 포함시키지 않음으로 과거와의 단종지원이나 신기술을 사용독려 하는 경우를 볼 수 있다.

Visual C++ 2008 SP1 까지 설치 그리고 Windows SDK for Windows 2008 and .NET Framework 3.5 를 설치하면

ACE를 일괄빌드할 때 문제가 생긴다. SDK와의 운영체제 버전 define 차이 또는 중복이라는 것을 오류로 표현하게 되는데

#define _WIN32_WINNT 0x0400 // 윈도우 NT 4.0 이다.

이 부분을 0x0500 // 윈도우 2000 으로 끌어올려 설정해주니까 그제야 빌드가 된다.

http://groups.google.co.kr/group/comp.soft-sys.ace/browse_thread/thread/e4ea16a3cc028e94

오류? 오류는 무시하고 싶다.

여하튼 ACE + TAO + CIAO 를 일괄빌드(1 solution 609 projects with debug and release => 1218 or above)를
주말 내내 걸어두고 있다. 벌써 2주째 이와 같은 삽질을 하고 있는데

ACE_Init_Test 를 통해 현재까지 빌드를 해오며 뭐가 문제였는지 파악하는 수준에 머물러 있을 뿐이다.

플랫폼을 넘나들고 개발툴을 넘나드는 소스코드라는 것을 본 것은 월드오브워크래프트의 서버시뮬레이터 프로젝트인

AceEmu 의 오픈프로젝트소스로부터이다. ACE와는 무관하게 구현하고 있는 것이겠지만 그와 같은 생각을 가지고 있고

구현해 가고 있다라는 것에서 그 사람들의 집약된 노하우 라는 것을 알아가고 싶다는 목표가 생기게 된다.

다시 본론으로 돌아가자.

지원중단이라고 하는 것. 과거의 것을 버릴 수 있어야 새로운 것을 받아들일 수 있는 것은 맞는 말이다.

밥을 먹고 배변을 하는 것과 같은 이치다. 음식도 먹으면 20%만 소화하고 80%는 배출한다고 하지 않던가.

배우는 모든 것을 완벽히 이해하려고 하지 말고 어떻게 써먹을 수 있는가에 더 관심을 가져야 할 지도 모르겠다.

그 가운데 좀 더 효율적인 지식습득 노하우도 알아가게 될까 한다. 이제 겨우 시작한 초보개발자이므로

이 같은 글도 쓸 수 있는 것이다.

# by 셀린™ | 2008/09/05 12:17 | 미분류 | 트랙백 | 덧글(0)
쉐어포인트 포탈 서비스의 활용에 대한 희망

필자는 회사 업무와 상관없이 개인적으로 진행한 애자일(Agile) 관련 학습을 진행한 바 있다.
Application Life-cycle Management 에 관한 것과 함께 Visual Studio Team Foundation Server 에서의
하나의 프로젝트에서 각 역할자가 해야 할 것과 관리에 관한 시스템 전반을 소개하는 것에 매료되어
쉐어포인트 서비스 또는 쉐어포인트 서버에 관한 갈망을 갖게 된 때가 있었다.
그것이 불과 4개월 전의 일이었고 이전 회사에 있을 때의 열망이기도 했다.

개발자 기획자 등등 서로 다른 사람들의 역할에 있어서 WorkFlow 도 중요한데,
이에 관해서 수동적이고 옛날 방식인 것에서는 사람들이 해야 할 일들의 범위와
요구사항이 자동화되어 진행되지 않음으로 해서
일정이 늦춰지고 선행조건이 갖춰지길 기다리며
한 사람에게 주어진 역할을 대기하는 대신
재분배 하는 것에 대한 관리는 부재함을 심각하게 느끼게도 되었다.

입사 후 얼마간은 회사의 기존 업무방식과 제품 등에 관한 교육이 선행되어야 함에도 불구하고
신입이 궁금해 하는 것과 왜 그 일을 처리하지 못하는 가에 대한 자기반성이 필요하리란 생각이 든다.
어디까지나 신입의 입장에서 생각해줄 만큼 여유롭지 못한 회사들이라는 것은 안다.
하지만 신입으로서 답답할 때가 무엇인지를 헤아려 줄 수는 없을까 하는 생각이 든다.

지난 회사에서 필자는 장비의 구성사진과 내부구성 핀배열과 같은 의미상의 설명서 같은 것들을
작성하여 '신입에게 알려주는 장비구성과 알면 좋을 참고사항'이라는 .zip 파일을 묶어 만든 적이 있다.
그러나 신입에게 그것을 전달해도 곧바로 이해하지 못하는 것 같았고 관심도 없어보였다.

지금은 내가 열망하고 있는 것을 효율적으로 알리고 내가 원하는 것을 얻는 방법과
상대방이 원하고 전달하는 효율적인 방법이 무엇일까를 고민하게 된다.

(마치 타로카드를 들고) 여인들의 심리상태를 꿰맞추듯 Cold Reading 을 하고 있는 작업남(Pickup Artist)
들에서처럼 또한 상대방의 요구사항을 읽어내거나 (그가 원해서 그렇게 요구하게 된 것처럼) 만들어내는
재주를 기술을 습득하고 싶다는 생각이 들기도 한다.

쉐어포인트 서비스는 3.0 sp1 버전까지 제공되고 있으며 서버 운영체제를 갖추고 있어야 하는지는 모르겠으나
설치하여 사용할 수 있다. IIS만 있으면 가능할 것 같은데...

교류를 위한 장이 꼭 오프라인 미팅만으로 해결되진 않는다.
대화를 통해 회의를 통해 분명 전달된 사항도 한귀로 듣고 한귀로 흘려 버리면 기록상으로 다시 재생되지 않는다.
잊혀지고 다루지 않았던 문제들이 최종으로 가면 요청사항이 제대로 반영되지 않았다고 할 경우도 있다.
따라서 문서화 라는 것이 중요한 의미를 가지며, 그것을 위한 것만으로도 쉐어포인트 서비스는 필요성을 갖게 된다.

어떤 경우의 한 가지 일을 진행할 때 가장 어려운 것은 설득하고 제안하는 일이다.
그걸 왜 뭣하러? 공부해야 되잖아. 귀찮어. 그렇게 하지 말고 이렇게 하는 게 낫지 않아? 라며
모두가 공감하는 것이 아닌 자신이 편한 방식을 제안하고 설득을 오히려 당하고 있을 때
대답은 '네, 그렇지요.'라고 해도 사실상 내게는 온전하지 않은 뭔가가 있다.
어렴풋이 이야기를 하고 잘 되면 자신의 몫으로 잘못되면 내게 화살이 돌아오는 여지를 남기는 방식은
여전히 내게는 찜찜하다.

아무튼 생각이 깊어져서 삼천포도 자주 왕래하는 이런 글을 굳이 쓰는 이유는 속풀이를 위해서다.

여전히 사람들은 결론까지를 듣고 진행상 과정상의 도움을 주려고 하기보다
결론은 아예 들을 기회도 갖지 못하고 자신들이 과정상의 오류만을 들어 결론을 수정해버리는지 모르고 있는 경우가 있다.
따라서 대화를 결론부터 말하고 그것을 위해 과정상의 가능성 있는 증거들과 방법들을 제시하는 것이 맞지 않나 하는
생각도 있기도 하다.

생각의 여지를 남겨둔다는 것에는 다음과 같은 의미가 있다.
예를 들면,
"시간이 되면 저녁이나 한끼 같이 하시죠." 라고 제안을 명확하지 않게 한다.
상대방이 정말 그러자고 동의한다면 "구체적으로 언제쯤이 좋을까요?" 라고 되물어 올 것이고
그냥 예, 아니오의 식으로 답변하게 되면 예의상 대답이 될 수도 있다라고 판단해도 좋을 것이다.
사실 이런 생각의 여지를 두는 질문은 이성간의 유혹과 테스트에서 확인절차라는 것을 위해 사용되는 기법이다.

뭔가 또 삼천포로 다시 빠졌다. 글을 끝마치는 것이 좋을 듯 하다.
쉐어포인트 쓰고 싶다. 모두 함께 말이다.

# by 셀린™ | 2008/08/27 16:06 | 잡담 | 트랙백 | 덧글(0)
사용자 지정 속성 페이지 삽입하는 방법 예제

VC++ 2008 Feature Pack 관련 사용자지정 페이지를 삽입하여 사용하는 방법에 관한
소스코드이며 로캘이 적용되어 있지 않아 본인이 직접 로캘작업을 하다 귀찮아서
결과물이 보일 정도로만의 소스코드 로캘작업만을 진행한 사례입니다.

영문FP 삽질을 하도 하다 보니 이제 로캘을 수동으로 변경하는 부분은 많이 익숙해져 버려서
외우고 있게 되어버렸습니다.

그게 중요한 게 아니고.

CPropertyPage 를 상속받은 속성 페이지 클래스 하나를 만들고 (CMyCustomizationPage)
메인 프레임에서 런타임에 동적으로 추가하여 넣을 수 있게 하는 소스코드
void CMainFrame::OnViewCustomize()
{
 CList <CRuntimeClass*, CRuntimeClass*> lstCustomPages;
 lstCustomPages.AddTail (RUNTIME_CLASS (CMyCustomizationPage));
 //------------------------------------
 // Create a customize toolbars dialog:
 //------------------------------------
 CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog (this,
  TRUE /* Automatic menus scaning */,
  AFX_CUSTOMIZE_MENU_SHADOWS | AFX_CUSTOMIZE_TEXT_LABELS |
  AFX_CUSTOMIZE_MENU_ANIMATIONS, // default parameters
  &lstCustomPages); // pointer to the list of runtime classes of the custom property pages

 pDlgCust->Create ();
}
와 같이 작업하여

CMFCToolBarsCustomizeDialog 를 사용하고 있는 것을 눈여겨 볼 필요가 있다.

이 예제에서 사용하는 레지스트리 위치는
HKEY_CURRENT_USER\Software\Microsoft\MFC\Samples 이므로 참고하기 바랍니다.

< 첨부 > CustomPages_kor.rar

# by 셀린™ | 2008/08/20 18:47 | 프로그래밍 | 트랙백 | 덧글(0)
<< 이전 페이지 다음 페이지 >>