미니필터 드라이버에서 파일 풀패스명 얻기

미니필터 드라이버에서 I/O 연산시 파일 풀패스명을 얻는 함수를 작성하였습니다.
미니필터 드라이버에서는 파일명 및 파일 정보를 얻기 위해 필터 매니저에서 제공하는 FltGetFileNameInformation() 함수를 사용하여 얻을 수 있지만 이 함수가 실패하는 경우가 있습니다. 그것도 자주…(자세한 내용은 WDK 도움말을 참조하십시오)
 

위 함수는 Pre/Post Operation Callback 루틴에서 아래와 같이 사용하시면 됩니다.

※ 주의 : 코드는 실제 적용 코드에서 블로깅을 위해 수정된 것입니다. 사용하실때는 코드 검증및 테스트를 하시고 사용하시기 바랍니다.

미니필터 드라이버 기반 파일 모니터링 프로그램이 어느정도 완성되었습니다. 현재 테스트 중이고, 곧 업로드 하도록 하겠습니다.

[스크린샷]
사용자 삽입 이미지

드라이버 로딩 권한 설정

미니필터 드라이버가 XP에서는 로딩이 잘 되는데 비스타에서 테스트 해보니 FilterLoad() 함수가 0x80070522(ERROR_PRIVILEGE_NOT_HELD) 에러를 내며 로딩이 실패(물론 관리자 권한으로 실행해도) 하네요.
WDK 도움말을 잘 읽어보니..(역시 문서를 잘 읽어야 되는데.. 쩝) FilterLoad() 함수 호출자는 SeLoadDriverPrivilege (SE_LOAD_DRIVER_PRIVILEGE) 을 가져야 한다고 적혀있습니다.

그래서 프로그램이 필터드라이버 로딩전에 SeLoadDriverPrivilege 권한을 Enable 하도록 하는 함수를 만들었습니다.

이 함수를 FilterLoad() 함수전에 아래와 같이 SeLoadDriverPrivilege 를 인자로 해서 호출해 주면 됩니다.

※ 주의 : 코드는 실제 적용 코드에서 블로깅을 위해 수정된 것입니다. 사용하실때는 코드 검증및 테스트를 하시고 사용하시기 바랍니다.

Vista 에서 프로그램을 관리자 권한으로 실행하도록 하는 방법

개발된 프로그램이 관리자 권한이 필요한 것이라면 Vista 에서 실행시 에러가 뜨는 경우가 있습니다.
이때 해결할 수 있는 방법은 Vista 의 UAC 기능을 죽이거나  탐색기에서 해당 프로그램에 오른쪽 마우스 클릭후 ‘관리자 권한으로 실행’ 을 하는 것입니다.
이러한 것은 일반 사용자에게 불편을 줄 수 있으므로 처음부터 관리자 권한으로 실행되는 프로그램을 개발할 필요가 있습니다.


1. 관리자 권한을 요구하는 manifest 파일 만들기
 
예를 들어 Test.exe 라는 프로그램을 만든다고 할 때 이래와 같이 우선 Test.exe.manifest 라는 파일을 작성합니다.
참고로 name 에는 프로그램 이름을 적으시면 되고, description에는 프로그램 설명을 적으시면 됩니다.


2. 프로그램에 manifest 파일 추가 방법


  (1) 방법 1

Visaul Studio의 프로젝트 속성 -> 구성 속성 -> 매니페스트 도구 -> 입력 및 출력 에 보면 추가 매니페스트 파일 있는데 여기다가 manifest 파일이 있는 경로를 적어줍니다.


예) ../Bin/Test.exe.manifest

 이렇게 한 후 빌드를 하면 경고가 하나 뜨지만 빌드가 잘 되는 것을 확인 할 수 있습니다.


  (2) 방법 2

실행 파일 먼저 빌드되고 나중에 manifest 파일을 빌드해서 넣는 방법은 프로젝트 속성 -> 구성 속성 -> 빌드 이벤트 -> 빌두 후 이벤트에 보면 명령줄이 있는데 여기에 아래와 같이 작성하면 됩니다.


mt.exe -manifest Test.exe.manifest -outputresource:Test.exe;#1


3. 결론


