テクニカル ドキュメント #141



Doc ID: 141
製品: WinDriver
Version:  14.30

PowerShell 経由で WinDriver .NET API の使用

PowerShell とは

Microsoft は PowerShell を 「.NET 上に構築されたタスクベースのコマンド ライン シェルおよびスクリプト言語です。PowerShell は、システム管理者およびパワー ユーザーが、オペレーティング システムとプロセスを管理するタスクを迅速に自動化するのに役立ちます。」と定義しています。

PowerShell で WinDriver を使用する利点

  1. PowerShell は、すべての最新の Windows システムに組み込まれています。使用するために追加のソフトウェアをインストールする必要はありません。
  2. スクリプト言語なので、コードをコンパイルする必要はありません。
  3. WinDriver をスクリプトまたは他の .NET ベースのライブラリと簡単に組み合わせる機能を備えています。

PowerShell のコマンド ライン インターフェイス (CLI) から WinDriver の API を使用する

WinDriver は、.NET ラッパー DLL wdapi_dotnetXXXX.dll (XXXX はバージョン番号を表します) を長年提供しています。 PowerShell の組み込み .NET サポートを使用すると、PowerShell のコマンドラインから次のコードを使用して、この DLL を簡単に開き、API 関数を呼び出すことができます。

# Load the WinDriver .NET DLL
using namespace Jungo.wdapi_dotnet
$wdapi_dotnet = [Reflection.Assembly]::
LoadFile($Env:WD_BASEDIR + "\lib\amd64\v4.0.30319\wdapi_dotnetXXXX.dll")

# Open WinDriver
[windrvr_decl]::WD_DriverName("YOUR_DRIVER_NAME")
[wdc_lib_decl]::WDC_DriverOpen([wdc_lib_consts]::WDC_DRV_OPEN_DEFAULT,
"YOUR_LICENSE_STRING")

#Open a device

#by default the slot will be set to 0,0,0
$slot = New-Object -TypeName "Jungo.wdapi_dotnet.WD_PCI_SLOT"
$deviceInfo = New-Object -TypeName "Jungo.wdapi_dotnet.WD_PCI_CARD_INFO"
$deviceInfo.pciSlot = $slot
[wdc_lib_decl]::WDC_PciGetDeviceInfo($deviceInfo)

#Device context will be set to NULL for simplicity of sample
$pDevCtx = $NULL
$dev = New-Object -TypeName "Jungo.wdapi_dotnet.WDC_DEVICE"
[wdc_lib_decl]::WDC_PciDeviceOpen([ref]$dev, $pDeviceInfo, $pDevCtx)

# Read from the device (or any other WinDriver API usage)
[wdc_lib_decl]::WDC_ReadAddr32($dev.hDev, 0, 0x60, 0x1)

# Cleanup
[wdc_lib_decl]::WDC_PciDeviceClose($dev.hDev)
[wdc_lib_decl]::WDC_DriverClose()

WinDriver の API を利用した完全な PowerShell スクリプトはありますか?

はい。 WinDriver 14.30 以降、Jungo は、pci_diag サンプル アプリケーションに基づいて PowerShell のサンプルを提供しています。WinDriver/samples/powershell/pci_diag をご参照ください。

まず始めに、Powershell でスクリプトを実行できるようにします。

  1. 管理者として PowerShell を開きます。
  2. 実行

    Set-ExecutionPolicy RemoteSigned

    PowerShell に対して pci_diag を実行するには、次のように入力します。

    cd $Env:WD_BASEDIR\samples\powershell\pci_diag ./pci_diag

注意:

  1. 現在、サンプルは次の機能をサポートしていません。
    Power events, IPC, Kernel PlugIn, USB, Shared Kernel Buffer
  2. PowerShell の pci_diag は、割り込み処理をサポートするために、wdapi_psXXXX.dll と呼ばれる補足 DLL ファイルを使用します。このファイルは、WinDriver および PowerShell で割り込み処理関数を使用するために必要です。このファイルとスクリプトは現在、WinDriver Windows 64ビット版でのみ提供されています。32ビット Windows システムで PowerShell を使用する場合でも、このドキュメントのスクリプト例を参照として使用できます。
  3. WinDriver の API と pci_diag は、PowerShell コマンドラインと PowerShell ISE IDE の両方で機能します。
  4. 現在、WinDriver の API は、Linux または macOS で実行されている PowerShell では使用できません。