・WORDは.NETではShort(System.Int16)にマッピング
・DC_BINSを指定した場合返ってくるのはWORD配列である。
 配列の各要素の変更を可能にするには、仮引数の宣言にSystem.Runtime.InteropServices.OutAttribute属性を付加する。
・構造体は、通常自分でC/C++の構造体を.NET用にに置き換えた構造体を定義する。
 構造体のポインタを渡す場合はByRefキーワードを使用する。
 しかし必ずNULLを指定するのなら、System.IntPtrで仮引数を定義して、渡すときにSystem.IntPtr.Zeroを渡しても良い。

と言う事をふまえて、

'定義パート
Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
   ByVal pDevice As String, _
   ByVal pPort As String, _
   ByVal fwCapability As Short, _
   <System.Runtime.InteropServices.OutAttribute> ByVal pOutput() As Short, _
   ByVal pDevMode As IntPtr) As Integer

'実行パート
Dim size As Integer
'まず個数を取得する
size = DeviceCapabilities(strPrinterDeviceName, strPrinterPortName, intDeviceCapability, Nothing, System.IntPtr.Zero)
'配列を初期化
Dim output(size) As Integer
'取得
DeviceCapabilities(strPrinterDeviceName, strPrinterPortName, intDeviceCapability, output, System.IntPtr.Zero)
'後は随意
Dim p As Short
For Each p In output
   '何らかの処理
Next