빌드가 된 실행파일을 비스타에서 보면 아이콘 옆에 관리자 권한이 필요한 프로그램이라는 표시로 방패가 추가된 것을 보실수 있습니다. 위 두가지 방법 말고도 manifest 파일을 프로젝트에 추가시키는 방법이 하나가 더 있는데, 그에 대해서는 http://himskim.egloos.com/1524155 를 참조하십시오.

PC 업그레이드

잘 쓰던 PC 가 여름 더위를 먹었는지.. (4년 잘 버텨 주더만) 그냥 퍼져버려서… 이 기회에 PC 업그레이드(전부 새로 조립한거나 마찬가지임… ODD 만 빼고)를 했습니다.
Vista를 설치해서 사용하는데.. 32비트 버전에서 메모리는 3.2G 까지만 인식하네요… 쩝.. 64비트로 설치를 해버려…
PC

[사양]

삼성 싱크마스터매직 CX226BX-SF/KOR (22인치 와이드)

GMC A-35 블루블랙 케이스
파워스테이션2 500NF4 (정격 500W)

MSI P35 PLATINUM 메인보드
인텔 펜티엄 콘로 E6600

DDR2 삼성 1GB (PC5300) 4개

시게이트 500GB(7200 RPM/SATA) + 시게이트 400GB(7200RPM/SATA)

Geforce 8600 GT 256MB

IP TIME G304-MIMO 유무선 공유기

85.8 장만

사용자 삽입 이미지
간만에 렌즈 하나 질렀습니다.
그동안 50.8로 인물 사진을 찍었는데.. 뭔가 좀 아쉬운 감이 있어서….(백통을 사기에는 자금 압박이 너무 심해서) 85.8 렌즈 하나 질렀습니다. 물론 이것도 캐논 정품 UV 필터랑 후드까지 하니까… 가격이 그리 만만하지는 않았지만…

역시 사용해 보니 명불허전 이네요. 다만 마운트시 쫌 뻑뻑하다는..

TViX HD M-5100SH

TViX HD M-5100SH
PC에 있는 영화를 TV로 연결해서 보는게 귀찮기도 하고, 하드가 하나 여분이 생기길래 장만했습니다. 깔끔한 인터페이스로 아직까지 사용에는 괜찮은듯…
다만 기존 OS를 설치했던 SATA 하드를 달았는데.. 인식이 안되서 쫌 고생했습니다.
컴퓨터 관리자에서 다시 파티셔닝 하고 포맷하니까 잘 인식이 되더군요. (그냥 탐색기에서 포맷해서 달았을때는 인식이 안됨)

이제 플스 3 사면서 TV만 HDMI 지원하는 것만 사면 … ㅋㅋ

http://www.tvix.co.kr/kor/products/HDM5100SH.aspx

dp.Syntaxhighlighter 설치

블로그에 소스를 올릴경우 구문 하일라이팅 기능을 제공하기 위한 구문 강조 스크립트인 dp.Syntaxhighlighter를 설치하였습니다. 소스 코드 보기가 한결 좋네요.

