Win32 API 日本語リファレンス
ホームSystem.AddressBook › NEWMAIL_NOTIFICATION

NEWMAIL_NOTIFICATION

構造体
サイズx64: 56 バイト / x86: 28 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
cbEntryIDDWORD4+0+0lpEntryID が指す新着メッセージのエントリIDサイズ。
lpEntryIDENTRYID*8/4+8+4新着メッセージのエントリIDへのポインター。
cbParentIDDWORD4+16+8lpParentID が指す親フォルダーのエントリIDサイズ。
lpParentIDENTRYID*8/4+24+12新着メッセージが属する親フォルダーのエントリIDへのポインター。
ulFlagsDWORD4+32+16通知の文字幅などを示すフラグ。
lpszMessageClassCHAR*8/4+40+20メッセージクラスを表す文字列へのポインター。
ulMessageFlagsDWORD4+48+24メッセージのフラグ(既読/添付等)を示す値。

公式ドキュメント

適用対象: Outlook 2013 | Outlook 2016

新しいメッセージの到着に関連する情報を記述します。

プロパティ
ヘッダー ファイル:
Mapidefs.h
typedef struct _NEWMAIL_NOTIFICATION
{
  ULONG cbEntryID;
  LPENTRYID lpEntryID;
  ULONG cbParentID;
  LPENTRYID lpParentID;
  ULONG ulFlags;
  LPSTR lpszMessageClass;
  ULONG ulMessageFlags;
} NEWMAIL_NOTIFICATION;

解説(Remarks)

NEWMAIL_NOTIFICATION 構造体は、NOTIFICATION 構造体の info メンバーに含まれる構造体の共用体のメンバーの 1 つです。NOTIFICATION 構造体の info メンバーが NEWMAIL_NOTIFICATION 構造体を格納している場合、NOTIFICATION 構造体の ulEventType メンバーには fnevNewMail が設定されます。

MAPI は NEWMAIL_NOTIFICATION 構造体を、通知イベントに関する情報をアドバイズ シンクに保持する NOTIFICATION 構造体のメンバーとしてのみ使用します。

通知の詳細については、次の表に示すトピックを参照してください。

トピック 説明
Event Notification in MAPI
通知および通知イベントの概要です。
Handling Notifications
クライアントが通知をどのように処理すべきかについての説明です。
Supporting Event Notification
サービス プロバイダーが IMAPISupport メソッドを使用して通知を生成する方法についての説明です。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

各言語での定義

#include <windows.h>

// NEWMAIL_NOTIFICATION  (x64 56 / x86 28 バイト)
typedef struct NEWMAIL_NOTIFICATION {
    DWORD cbEntryID;
    ENTRYID* lpEntryID;
    DWORD cbParentID;
    ENTRYID* lpParentID;
    DWORD ulFlags;
    CHAR* lpszMessageClass;
    DWORD ulMessageFlags;
} NEWMAIL_NOTIFICATION;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NEWMAIL_NOTIFICATION
{
    public uint cbEntryID;
    public IntPtr lpEntryID;
    public uint cbParentID;
    public IntPtr lpParentID;
    public uint ulFlags;
    public IntPtr lpszMessageClass;
    public uint ulMessageFlags;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NEWMAIL_NOTIFICATION
    Public cbEntryID As UInteger
    Public lpEntryID As IntPtr
    Public cbParentID As UInteger
    Public lpParentID As IntPtr
    Public ulFlags As UInteger
    Public lpszMessageClass As IntPtr
    Public ulMessageFlags As UInteger
End Structure
import ctypes
from ctypes import wintypes

class NEWMAIL_NOTIFICATION(ctypes.Structure):
    _fields_ = [
        ("cbEntryID", wintypes.DWORD),
        ("lpEntryID", ctypes.c_void_p),
        ("cbParentID", wintypes.DWORD),
        ("lpParentID", ctypes.c_void_p),
        ("ulFlags", wintypes.DWORD),
        ("lpszMessageClass", ctypes.c_void_p),
        ("ulMessageFlags", wintypes.DWORD),
    ]
#[repr(C)]
pub struct NEWMAIL_NOTIFICATION {
    pub cbEntryID: u32,
    pub lpEntryID: *mut core::ffi::c_void,
    pub cbParentID: u32,
    pub lpParentID: *mut core::ffi::c_void,
    pub ulFlags: u32,
    pub lpszMessageClass: *mut core::ffi::c_void,
    pub ulMessageFlags: u32,
}
import "golang.org/x/sys/windows"

type NEWMAIL_NOTIFICATION struct {
	cbEntryID uint32
	lpEntryID uintptr
	cbParentID uint32
	lpParentID uintptr
	ulFlags uint32
	lpszMessageClass uintptr
	ulMessageFlags uint32
}
type
  NEWMAIL_NOTIFICATION = record
    cbEntryID: DWORD;
    lpEntryID: Pointer;
    cbParentID: DWORD;
    lpParentID: Pointer;
    ulFlags: DWORD;
    lpszMessageClass: Pointer;
    ulMessageFlags: DWORD;
  end;
const NEWMAIL_NOTIFICATION = extern struct {
    cbEntryID: u32,
    lpEntryID: ?*anyopaque,
    cbParentID: u32,
    lpParentID: ?*anyopaque,
    ulFlags: u32,
    lpszMessageClass: ?*anyopaque,
    ulMessageFlags: u32,
};
type
  NEWMAIL_NOTIFICATION {.bycopy.} = object
    cbEntryID: uint32
    lpEntryID: pointer
    cbParentID: uint32
    lpParentID: pointer
    ulFlags: uint32
    lpszMessageClass: pointer
    ulMessageFlags: uint32
struct NEWMAIL_NOTIFICATION
{
    uint cbEntryID;
    void* lpEntryID;
    uint cbParentID;
    void* lpParentID;
    uint ulFlags;
    void* lpszMessageClass;
    uint ulMessageFlags;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; NEWMAIL_NOTIFICATION サイズ: 28 バイト(x86)
dim st, 7    ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; cbEntryID : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; lpEntryID : ENTRYID* (+4, 4byte)  varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; cbParentID : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; lpParentID : ENTRYID* (+12, 4byte)  varptr(st)+12 を基点に操作(4byte:入れ子/配列)
; ulFlags : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; lpszMessageClass : CHAR* (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; ulMessageFlags : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NEWMAIL_NOTIFICATION サイズ: 56 バイト(x64)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; cbEntryID : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; lpEntryID : ENTRYID* (+8, 8byte)  varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; cbParentID : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; lpParentID : ENTRYID* (+24, 8byte)  varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; ulFlags : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; lpszMessageClass : CHAR* (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ulMessageFlags : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global NEWMAIL_NOTIFICATION
    #field int cbEntryID
    #field intptr lpEntryID
    #field int cbParentID
    #field intptr lpParentID
    #field int ulFlags
    #field intptr lpszMessageClass
    #field int ulMessageFlags
#endstruct

stdim st, NEWMAIL_NOTIFICATION        ; NSTRUCT 変数を確保
st->cbEntryID = 100
mes "cbEntryID=" + st->cbEntryID