메뉴 건너뛰기

그외 개발정보


inf 파일을 이용한 드라이버 자동 설치

안민선 2003.09.23 12:26 조회 수 : 2109

INF 파일을 이용한 드라이버 자동 설치를 구현중입니다...

여러가지 방법이 있더군여....

1. 인스톨쉴드를 이용한 방법
2. DDK 에서 Exe 파일을 만들어 사용하는 방법
3. INF, SYS 파일을 시스템 폴더에 복사후 레지스터 등록하는 방법


제가 선택한 방법은 2번인 DDK를 이용한 방법입니다...

우선적으로 여기있는 자료나 데브피아에 있는 자료는 거의 모두 살펴보았는데, 정확한 답은 찾지 못하였습니다.

관련된 자료나 예제 소스 있으면 부탁드리겠습니다..


가장 근접한 자료로 데브피아에 있는 자료를 보고 SetupCopyOEMInf 이용하여 콘솔에서 exe 파일로 구현하였는데(DevPartner/Driver Studio Lecture & Tip에 45번)

그 내용은 다음과 같습니다... 근데 문제는 이놈이 정상적으로 실행되는지가 궁금합니다.. 컴파일은 정상적으로 이루어 지는데, SetupCopyOEMInf는 실행되지 않습니다.


// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <tchar.h> // Make all functions UNICODE safe.
#include <windows.h>
#include <newdev.h> // for the API UpdateDriverForPlugAndPlayDevices().
#include <setupapi.h> // for SetupDiXxx functions.
//#include <initguid.h>
int DisplayError(TCHAR * ErrorName);


int main(int argc, char* argv[])
{
if(!SetupCopyOEMInf(
".\\USBW9967.inf", //inf 파일명 : 사용하는 inf파일명 지정
NULL,
SPOST_PATH,
SP_COPY_NOOVERWRITE,
NULL,
8, // inf파일명 길이, 파일 내용의 크기가 아니라 파일명의 길이임.
NULL,
NULL))
{
DisplayError(TEXT("Setup Copy OEMInf Error"));
}

return 0;
}

int DisplayError(TCHAR * ErrorName)
/*++
Routine Description:

This Routine will display the LastError in human readable
form when possible.

If the return value is a 32-bit number, and falls in the range:
ERROR_NO_ASSOCIATED_CLASS 0xE0000200
To
ERROR_CANT_REMOVE_DEVINST 0xE0000232
The values defined in setupapi.h can help to determine the error.
Start by searching for the text string ERROR_NO_ASSOCIATED_CLASS.

Arguments:

ErrorName: Human readable description of the last Function called.

Return Value:

Allways returns FALSE.

--*/
{
DWORD Err = GetLastError();
LPVOID lpMessageBuffer = NULL;

if (FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
Err,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMessageBuffer,
0,
NULL ))
_tprintf(TEXT("%s Fail: %s\n"),ErrorName,(TCHAR *)lpMessageBuffer);
else
_tprintf(TEXT("%s FAILURE: (0x%08x)\n"),ErrorName,Err);

if (lpMessageBuffer) LocalFree( lpMessageBuffer ); // Free system buffer

SetLastError(Err);
return FALSE;
}


위에 소스를 돌리면 다음과 같은 결과가 나옵니다.

결과 :
Setup Copy OEMInf Error : 파일이 있습니다.




번호 제목 글쓴이 날짜 조회 수
공지 [TIP] 라즈베리파이 3를 AP로 만들기 (How to make Raspberry Pi 3 to Access point device) 파이팅건맨 2018.01.22 7455
공지 [TIP] ASR 오픈소스 프로젝트 - Kaldi 로 나만의 STT 서비스 구축해 보기 파이팅건맨 2018.07.26 5120
공지 [TIP] NEXUS(넥서스) 5x 루팅 방법입니다. 파이팅건맨 2016.01.05 4059
30 뒷북일지 모르지만.. bootsect.asm에 버그있네요.. [2] 장진호 2004.02.12 557
29 토글키 만들기 예제를 키 인풋으로 전환하는데 [1] 질문 2004.01.13 759
28 [질문] 다른 OS에서 사용한 HDD를 섹터단위로 Read하는 방법. [1] 이중락 2003.12.12 724
27 print port 제어 [1] 이성구 2003.12.08 529
26 드라이브 타입을 알고 싶습니다(A:, C:, F:....) [1] 돌쇠 2003.12.03 546
25 USB통신 어플리케이션 만들때요.. [1] 이상근 2003.11.14 729
24 WRITE_PORT_UCHAR를 이용한 마우스를 제어 [1] 궁금해요 2003.11.12 1331
23 성의 있는 답변 너무너무 감사합니다. [1] 노건우 2003.11.11 439
22 [질문]ClassGuid와 Interface Guid [6] 노건우 2003.11.10 1046
21 DMA관련 질문... [1] 장상현 2003.11.05 472
20 DeviceIoControl 사용법 [1] 이정은 2003.11.05 745
» inf 파일을 이용한 드라이버 자동 설치 [2] 안민선 2003.09.23 2109
18 232통신 데이타 질문 [1] 김태완 2003.09.08 492
17 keyboard filter에 쓰기 기능 [3] 김민호 2003.09.06 549
16 수신값이 좀 애매해서...요 [1] 김태완 2003.08.25 477
15 각각 다른값을 수신측에 보낼려면 김태완 2003.08.23 496
14 데브피아에 글을올린 김태완입니다. 김태완 2003.08.21 1480
13 [질문]VxD에서 Event 오브젝트 사용방법 [1] 김지웅 2003.06.17 492
12 디바이스 제어 프로그래밍을 공부하고 싶은데요.. [1] 욱이 2003.06.12 564
11 [심볼서버 사용법]커널 디버깅에서 원하는 심볼 파일 다운 방법 파이팅건맨 2003.04.28 931
위로