WDM プリンタINFファイル解析一般 新しいページはコチラ
提供: yonewiki
(→[DestinationDirs]) |
|||
1行: | 1行: | ||
+ | [[Windows Driver Model]]に戻る | ||
== '''概要''' == | == '''概要''' == | ||
WDM プリンタインストールの解析記事です。最近はPrinterってPDFに出力するだけだったりすることも多いですが、そういったプリンタのインストールってどんな感じの動きをするのかを知るのがこの記事になります。管理人程度の知識ではさほど解析できないと思いますが、まずはやってみましょう。 | WDM プリンタインストールの解析記事です。最近はPrinterってPDFに出力するだけだったりすることも多いですが、そういったプリンタのインストールってどんな感じの動きをするのかを知るのがこの記事になります。管理人程度の知識ではさほど解析できないと思いますが、まずはやってみましょう。 | ||
618行: | 619行: | ||
==== ''' [DestinationDirs] '''==== | ==== ''' [DestinationDirs] '''==== | ||
− | ファイルのコピー先を指定する部分です。DefaultDestDir= | + | ファイルのコピー先を指定する部分です。DefaultDestDir=66000は既定の配布先を指定するもので66000はプリンタドライバの配置をする既定のディレクトリ名を示します。番号が特定のディレクトリ名を保持していて、この番号によるディレクトリ名指定の管理はかなりの数が登録されています。66000はGetPrinterDriverDirectoryというAPIを実行して返却される値です。diridと呼ばれています。Windows10のamd64アーキテクチャーの場合はC:\Windows\System32\spool\drivers\x64が返ってきます。[https://docs.microsoft.com/ja-jp/windows-hardware/drivers/install/using-dirids dirid]についてはリンク先に記述があります。 |
654行: | 655行: | ||
cbBuff, _ | cbBuff, _ | ||
pcbNeeded) = 0 Then | pcbNeeded) = 0 Then | ||
+ | '1回目の呼び出しでは返却で必要な文字数を返すために呼び出します。 | ||
+ | '最初はディレクトリ値は得られません。 | ||
pDriverDirectory = Space$(pcbNeeded) | pDriverDirectory = Space$(pcbNeeded) | ||
664行: | 667行: | ||
cbBuff, _ | cbBuff, _ | ||
pcbNeeded) = 1 Then | pcbNeeded) = 1 Then | ||
+ | '2回目の呼び出しでは返却で必要な文字数設定して呼び出しているので | ||
+ | 'ディレクトリ値が得られます。 | ||
− | + | Debug.Print Left$(pDriverDirectory, pcbNeeded) | |
− | + | '取得できた値がイミディエイトウィンドウに表示されます。 | |
End If | End If | ||
End If | End If | ||
674行: | 679行: | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
+ | |||
+ | |||
+ | |||
+ | ==== ''' [SourceDisksFiles] '''==== | ||
+ | [SourceDisksFiles]は[SourceDisksFiles.amd64]のようにアーキテクチャー情報が付加されたものを対象にすることができます。この欄で先述したCopyFileセクションで記載したファイル一つ一つの詳細情報を記述する部分です。ファイルがどこにあるのかといた情報をつけ足します。たとえINFファイルと同じ位置にあったとしても、ディレクトリの位置がどこなのかを明示する必要があります。 | ||
+ | |||
+ | |||
+ | *<span style = "background:linear-gradient(transparent 75%, #ff7f7f 75%); font-weight:bold; ">78行目:DNuanuni.dll = [1]1<span>(</span>=diskid<span>)</span>,[2]<span>(</span>=subdir<span>)</span>,[3]<span>(</span>upgradecode<span>)</span>,[4]<span>(</span>newinstallcode<span>)</span>,[5]<span>(</span>spare<span>)</span>,[6]<span>(</span>spare<span>)</span>,[7]<span>(</span>newfilename<span>)</span>,11<span>(</span>=diskid<span>)</span>,\amd64<span>(</span>=subidir<span>)</span></span> | ||
+ | : これを紐解くのは難しい。なんで1の後ろにカンマ7つもあるん?コレって感じです。1と11を先述したdiridで1はINFファイルがあるInstalFileドライブを意味しています。11はC:¥Windows¥System32です。WindowsディレクトリはほとんどのPCで共通ですが、名前を変更することもできるので、11が同じ役割のフォルダという風に紐づけられています。diridはややこしいけど、プリンタドライバをインストールする技術としては必要不可欠な便利なシステムです。 | ||
+ | |||
+ | |||
+ | : カンマ7つは別の意味をもっています。[1]diskid, [2]subdir, [3]upgradecode, [4]newinstallcode, [5]spare, [6]spare, [7]newfilename | ||
+ | |||
+ | |||
=== ''' NTPRINT.INI '''=== | === ''' NTPRINT.INI '''=== | ||
955行: | 974行: | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
+ | |||
+ | |||
+ | |||
+ | [[Windows Driver Model]]に戻る |