1 2 3 4 5 | NTSTATUS IoCreateSymbolicLink( _In_ PUNICODE_STRING SymbolicLinkName, _In_ PUNICODE_STRING DeviceName ); | cs |
[파라미터]
SymbolicLinkName -> 유저 네임 유니코드 스트링 버퍼, 드라이버가 유저 모드 응용프로그램, System Componet에 제공하는 인터페이스이다.
DeviceName -> 드라이버 오브젝트에서 만든 유니코드 스트링 버퍼, PDEVICE_OBJECT가 만들어질 때 사용된 이름이다.
[반환값]
PDEIVCE_OBJECT 의 DeviceName 과 SymbolicLinkName을 연결시키는 데 성공했다면 STATUS_SUCCESS 를 반환한다.
[함수설명]
이 함수는 PDEVICE_OBJECT의 DeviceName을 유저모드의 응용 프로그램에 노출되는 SymbolickLinkName으로 연결시키는 역활을 한다.
이런 심볼릭 링크 방식은 주로 구형(Legacy)드라이버에서 사용되며, SymbolicLinkName의 유일성이라는 제한 사항 때문에 PnP 장치의 드라이버를 작성할 때는 GUID 를 사용해 IoRegisterDeviceInterface()를 호출한다. DeviceName과의 연결성을 해체 하려면 IoDeleteSymbolicLink()를 사용한다.
[호출 할때 요구되는 IRQL]
IRQL == PASSIVE_LEVEL
아래 사용예
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #define LINK_NAME L"\\DosDevices\\Ezbeat" #define DEVICE_NAME L"\\Device\\test" UNICODE_STRING DeviceLink; UNICODE_STRING DeviceName; NTSTATUS DriverEntry(..생략..) { returnStatus = IoCreateDeivce( DriverObject, 0, &DeivceName, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &MyDevice ); (..생략..) returnStatus = IoCreateSymbolickLink(&DeviceLink, &DeviceName); (..생략..) } | cs |
'Language & API > WINDOWS DRIVER' 카테고리의 다른 글
[함수]IoGetCurrentIrpStackLocation (0) | 2016.07.25 |
---|---|
[함수]IoSetDeviceInterfaceState (0) | 2016.07.25 |
[함수]IoRegisterDeviceInterface (0) | 2016.07.25 |
[자료구조]DEVICE_OBJECT (0) | 2016.07.25 |
[함수]IoAttachDeviceToDeviceStack (0) | 2016.07.25 |