MS-DOS 디바이스 이름 소개

WDM이 아닌 드라이버에서 만든 명명된 디바이스 개체에는 일반적으로 MS-DOS 디바이스 이름이 있습니다. MS-DOS 디바이스 이름은 \DosDevices\DosDeviceName 형식의 이름을 가진 개체 관리자의 기호 링크입니다.

MS-DOS 디바이스 이름이 있는 디바이스의 예로는 직렬 포트인 COM1이 있습니다. MS-DOS 디바이스 이름 \DosDevices\COM1이 있습니다. 마찬가지로 C 드라이브의 이름은 \DosDevices\C:입니다.

WDM 드라이버는 일반적으로 디바이스에 대해 MS-DOS 디바이스 이름을 제공하지 않습니다. 대신 WDM 드라이버는 IoRegisterDeviceInterface 루틴을 사용하여 디바이스 인터페이스를 등록합니다. 디바이스 인터페이스는 특정 명명 규칙이 아닌 해당 기능에 따라 디바이스를 지정합니다. 자세한 내용은 디바이스 인터페이스 클래스를 참조하세요.

드라이버는 디바이스가 사용자 모드 프로그램에서 작동하기 위해 잘 알려진 특정 MS-DOS 디바이스 이름이 있어야 하는 경우에만 MS-DOS 디바이스 이름을 제공해야 합니다.

드라이버는 IoCreateSymbolicLink 루틴을 사용하여 디바이스에 대한 기호 링크를 만들어 디바이스 개체에 대한 MS-DOS 디바이스 이름을 제공합니다. 예를 들어 다음 코드 예제에서는 \DosDevices\DosDeviceName 에서 \Device\DeviceName으로의 기호 링크를 만듭니다.

UNICODE_STRING DeviceName;
UNICODE_STRING DosDeviceName;
NTSTATUS status;

RtlInitUnicodeString(&DeviceName, L"\\Device\\DeviceName");
RtlInitUnicodeString(&DosDeviceName, L"\\DosDevices\\DosDeviceName");
status = IoCreateSymbolicLink(&DosDeviceName, &DeviceName);
if (!NT_SUCCESS(status)) {
  /* Symbolic link creation failed.  Handle error appropriately. */
}

시스템은 여러 버전의 \DosDevices 디렉터리를 지원합니다. 드라이버가 의도한 버전에서 기호 링크를 만드는지 확인합니다. 자세한 내용은 로컬 및 글로벌 MS-DOS 디바이스 이름을 참조하세요.

사용자 모드에서 DosDevices 네임스페이스에 액세스하려면 파일 이름을 열 때 \\.\ 를 지정합니다. CreateFile()을 호출하여 사용자 모드에서 해당 디바이스를 열 수 있습니다.

예를 들어 다음 코드 예제에서는 사용자 모드에서 \\DosDevices\\DosDeviceName 디바이스를 엽니다.

file = CreateFileW(L"\\\\.\\DosDeviceName",
  GENERIC READ | GENERIC WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL);

사용자 모드 DefineDosDevice 루틴을 사용하여 사용자 모드 애플리케이션에서 기호 링크를 만들 수도 있습니다. 자세한 내용은 Microsoft Windows SDK 참조하세요.