- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CreateEventについて)
CreateEventについての例外発生
このQ&Aのポイント
- 下記ソースでCreateEventを実行すると例外発生してしまいます。
- 例外内容は、保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
- PCに問題があるのか、ソースが間違っているのか確認したいです。環境はvb.netです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CreateEvent の Declare があやしい気がします。 Private Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (ByRef lpEventAttributes As SECURITY_ATTRIBUTES, ByVal ManualReset As Long, ByVal bInitialState As Long, ByVal lpName As String) As Long でやってみましたら、正常に実行できましたよ。
その他の回答 (1)
- tsukasa-12r
- ベストアンサー率65% (358/549)
回答No.2
>私はCreateEventの第一引数をByValで宣言していましたが、ネットで調べてもどれもByValだったと思います。 そうですかね? ↓の As SECURITY_ATTRIBUTES では BtVal も ByRef もなし(ByRefと同じ) になっていますね。 http://www.winapi-database.com/File/File/CreateFile.html >次にOpenEventでもうまくいかないのですが、それも宣言でしょうか。 OpenEvent の引数には構造体はないので、全て ByVal で問題ないのではないかと思いますが・・・。 CreateEvent と同様、例外が発生するのでしょうか? それとも、例外は発生しないが、戻り値が NULL になるのでしょうか?
質問者
お礼
戻り値がNULLでした。 宣言かなとよくよく見直すと、VB.netはintegerなんですねlongを使用していました。 integerで無事動作することができました。 とてもありがとうございます。
補足
確かに、上記のソースだとうまくいきました。 私はCreateEventの第一引数をByValで宣言していましたが、ネットで調べてもどれもByValだったと思います。でも正解はByRefなんですかね。。 次にOpenEventでもうまくいかないのですが、それも宣言でしょうか。 OpenEvent(ByVal, ByVal, ByVal) WaitForSingleObject(ByVal, ByVal) SetEvent(ByVal) 上記の引数の宣言をしていますが間違っていますでしょうか。 お時間があればよろしくお願いいたします。