Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

INFO: Pemahaman perangkat nama dan link simbolis

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:235128
RINGKASAN
Perangkat seperti hard disk, port serial dan paralel port memiliki nama perangkat Windows NT internal dan mungkin opsional memiliki nama perangkat MS-DOS. Nama-nama ini terletak di ruang nama manajer objek Windows NT. Sementara Windows NT itu sendiri dan pengandar kernel mode menggunakan nama perangkat NT, Win32 program harus menggunakan nama perangkat MS-DOS. Nama perangkat MS-DOS adalah symlink ke nama perangkat NT yang mendasari. Artikel ini menjelaskan perangkat nama, link simbolis dan bagaimana Win32 program dapat membuat dan menghapus link simbolik.
INFORMASI LEBIH LANJUT

Nama perangkat NT internal

Ketika pengandar kernel mode perangkat dimuat, inisialisasi rutinmendaftarkan nama perangkat dengan Windows NT manajer objek. Nama ini disebut sebagai nama perangkat Windows NT. Komponen kernel-mode Windows NT dan pengandar kernel mode referensi perangkat dengan nama perangkat Windows NT mereka. Nama-nama ini memiliki format, seperti \Device\CDRom0 dan \Device\Serial0 dan juga ada di direktori \device manajer objek namespace.

Win32 program tidak dapat menggunakan nama perangkat Windows NT internal untuk akses perangkat karena subsistem Win32 dan Win32 API memerlukan huruf drive yang lebih akrab dan MS-DOS perangkat nama, seperti A:, C:, COM1:, dan LPT1:. Meskipun Win32 program tidak dapat menggunakan nama perangkat Windows NT, mereka dapat Namun, mendefinisikan dan menghapus nama perangkat MS-DOS untuk mengakses perangkat. Mereka juga dapat mengambil nama perangkat Windows NT internal yang terkait dengan nama perangkat MS-DOS. Contoh kode di bagian "Link simbolik" dari artikel ini menjelaskan bagaimana untuk melakukannya.

Untuk mendapatkan pemahaman yang lebih baik tentang bagaimana manajer objek melacak namaperangkat dan sistem lain objek, Anda dapat melihat manajer objek namespace dengan alat WinObj.exe di Platform SDK.

Nama perangkat MS-DOS

Win32 program menggunakan perangkat seperti drive, port serial dan paralel portmelalui nama perangkat MS-DOS. Untuk disk drive, ini adalah huruf pengandar seperti A: dan C:. Untuk port serial dan paralel berikut adalah nama-nama seperti COM1:, COM2:, dan LPT1:. Seperti nama perangkat Windows NT, nama-nama ini berada di ruang nama manajer objek, tetapi dalam \?? direktori, yang terlihat untuk mode pengguna Win32 program.

Apa yang membuat MS-DOS perangkat nama berbeda dari nama perangkat Windows NT adalah bahwa mereka tidak digunakan oleh Windows NT kernel atau kernel mode driver. Tujuan mereka adalah untuk merujuk kepada nama perangkat Windows NT sehingga Win32 program dapat menggunakan huruf kandar yang akrab dan perangkat nama; sebagai contoh, COM1: untuk mengakses perangkat Windows NT. Oleh karena itu, nama perangkat MS-DOS disebut "link simbolik" untuk nama perangkat Windows NT. Nama perangkat MS-DOS yang ada di manajer objek \?? direktori dan poin untuk Windows NT nama perangkat di manajer objek \device direktori.

Setiap nama perangkat MS-DOS dapat menunjukkan paling banyak satu internal Windows NT perangkat. Namun, beberapa MS-DOS perangkat nama dapat menunjukkan satu perangkat. Sebagai contoh, sementara C: hanya dapat menunjukkan satu partisi, dimungkinkan untuk memiliki dua atau lebih huruf kandar, seperti D:, E: dan Z:, titik yang samapartisi.

Tautan simbolis

Tautan simbolis yang dibuat oleh sistem bertahan di seluruh komputer restartkarena mereka disimpan dalam registri. Program juga dapat membuat tautan simbolis dengan DefineDosDevice() API. Link ini berlaku hanya sampai komputer di-restart atau dimatikan kecuali kunci registri yang berisi informasi tentang link yang diperbarui.

