[C#] DeviceIoControlの変数の型
Visual C# 2008でDeviceIoControlを利用して
USBを操作しようとしているのですが、
DLLImportの時に指定する変数の型がわからないのです。
BOOL DeviceIoControl(
HANDLE hDevice, // デバイス、ファイル、ディレクトリいずれかのハンドル
DWORD dwIoControlCode, // 実行する動作の制御コード
LPVOID lpInBuffer, // 入力データを供給するバッファへのポインタ
DWORD nInBufferSize, // 入力バッファのバイト単位のサイズ
LPVOID lpOutBuffer, // 出力データを受け取るバッファへのポインタ
DWORD nOutBufferSize, // 出力バッファのバイト単位のサイズ
LPDWORD lpBytesReturned, // バイト数を受け取る変数へのポインタ
LPOVERLAPPED lpOverlapped // 非同期動作を表す構造体へのポインタ
);
と、MSDNに載っていて
[DllImport("kernel32", SetLastError = true)]
private static extern bool DeviceIoControl(
IntPtr hDevice, // デバイス、ファイル、ディレクトリいずれかのハンドル
uint dwIoControlCode, // 実行する動作の制御コード
ref byte[] lpInBuffer,
uint nInBufferSize, // 入力バッファのバイト単位のサイズ
ref byte[] lpOutBuffer,
uint nOutBufferSize, // 出力バッファのバイト単位のサイズ
ref int lpBytesReturned, // バイト数を受け取る変数へのポインタ
int Overlapped // overlapped buffer
);
と、して
Bool ret = DeviceIoControl(hDevice,123456,null,0,null,0,0);
と、しても戻り値がfalseにしかなりません。
具体的には
byte配列で{ 0x01, 0x23, 0x45, 0x67, 0,89}のような値を入力データにして
byte bytes = new byte[10];
で、確保したbytesに出力データを受け取りたいのです。
どのようにすればよいでしょうか?