적용방법은 http://runuo.kr/blog/index.php?blog_code=gangpung&article_id=426 를 참조학시기 바랍니다.
태터툴즈에 적용하기 위해서는 다운받은 자바스크립트 와 스타일시트 파일을 스킨 폴더에 업로드 하고 skin.html 파일내에 아래와 같이 수정하면 됩니다. (shCore.js 파일은 무조건 포함시켜야 되고, 그외 shBrushXXx.js 파일은 자신이 주로 올리는 언어 파일 관련 스크립트만 포함시키면 됩니다.


참고로 1.5.1 버전에서는 <pre> 태그, <textarea> 태그 모두 적용되며, BloggerMode() 함수도 추가되었습니다.

C언어 소스 테스트

위 코드를 실제 블로그에 올릴때는 아래와 같이 작성하였습니다

<TEXTAREA class=c name=code>
#include <stdio.h>
int main(int argc, char *argv[])
{
    printf(“Hello, world\n”);
 
    return 0;
}
</TEXTAREA>

class=“c” 이부분이 중요한데, 단순히 class=“c” 라고 하면 기본속성으로 c 문장을 구문강조하겠다는 의미이며, 상단의 메뉴와 좌측의 라인번호가 기본적으로 표시됩니다.
class=“c:nogutter:nocontrols” 라고 하면, c 구문강조에다가 nogutter(라인번호 표시 감춤), nocontrols(상담 메뉴 감춤) 을 의미하며, 그 밖에 collapse(소스 숨김), firstline[num](라인번호 시작번호), showcolumns 등이 있습니다.  

홈페이지는 http://www.dreamprojections.com/syntaxhighlighter 인데, 접속이 되지 않는 경우 http://code.google.com/p/syntaxhighlighter 를 이용하시면 됩니다.

마라도…

5월의 끝자락에 친구 녀석들과 마라도를 다녀왔습니다.
전기 자동차를 한대 렌트(2만원)해서 약 두시간 정도 천천히 돌면서 구경했습니다.
물론 유명하다는(???) 톳이 들어간 짜장면도 먹어봤습니다.(사실 입맛에는 별로 맞지 않은..)

File System Minifilter Driver

회사에서 사용하고 있는 파일 시스템 필터 드라이버를 미니필터 드라이버로 바꾸기로 해서 요즘 미니 필터 드라이버를 이용한 파일 모니터링 엔진을 개발 중입니다.
아래는 테스트를 위한 툴을 만들어 본 것입니다.
사용자 삽입 이미지


Install 방식은 SCM(Service Control Manager)를 이용하여(CreateService 함수 이용) 설치하는 방식 (물론 이경우 instance 관련 레지스트리는 직접 작성해 주는 방식으로)과 SetupApi를 이용한 방식(SetupInstallFilesFromInfSection 함수 이용), 그리고 가장 손쉬운 InstallHinfSection 함수를 바로 이용하는 것 세가지 다 구현 하였습니다.

그리고 로딩, 어태치,디태치 기능을 구현하였고, 통신(FilterSendMessage 이용 방식및 , FilterGet/ReplyMessage 이용방식 모두)까지 구현한 상태 입니다.
현재는 드라이버에서 모니터링된 파일 및 관련 정보를 App로 보내는 부분의 작업을 하고 있습니다.

참고로 NEOFM 은 개발하는 미니필터 드라이버 이름이고 Altitude는 임의로 정한 값을 사용하고 있습니다.

누군가는 뭐라 그러겠네.. 블로그에 이런거나 올린다고.. ㅋㅋ
(아무튼 간만에 포스팅하는 글이네요)
 

새로 구입한 책

사용자 삽입 이미지Windows NT File System Internals (OSR’s Classic Reprints)
예전 회사에서는 O’reilly에서 출판된 책이 있었으나 회사를 옮긴 후에는 그 책을 구할려고 해도 구할수가 없어서 E-Book으로 만족했었는데 OSR Online에서 재판한 이 책을 드디어 구입하게 되었네요… 책을 택배로 받을때 얼마나 감개무량 하던지…
– 가격 : $65.00
– URL : https://www.osronline.com/store/moreinfo.cfm?Product_ID=65

사용자 삽입 이미지
Windows NT Device Driver Development By Peter Viscarola and Tony Mason (OSR’s Classic Reprints)
좀 오래된 책이긴 하지만 아직도 드라이버 개발 고전 이면서 명저인데 이 책을 OSR 에서 재판을 했습니다. 원본을 사고 싶어도 못샀었는데 새롭게 재판된 이 책이라도 다시 구입하게 되어서 기분이 좋네요..
– 가격 : $37.50
– URL : https://www.osronline.com/store/moreinfo.cfm?Product_ID=85

사용자 삽입 이미지The NT Insider Collection : 1996 – 2007
이 잡지(?)를 2004년도 부터 받아보고 있는데, 1996년도에 나온것부터 현재까지를 모두 모아서 판매하고 있습니다(1년단위로도 팔고 있습니다). 그래서 그동안 분실한것도 있고 해서 그냥 전부 구입해 버렸습니다. 물론 Online 상에서도 볼 수 있지만.. 아직도 읽는 것은 종이가 편해서…
– 가격 : $295.00
                                  – URL : https://www.osronline.com/store/moreinfo.cfm?Product_ID=28

사용자 삽입 이미지Developing Drivers with WDF
MS Press 에서 출판된 WDF(Windows Driver Foundation) 관련 첫번째 서적입니다.
OSR Online에서도 WDF 관련 서적이 곧 나올 예정입니다.
교보문고에서 해외원서 주문을 하고 있어서 바로 구입해 버렸습니다.
– 가격 : 60,900 (교보문고 가격)
– URL : http://www.microsoft.com/whdc/driver/wdf/wdfbook.mspx