Ada dapat beberapa link simbolis untuk nama perangkat Windows NT. Namun, hanya MS-DOS nama perangkat yang sistem awalnya ditugaskan untuk perangkat Windows NT internal tetap di reboot. Oleh karena itu, dimungkinkan untuk membuat tambahan link simbolik yang menetapkan beberapa huruf pengandar untuk pengandar CD-ROM yang satu, tapi huruf kandar tambahan hanya tetap sampai mesin dimatikan atau dimulai ulang.

Win32 program dapat mengambil nama perangkat Windows NT yang dikaitkan dengan nama perangkat MS-DOS khusus oleh panggilan QueryDosDevice() dengan nama perangkat MS-DOS. Berikut adalah kode contoh yang menunjukkan cara untuk melakukannya:
char szNtDeviceName[MAX_PATH];if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH)){   printf ("C: is linked to %s\n", szNtDeviceName);}				
Win32 program dapat membuat dan menghapus tautan simbolis dengan meneleponDefineDosDevice(). Untuk menciptakan symlink, panggilan DefineDosDevice denganDDD_RAW_TARGET_PATH bendera. Untuk menghapus link simbolik, menyebutnya denganBendera DDD_REMOVE_DEFINITION dan DDD_RAW_TARGET_PATH. Contoh berikutprogram menunjukkan kedua operasi ini:
/*   DDD      This sample shows how to associate an MS-DOS device name with a       Windows NT device name. The association is a symbolic link between      device names stored in the Object Manager's namespace. Applications      use the MS-DOS device name, but Windows NT and kernel-mode drivers      use the Windows NT device name.     Usage:      ddd <MS-DOS Device Name> <NT Device Name>      ddd -r <MS-DOS Device Name>   NOTE: If the MS-DOS device name is a driver letter, the trailing    backlash is not accepted by DefineDosDevice or QueryDosDevice.   NOTE: The MS-DOS device name is defined only until the computer is    restarted.   To make the drive letter associations permanent on Window NT 4.0, you   have to update HKEY_LOCAL_MACHINE\SYSTEM\DISK\Information. However,    the contents of the value are undocumented.    On Windows 2000, you have to use the Volume Mount Point APIs.*/ #define WIN32_LEAN_AND_MEAN /* Reduce number of system headers parsed */                             /* during build. */ #include <windows.h>#include <stdio.h>void main (int argc, char **argv){   char * pszDosDeviceName,        * pszNtDeviceName;   bool  fRemoveDeviceName = false;   bool  fResult;   /*      Command-line parsing.        1) Make sure correct number of arguments are supplied.        2) See if you should add or remove the MS-DOS Device Name.   */    if (argc != 3)   {      printf("\nusage: %s <DOS device name> <NT device name>    to add\n",             argv[0]);      printf("usage: %s [-r] <DOS device name>                to remove\n",             argv[0]);      printf("\n\texample: %s d: \\device\\cdrom0\n", argv[0]);      return;   }   fRemoveDeviceName = !lstrcmpi (argv[1], "-r");   /* Now, add/remove the DOS device name. */    if (fRemoveDeviceName)   {      /*         Remove the MS-DOS device name. First, get the name of the Windows         NT device from the symbolic link, then delete the symbolic link.               */       pszDosDeviceName = argv[2];      pszNtDeviceName = (char *)LocalAlloc (LPTR, MAX_PATH);      fResult = QueryDosDevice (pszDosDeviceName, pszNtDeviceName,                                MAX_PATH);      if (fResult)      {         fResult = DefineDosDevice (DDD_RAW_TARGET_PATH|                                    DDD_REMOVE_DEFINITION|                                    DDD_EXACT_MATCH_ON_REMOVE,                                    pszDosDeviceName, pszNtDeviceName);      }      if (!fResult)         printf("error %lu: could not remove %s\n",                GetLastError(), pszDosDeviceName);      LocalFree (pszNtDeviceName);   }   else   {      /* Add the DOS device name */       pszDosDeviceName = argv[1];      pszNtDeviceName  = argv[2];      fResult = DefineDosDevice (DDD_RAW_TARGET_PATH, pszDosDeviceName,                                 pszNtDeviceName);      if (!fResult)         printf("error %lu: could not link %s to %s\n",                GetLastError(), pszDosDeviceName, pszNtDeviceName);   }}				
DOS PERANGKAT

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 235128 - Tinjauan Terakhir: 09/20/2011 12:29:00 - Revisi: 2.0

Microsoft Win32 Application Programming Interface

  • kbinfo kbkernbase kbmt KB235128 KbMtid
Tanggapan
html>