原因判明

原因が判明致しました
GlobalAllocする際のサイズをリクエスト内容の文字数で取っていました
バイト数に変更するときちんと返すようになりました
…恥ずかしい話です
所長さん、お手数をおかけしました

で、ちょっとそのプログラムを載せてみます

!変数宣言は必要
#uFlagsに指定する定数
!GMEM_FIXED = 0;
!GMEM_MOVEABLE = 2;#使わない
!GMEM_ZEROPOINT = $40;
!GPTR = GMEM_FIXED||GMEM_ZEROPOINT
!GHND = GMEM_MOVEABLE||GMEM_ZEROPOINT#使わない
#Global〜系関数
●GlobalAlloc(uFlags,dwBytes) =DLL("kernel32.dll",
"LONG GlobalAlloc(
LONG uFlags, //定数
LONG dwBytes //バイト数
)")
●GlobalFree(hMem) =DLL("kernel32.dll",
"LONG GlobalFree(
LONG hMem
)")
●MoveMemory({参照渡し}des,{参照渡し}src,len) =DLL("kernel32.dll",
"VOID RtlMoveMemory(
POINTER Destination, //移動先
POINTER Source, //移動元
DWORD Length //バイト数
)")

●load(h,en)=DLL("aya5.dll",
"BOOL load(
DWORD h,
LONG len
)")
●unload()=DLL("aya5.dll",
"BOOL unload(
)")
●request(h,{参照渡し}len)=DLL("aya5.dll",
"HGLOBAL request(
HGLOBAL h,
INT len
)")

栞ロード
「GET SHIORI/3.0
ID: version
Charset: Shift_JIS
SecurityLevel: local
Sender: Nobady{~}{~}」で栞リクエス
表示
栞アンロード


●栞ロード
  リクエストとは文字列
  リクエスト数とは整数
  メモリとは整数
  リクエストはランタイムパス
  リクエスト数はバイト数(リクエスト)
  エラー監視
   メモリはGlobalAlloc(GPTR,リクエスト数+1)
   ASSERT(メモリ)
   MoveMemory(メモリ,POINTER(リクエスト),リクエスト数+2)
   ASSERT(load(メモリ,リクエスト数))
  エラーならば
   エラーメッセージと言う
   それは0

●栞アンロード
  エラー監視
   ASSERT(unload())
  エラーならば
   エラーメッセージと言う
   それは0

●栞リクエスト({文字列}Sの|Sで)
  メモリとは変数
  リクエスト数とは整数
  メモリとは変数
  エラー監視
   リクエスト数はバイト数(S)
   メモリはGlobalAlloc(GPTR,リクエスト数+1)
   MoveMemory(メモリ,POINTER(S),リクエスト数)
   メモリはrequest(メモリ,POINTER(リクエスト数))
   ASSERT(メモリ)
   Sにリクエスト数を確保
   MoveMemory(POINTER(S),メモリ,リクエスト数)
   GlobalFree(メモリ)
   それはS
  エラーならば
   GlobalFree(メモリ)
   エラーメッセージと言う
   それは「」

リクエスト内容を変えればさおりも動かせるはずです