c#個人署名をメモリに読み込む


//<summary>
         //<newpara> : </newpara>
         //</summary>
         //<param name="vMarkName"></param>
         //<param name="vPassWord"></param>
         //<returns></returns>
        private byte[] LoadMarkImage(string szSql)
        {
            //bool mResult = false;
            byte[] m_bytFileBody = null;
            System.IO.MemoryStream oStream = null;
            System.IO.BinaryWriter oWriter = null;
            try
            {
                //string szSelectCmd = "SELECT c.MarkBody FROM OA_ESignature c where c.CO='XF01' and c.UserId='" + userid + "'";
                //if (m_oDbHelper == null)
                //{
                //    m_oDbHelper = new DbHelper();
                //}
                //m_oDbHelper.OpenDbResource();
                 
                DbCommand mCommand = m_oDbHelper.CreateDbCommand();
                mCommand.CommandType = CommandType.Text;
                mCommand.CommandText = szSql;
                IDataReader oReader = mCommand.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);
               // LogCentral.CurrentLogger.LogInfo();
                if (oReader.Read())
                {
                    if (!oReader.IsDBNull(0))
                    {
                        int bufferSize = 500;                         // Size of the BLOB buffer.
                        byte[] outbyte = new byte[bufferSize];        // The BLOB byte[] buffer to be filled by GetBytes.
                        long retval;                                  // The bytes returned from GetBytes.
                        long startIndex = 0;                          // The starting position in the BLOB output.
                        // Get ACL By BLOB ColumnType
                        oStream = new System.IO.MemoryStream();
                        oWriter = new System.IO.BinaryWriter(oStream, System.Text.Encoding.UTF8);
                        startIndex = 0;
                        retval = oReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); //ItemACL
                        // Continue reading and writing while there are bytes beyond the size of the buffer.
                        while (retval == bufferSize)
                        {
                            oWriter.Write(outbyte);
                            oWriter.Flush();
                            startIndex += bufferSize;
                            retval = oReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); //ItemACL
                        }
                        // Write the remaining buffer.
                        oWriter.Write(outbyte, 0, (int)retval);
                    }
                    //m_szFileType = oReader.GetString(1).ToString();
                   // mResult = true;
                }
                //else
                //{
                //    mResult = false;
                //}
                oReader.Close();
                oReader = null;
                m_bytFileBody = oStream.GetBuffer();
                //LogCentral.CurrentLogger.LogInfo("m_bytFileBody:" + m_bytFileBody.ToString());
                LogCentral.CurrentLogger.LogInfo("m_bytFileBody:" + m_bytFileBody.Length);
            }
            catch (Exception e)
            {
                LogCentral.CurrentLogger.LogInfo(e.ToString());
                //mResult = false;
            }
            finally
            {
                //m_oDbHelper.CloseDbResource();
                try
                {
                    if (oWriter != null)
                    {
                        oWriter.Flush();
                        oWriter.Close();
                    }
                }
                catch { }
                try
                {
                    if (oStream != null)
                        oStream.Close();
                }
                catch { }
            }
            return m_bytFileBody;
        }