情報: についてのデバイス名とシンボリック ・ リンク

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:235128
概要
ハード ディスク、シリアル ポートおよびパラレル ポート Windows NT デバイスの内部名があるし、必要に応じて可能性がありますのようなデバイスには、MS-DOS デバイス名があります。これらの名前は、Windows NT オブジェクト マネージャーの名前空間に配置されています。Windows NT とカーネル モードのドライバー NT のデバイス名を使用しますが、Win32 プログラム MS-DOS デバイス名を使用する必要があります。MS-DOS デバイス名は、基になる NT デバイス名へのシンボリック リンクです。この資料では、デバイス名、シンボリック リンク、および Win32 プログラムことができますを作成し、シンボリック ・ リンクを削除する方法について説明します。
詳細

内部の NT デバイス名

場合は、カーネル モードのデバイス ドライバーが読み込まれます、その初期化ルーチンデバイス名が Windows NT のオブジェクト ・ マネージャーに登録します。この名前は、Windows NT のデバイス名と呼ばれます。カーネル モードのコンポーネントの Windows NT とカーネル モードのドライバーは、Windows NT デバイス名でデバイスを参照します。これらの名前形式、\Device\CDRom0 や \Device\Serial0 などを持ち、オブジェクト マネージャーの名前空間の \device ディレクトリ内にも存在します。

Win32 プログラムは Win32 サブシステムと Win32 API といつもドライブ文字 a:、c:、COM1 などの MS-DOS デバイス名が必要なためアクセス デバイスに内部の Windows NT デバイス名を使用してできません: および lpt 1: します。Win32 プログラムは Windows NT デバイス名を使用可能性がありますが、ただし、できますを定義し、デバイスにアクセスするのには、MS-DOS デバイス名を削除します。これらも、MS-DOS デバイス名と関連付けられている、内部 Windows NT のデバイス名を取得できます。「シンボリック リンク」セクションのこの資料のコード例これを行う方法について説明します。

オブジェクト マネージャー名を追跡するの理解を深めるためにデバイスやその他のシステム オブジェクトは、プラットフォーム SDK で WinObj.exe ツール、オブジェクト マネージャーの名前空間を表示できます。

MS-DOS デバイス名

ドライブ、シリアル ポートおよびパラレル ポートなどのデバイスを使用する Win32 プログラム自分の MS-DOS デバイス名をします。ディスク ・ ドライブは、これらは a:、c: などのドライブ文字です。シリアルおよびパラレル ポート用これら COM1 のような名前です。:、COM2:、および lpt 1: します。オブジェクト マネージャーの名前空間には、Windows NT デバイス名と同様に、これらの名前がである、\ 次へディレクトリは、ユーザー モードの Win32 プログラムに表示されます。

MS-DOS デバイス名が異なるデバイス名を Windows NT になりますは、Windows NT カーネル メモリ ダンプやカーネル モードのドライバーが使用されていないことです。その目的は Win32 プログラム理解してドライブとデバイス名を使用できるように Windows NT のデバイス名を参照してくださいです。たとえば、COM1:、Windows NT デバイスにアクセスします。したがって、MS-DOS デバイス名は「Windows NT デバイス名にシンボリック リンク」と呼ばれます。つまり、オブジェクト マネージャー内ので、MS-DOS デバイス名が存在する \?ディレクトリと、オブジェクト マネージャーの \device ディレクトリ内の Windows NT デバイス名へのポインター。

各 MS-DOS デバイス名は多くて 1 つ内蔵 Windows NT デバイスを参照できます。ただし、複数の MS-DOS デバイス名に 1 つのデバイスを参照できます。C: がのみ 1 つのパーティションに指すことができますが、たとえば、d:、e:、およびリファレンス:、ポイントを同じように、2 つ以上のドライブ文字を含むことです。パーティション。

シンボリック リンク

コンピューターの再起動後、システムによって作成、シンボリック ・ リンクを保持します。レジストリに格納されているため。プログラムは、DefineDosDevice() API をシンボリック リンクも作成できます。これらのリンクはのみ、再起動またはリンクに関する情報を含むレジストリ キーが更新されない限り無効にされるまで有効です。

複数のシンボリック リンクは、Windows NT のデバイス名を指定できます。ただし、最初、内部 Windows NT のデバイスに割り当てられているシステム間でまだ、MS-DOS デバイス名のみを再起動します。したがって、1 つの CD-ROM ドライブには、複数のドライブ文字を割り当てる追加のシンボリック リンクを作成することも可能ですが、マシンをオフにするか、再起動するまでだけ別のドライブ文字を維持します。

Win32 プログラムは、特定の MS-DOS デバイス名と呼び出し QueryDosDevice()、MS-DOS デバイス名を使用して関連付けられた Windows NT のデバイス名を取得できます。これを行うには方法を示すコード例を次に示します。
char szNtDeviceName[MAX_PATH];if (QueryDosDevice ("C:", szNtDeviceName, MAX_PATH)){   printf ("C: is linked to %s\n", szNtDeviceName);}				
Win32 プログラムが作成し、呼び出すことにより、シンボリック リンクを削除できます。DefineDosDevice()。シンボリック リンクを作成するには、DefineDosDevice での呼び出しは、DDD_RAW_TARGET_PATH のフラグです。それに呼び出すシンボリック リンクを削除するには、DDD_REMOVE_DEFINITION および DDD_RAW_TARGET_PATH フラグを設定します。次の例では、プログラムのこれらの操作の両方を示しています。
/*   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 デバイス

警告: この記事は自動翻訳されています

プロパティ

文書番号:235128 - 最終更新日: 07/22/2011 14:26:00 - リビジョン: 6.0

  • kbinfo kbkernbase kbmt KB235128 KbMtja
フィードバック