Q&A

  • 프린터상태구하기 중에서 어셈코드좀 갈켜주세요...
팁에서 안치봉님의 프린터 구하기에서 질문이 있어서요..

function TestPrinterStatus(LPTPort: word): byte;
var
Status: byte;
CheckLPT: word;
begin
Status := 0;
if (LPTPort >= 1) and (LPTPort <= 3) then
begin
CheckLPT := LPTPort -1;

asm
mov dx, CheckLPT;
mov al, 0;
mov ah, 2;
int 17h;         //이게 뭔지...?
mov &Status, ah;
end;

end;
Result := Status;
end;

Pass in the LPT port number you want to check & get the following back:

01h - Timeout
08h - I/O Error
10h - Printer selected
20h - Out of paper
40h - Printer acknowledgement
80h - Printer not busy (0 if busy)

// from Grahame

1번째 질문 : 위의 int 17h; 가 무슨 뜻인지 모르겠습니다..
2번째 질문 : 윈도우98에서는 작동하는데
       NT계열, 2000, XP에서는 위의 17h에서 딱 에러가 걸려서
       더 이상 진행이 안되네요....
       NT계열에서 돌아갈 수는 없나요.....
1  COMMENTS
  • Profile
    문상철 2003.07.08 01:12
    쩝..
    int 17h 라는것은
    인터럽트 를 가로채는것입니다.

    인터럽트 벡터 데이블이라고 있는데 거기에는 여러가지
    작은 인터럽트 루틴들이 들어 있습니다.


    예를 들어 키를 눌렀을때는 키보도 인터럽트가 발생하는데

    예전 dos 시절에는 프로그램에서 키보드 눌린것을 알아내서
    처리를 해주려면 키보드 인터럽트를 가로채서
    프로그램에서 사용했습니다.
    훅킹과 같다고나 할까

    win98은 dos를 이용해서 부팅되기 때문에
    dos의 인터럽트가 먹히지만..

    winNT 나 win2000은 dos를 이용하지 않기 때문에
    전혀 사용할 수가 없죠..
    대신 그거에 대응할 수 있는 다른것을 찾아봐야 합니다.
    winAPI가 지원하지 않을까 생각해봅니다.




    dos에서