バイナリデータのワイルドカード検索(比較)を行いたいのですが・・・
以下のワイルドカード検索(文字列)にサイズを指定するなりして考えたのですが
うまくいきません。
バイナリデータのワイルドカード比較の方法を教えてください。

int StrMatch( unsigned char *ptn, unsigned char *str ) //0:不一致/1:一致
{
  switch( *ptn ){
    case '\0':/* NULL */
      return( '\0' == *str );
    case '*':/* 任意文字列 */
      return( StrMatch( ptn+1, str ) || (('\0' != *str) && StrMatch( ptn, str+1 ) ) );
    case '?':/* 任意1文字 */
      return( ('\0' != *str) && StrMatch( ptn+1, str+1 ) );
    default:/* その他 */
      return( ((unsigned char)*ptn==(unsigned char)*str) && StrMatch( ptn+1, str+1 ) );
  }
}