HIRO's.NETは http://hiros-dot.net へ引っ越しました。 このページの新しいURLは http://hiros-dot.net/CS2003/index.htm です。 ブックマークされている方はお手数ですが http://hiros-dot.net へ修正お願いいたします。 HOME > C# 2003 Tips HOME
複雑な引数付きでネイティブ DLL の関数を呼び出したい,の巻 2003/11/17 新規 以下のサイトも参考にしてください。 Win32 APIやDLL関数を呼び出すには? Win32 APIやDLL関数に文字列や文字列バッファを渡すには? Win32 APIやDLL関数に構造体を渡すには? C/C++ 言語で作られた DLL の関数に引数として構造体を渡すとき、 その構造体のメンバに構造体ポインタが含まれていた場合どうすれば良いでしょうか? ポイントは 構造体ポインタは IntPtr 構造体で扱うこと 事前に必要サイズ分だけメモリ確保すること IntPtr 構造体から目的の構造体配列へはマーシャリングできないので、個々の構造体として取り出すこと 使い終わったら確保したメモリを開放すること という感じです。 以下に、サンプルを示します。 STRUCT_A 構造体は以下のように、別の構造体
TIPS:Win32 APIやDLL関数を呼び出すには? では、.NETのプログラムからWin32 APIやDLLファイルにある関数を呼び出すための基本的な手順を解説している。ここではそれらDLL関数に渡すパラメータが「構造体」である場合の取り扱い方法について解説する。 .NET FrameworkからWin32 APIやDLL関数を呼び出す場合に、パラメータや戻り値に構造体が使用されているときは、その構造体と等価なものをC#で改めて定義しなければならない。Win32 APIで使用する構造体は、TIPS:Win32 APIやDLL関数を呼び出すには? で解説している定数と同様に、プラットフォームSDKのヘッダ・ファイルにその定義がある。また、構造体に関してはMSDNのドキュメント類にも定義が記述されている。 例えば、Win32 APIでしばしば使用される構造体の1つにPOINT構造体がある
前回の続きです。今回はWSADuplicateSocketを使ってソケットを子プロセスへ引き渡す方法をご紹介です。この方法はWinsock2でしか使えませんが、正式な方法だそうです。 親プロセス #include <windows.h> #include <winsock2.h> int main() { SECURITY_ATTRIBUTES sa; HANDLE hRead, hWrite; STARTUPINFO si; PROCESS_INFORMATION pi; WSADATA wsd; SOCKET s,s1; struct sockaddr_in addr; WSAPROTOCOL_INFO info; DWORD bytes; // 子プロセスの連絡用でパイプを生成 ZeroMemory(&sa, sizeof(sa));
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く