결론부터
난 머리가 훌륭하지 않아~ 기본을 따르는 것도 정신 건강에 도움이 됨.
IoCreateSymbolicLink
NTSTATUS IoCreateSymbolicLink(
[in] PUNICODE_STRING SymbolicLinkName,
[in] PUNICODE_STRING DeviceName
);
IoDeleteSymbolicLink
NTSTATUS IoDeleteSymbolicLink(
[in] PUNICODE_STRING SymbolicLinkName
);
코드
#define DEVICE_NAME L"\\Device\\wdmdrv-02Class0" // 실제 드라이버 생성한 디바이스의 이름
#define SYMBOLIC_NAME L"\\DosDevices\\wdmdrv-02Class0" // 유저가 접근할 심볼, 응용에서 드라이버 접근시 ex) L"\\\\.\\wdmdrv-02Class0"
개념 바로 챙기기
디바이스 이름을 이렇게 표시한 이유는
드라이버에 여러개의 디바이스가 존재할 수 있기 때문이다.
드라이버 1개 안에 디바이스 1개 만 존재하는 경우
wdmdrv-02 : 드라이버 이름
wdmdrv-02Class0: 디바이스 이름
드라이버 1개 안에 디바이스 2개 만 존재하는 경우
wdmdrv-02 : 드라이버 이름
wdmdrv-02Class0: 디바이스 이름1
wdmdrv-02Class1: 디바이스 이름2
결과물
키보드, 마우스 드라이버와 유사함. (가장 이해가 빠름)
예를 들어 키보드가 하나 더 추가 된다면 디바이스 명은 어떻게 될까요?
\Device\KeyboardClass0
\Device\KeyboardClass1
'Windows Drivers' 카테고리의 다른 글
CallBackRegistration 수행을 위한 /INTEGRITYCHECK (0) | 2022.07.29 |
---|---|
Windbg 에서 DEBUG 심볼 디버깅 못하도록 설정 .pdb (0) | 2022.07.20 |
윈도우 드라이버 입문 (0) | 2022.07.15 |
WHQL 참고 링크 (0) | 2022.07.15 |
Windows Driver Model (기초 책) (0) | 2022.07.15 |