MIDIシステムエクスクルーシブまたはストリームバッファを識別するために使われるヘッダを定義します。
typedef struct midihdr_tag {
    LPSTR   lpData;                  // MIDIデータアドレス
    DWORD   dwBufferLength;          // バッファサイズ
    DWORD   dwBytesRecorded;         // 実際のデータサイズ
    DWORD_PTR dwUser;                // カスタムユーザデータ
    DWORD   dwFlags;                 // フラグ
    struct midihdr_tag FAR *lpNext;  // 予約(NULL)
    DWORD_PTR reserved;              // 予約(0)
    DWORD   dwOffset;                // バッファのオフセット
    DWORD_PTR dwReserved[8];         // 予約
} MIDIHDR, *PMIDIHDR, NEAR *NPMIDIHDR, FAR *LPMIDIHDR;
MIDI データを格納したバッファのアドレスが格納されます。
データバッファのサイズが格納されます。
バッファ中の実際のデータサイズが格納されます。 dwBufferLength メンバで指定された値以下でなければなりません。
カスタムユーザーデータが格納されます
バッファに関する情報のフラグが格納されます。以下の値の組み合わせになります。
| 値 | 意味 | 
|---|---|
| 0x00000001 (MHDR_DONE) | バッファが必要でなくなり、アプリケーションに返されていることを示します。このフラグはデバイスドライバによってセットされます。  | 
 
| 0x00000002 (MHDR_PREPARED) | midiInPrepareHeader 関数または midiOutPrepareHeader 関数の呼び出しによってバッファが準備されたことを示します。このフラグは Windows によってセットされます。  | 
 
| 0x00000004 (MHDR_INQUEUE) | バッファは再生のためにキューに入れられていることを示します。このフラグは Windows によってセットされます。  | 
 
| 0x00000008 (MHDR_ISSTRM) | バッファがストリームバッファであることを示します。  | 
 
予約されています。使用してはいけません。
予約されています。使用してはいけません。
コールバック処理時のバッファのオフセットが格納されます。このコールバックは MIDIEVENT 構造体の dwEvent メンバに MEVT_F_CALLBACK フラグが設定されることによって発生します。このオフセットは、どのイベントがコールバックを発生させたのかをアプリケーションが決定できるようにします。
予約されています。使用してはいけません。
Windows 95 以降 / Windows NT 3.1 以降
| HSP 変数 | メンバ | ||
|---|---|---|---|
| メンバ名 | オフセット | サイズ | |
| midihdr.0 | lpData | 0 | 4 | 
| midihdr.1 | dwBufferLength | 4 | 4 | 
| midihdr.2 | dwBytesRecorded | 8 | 4 | 
| midihdr.3 | dwUser | 12 | 4 | 
| midihdr.4 | dwFlags | 16 | 4 | 
| midihdr.5 | lpNext | 20 | 4 | 
| midihdr.6 | reserved | 24 | 4 | 
| midihdr.7 | dwOffset | 28 | 4 | 
| midihdr.8 | dwReserved[0] | 32 | 4 | 
| … | … | … | … | 
| midihdr.15 | dwReserved[7] | 60 | 4 |