非 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);
您也可以使用 user-mode DefineDosDevice 例程,從使用者模式應用程式建立符號連結。 如需詳細資訊,請參閱 windows SDK Microsoft。