質問: Susie Plugin(axzip.spi)でのメモリ出力
回答: knuth4kludgeさんへ 【要点】 WriteFile()には、データのポインタを渡さないといけないのに、 ローカルメモリオブジェクトハンドルを渡しているのでは? 【解析】 BOOL WriteFile( HANDLE hFile, // ファイルのハンドル LPCVOID lpBuffer, // データバッファ DWORD nNumberOfBytesToWrite, // 書き込み対象のバイト数 LPDWORD lpNumberOfBytesWritten, // 書き込んだバイト数 LPOVERLAPPED lpOverlapped // オーバーラップ構造体のバッファ ); のようにWriteFile APIは、第2引数にデータバッファのポインタを要求していますが、 記載されているプログラムでは、 HLOCAL buf; WriteFile(hFile, buf, fi->filesize, &writeSize, NULL); のようにローカルメモリオブジェクトハンドルが渡されています。 【対策】 ・ローカルメモリオブジェクトハンドルをLocalLock()を用いてポインタに変換。 ・取得したポインタを用いてWriteFileでデータをファイルに書き出し。 ・ロックしたローカルメモリをLocalUnlock()を用いてロック解除。 ※外してたらごめんなさい m(_ _)m