kkuzil.own@gmail.com

Posted
Filed under Development/Windows Driver
원문 : http://www.osronline.com/article.cfm?article=295

레지스트리에서..

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter\

키를 생성해서 키 밑에 DEFAULT value를 추가해준다. (값 0xF = 모든 output 보여주기)


2008/03/19 13:48 2008/03/19 13:48
Posted
Filed under Development/Windows Driver
출처 : 디바이스드라이버 개발자 커뮤니티 (http://www.driveronline.org/)

------------------------------------------------

원문 => http://www.microsoft.com/whdc/driver/tips/debug_vista.mspx#

아~ 요즘 Whdc 사이트에 들어가면 새로운 내용들이 너무 많아서
주체할수가 없네요.....
그래도 하나씩이라도 볼려고 하는데,, 오늘 본 내용을 올려드립니다.
대충 요약을 하자면 다음과 같은 내용인 듯합니다.

이전에 Windbg를 통해서 디버깅을 할려면 boot.ini 파일을 수정해야 했었는데
이젠 그런 작업이 없어지고 새로운 것이 생겼습니다.
마이크로소프트에 의하면 예전엔 부트로더를 ntldr 을 사용했었는데
이것이 Bootmgr.exe 로 변경되었다고 합니다. 이렇게 되면서 boot.ini 가 아닌
Bcdedit.exe 라는 유틸리티를 통해서 부팅설정을 변경할 수 있습니다.

1. 일단 디버깅세팅을 할려면 dbgsetting 이라고하는 Global Parameter 를 변경해야한다고합니다.
아래와 같이 말이죠....
bcdedit /dbgsettings serial debugport:1 baudrate:115200 (참고로 usb, 1394 도 지원한다고 하는군요..)

2. 그리고 설정이 제대로 확인하기 위해서...
bcdedit /enum all
명령을 쳐서 확인하고요... 다음으로 넘어갑니다.

3. 그리고 가장 최근에 부팅을 위해 사용했던 설정값을 DebugEntry 라는 새로운 설정값으로 변경합니다.
(마치 boot.ini 에서 debugging 용도로 줄추가했던것과 비슷한 작업같습니다.)
bcdedit /copy {current} /d debugentry
성공하면 아래와 같은 메세지가 나옵니다... 적당한 GUID 를 할당 받는 군요...
The entry was successfully copied to {68602c25-5097-11da-99de-000802209f1b}.

4. 위오같이 설정값을 추가하였다고해도 .. 부트 메뉴에는 보이지 않는다고 하는군요.. 아래와 같은 작업을
하면 볼 수 있다고 합니다.
bcdedit /displayorder {current} {68602c25-5097-11da-99de-000802209f1b}

5. 이제 우리가 설정한 부팅설정값을 활성화시킵니다.
bcdedit /debug {68602c25-5097-11da-99de-000802209f1b} ON

6. 필요하다면 우리 부팅설정값을 default로 변경합니다.
bcdedit /default {68602c25-5097-11da-99de-000802209f1b}

7. 리부팅합니다.

참 디버깅하기 힘들군요.....
아무래도 Shell Script 를 만들어서 사용해야할듯하네요.......
흠... 저렇게 한데에는 어떤이유가 있겠지만..
아직까지는 마이크로소프트의 깊은 마음(?)을 알지는 못하겠네요...........
2008/03/19 09:42 2008/03/19 09:42
Posted
Filed under Development/Windows Driver
출처 : 디바이스드라이버 개발자 커뮤니티 (http://www.driveronline.org/)

------------------------------------------------

안녕하세요 ^^

Vista 에서 디버깅을 하면서 매번 새로운 Build 를 설치하고 나서 수많은 Bcdedit Command 를 입력해야 하는데 다 외울 수가 없어서 견우일지를 매번 참조하느라 본의 아니게 조회수를 올려 놓고 있었네요 ^^

그런데 간단하게 설정하는 방법이 있습니다.

c:\> bcdedit /debug on
c:\> bcdedit /dbgsettings serial debugport:1 baudrate:115200

저같은 경우 1394 를 사용하므로

c:\> bcdedit /dbgsettings 1394 channel:23

그럼 잘 사용하세요  ^^
2008/03/19 09:15 2008/03/19 09:15
Posted
Filed under Development/Delphi

안녕 하십니까?
(주)바로북닷컴의 김성규 입니다.
이 강좌는 본인이 관리합니다. 다른곳으로 옮기시면 출처를 밝혀주시기 바랍니다.

질문란에 인터넷 연결상태를 체크하는 방법에 대한 질문이 많이 올라옵니다.
Ping을 이용하는 방법에서 갖가지 방법이 있는데.. 표준 API 를 사용해 봅시다.
저도 사실 그동안은 네트워크카드의 정보를 읽어와서 활성화된 상태인지.. 또
루프백 디바이스인지를 가지고 체크해왔었지요.

강좌에 사용된 환경 : 델파이5, Windows 2000 pro, 익스플로러 5.0.2290
소스 정렬 : Tab size 4


-----

마이크로 소프트는 인터넷관련 API 를 간편하게 제공합니다.
FTP나 HTTP 같은 것을 만든다고 한다면 굳이 소켓을 사용할 필요가 없습니다.

하지만 이 강좌에서는 인터넷 연결상태 체크와 연결을 호출하는 것을 알아봅니다.

이 API 는 WinInet.dll 에 포함되어 있습니다.
이 DLL에 대한 인터페이스는 델파이에 이미 포함되어 있습니다.
/source/rtl/win/wininet.pas 죠.. (플랫폼 SDK에 포함된 wininet.h 를 번역하다가
죽을뻔 했음.. --;)

하지만 도움말에는 포함이 안되어 사람들이 잘 모르는 것 같습니다.

주의 할 점은 이 API 들은 익스플로러 4.0 부터 제공합니다.
다시 말하면 익스플로러가 반드시 4.0 이상이 깔려있어야 사용할 수 있다는
것입니다.
wininet.dll 을 같이 배포할 수도 있지만 별로 권장할 일은 아니죠.. MS 가 언제
업그레이드할지 모르니까요.

익스플로러버전에 따른 API 리스트는 다음과 같습니다.

API Functions Introduced in Internet Explorer 4

CreateUrlCacheGroup
DeleteUrlCacheGroup
FindFirstUrlCacheEntryEx
FindNextUrlCacheEntryEx
GetUrlCacheEntryInfoEx
HttpEndRequest
HttpSendRequestEx
InternetAutodial
InternetAutodialHangup
InternetDial
InternetGetConnectedState
InternetGoOnline
InternetHangUp
InternetReadFileEx
SetUrlCacheEntryGroup


API Functions Introduced in Internet Explorer 5

FindFirstUrlCacheGroup
FindNextUrlCacheGroup
FtpCommand
FtpGetFileSize
GetUrlCacheGroupAttribute
InternetGetConnectedStateEx
SetUrlCacheGroupAttribute


여기서 연결 상태를 체크하는 것은 InternetGetConnectedState 를 이용하면
간단합니다.

연결을 하는 것은 InternetAutodial 을 이용하면 됩니다.

이 함수들에 대한 도움말은 MSDN이나 플랫폼 SDK에 포함된 도움말을 이용하세요.

다음은 간단히 만들어본 유닛의 소스입니다.

(*
인터넷 관련 윈도우즈 API 자동화 유틸리티.

   제작자 : 김성규. allex@barobook.com
   날  짜 : 2000.09.16

*)

unit InternetUtil;

interface

uses
Windows, Dialogs, Forms, WinInet;

// Functions
function InternetConnected : Boolean;
function ConnectToInternet(Parent : TForm) : Boolean;
function AutoConnectToInternet(Parent : TForm) : Boolean;

implementation

function InternetConnected : Boolean;
var
Flags : DWORD;
begin
Flags := INTERNET_CONNECTION_LAN or INTERNET_CONNECTION_MODEM or
INTERNET_CONNECTION_PROXY;

Result := InternetGetConnectedState(@Flags, 0);
end;

function ConnectToInternet(Parent : TForm) : Boolean;
begin
Result := InternetAutodial(0, Parent.Handle);
end;

function AutoConnectToInternet(Parent : TForm) : Boolean;
begin
Result := True;
   if not InternetConnected then
   begin
    ShowMessage('인터넷에 연결되지 않았습니다. 연결을 시도합니다.');
// 모뎀으로 인터넷 연결을 시도한다.
       if ConnectToInternet(Parent) = false then
           Result := False;
   end
end;

end.


사용 예는 다음과 같습니다.

procedure TForm1.Button5Click(Sender: TObject);
begin
//
   if AutoConnectToInternet(Self) = False then
   begin
    ShowMessage('인터넷 연결에 실패하였습니다.');
   end else begin
    ShowMessage('인터넷에 연결된 상태 입니다..');
   end;
end;

간단하죠?

이상입니다.

2007/09/20 17:55 2007/09/20 17:55
Posted
Filed under Development/Delphi

단축아이콘 만들기
출처 : 델파이 3000

아래 소스는 바탕화면, 시작메뉴, 보내기 에 단축아이콘을 만드는 함수입니다.

사용예는 첨부파일 참조


procedure CreateShortcut(FileName: string; Location: ShortcutType);
var
MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
Directory,
LinkName : string;
WFileName : WideString;
MyReg,
QuickLaunchReg : TRegIniFile;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;

MySLink.SetPath(PChar(FileName));

MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
try
  LinkName := ChangeFileExt(FileName, '.lnk');
  LinkName := ExtractFileName(LinkName);
  case Location of
    _DESKTOP    : Directory := MyReg.ReadString('Shell Folders', 'Desktop', ''); // 바탕화면
    _STARTMENU  : Directory := MyReg.ReadString('Shell Folders', 'Start Menu', '');// 시작메뉴
    _SENDTO     : Directory := MyReg.ReadString('Shell Folders', 'SendTo', '');  // 보내기
    _QUICKLAUNCH:   // 디렉토리가 유동적(사용자에 따라)
  begin
       QuickLaunchReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\GrpConv');
       try
         Directory := QuickLaunchReg.ReadString('MapGroups', 'Quick Launch', '');
       finally
         QuickLaunchReg.Free;
       end;
     end;
 end;

 if Directory <> '' then
   begin
     WFileName := Directory + '\' + LinkName;
     MyPFile.Save(PWChar(WFileName), False);
   end;
finally
  MyReg.Free;
end;
end;  

2007/09/20 17:54 2007/09/20 17:54