編譯器錯誤

MIDL 編譯期間會產生下列錯誤訊息:

傳回碼 描述
MIDL2000
必須為抽象宣告子指定 /c_ext
抽象宣告子代表 RPC 的 Microsoft 延伸模組,而且未定義于 DCE RPC 中。 因此,如果您的檔案包含抽象宣告子,則您無法使用 /osf 參數進行編譯,這會強制執行嚴格的 DCE 相容性。 MIDL 3.0 版和更新版本使用 /c_ext 參數作為預設值; /osf 參數會關閉 /c_ext 參數 。 如需抽象宣告子的詳細資訊,請參閱 ACF 主體
MIDL2001
資料的具現化不合法;您必須使用 「extern」 或 「static」
IDL 檔案中的宣告和初始化與 DCE RPC 不相容。 這項功能是當您在 DCE 相容性 (/osf) 模式中編譯時無法使用的 Microsoft 擴充功能。
MIDL2002
編譯器堆疊溢位
編譯器在處理 IDL 檔案時已用盡堆疊空間。 當編譯器正在處理複雜宣告或運算式時,就會發生此問題。 若要解決此問題,請簡化複雜宣告或運算式。
MIDL2003
定義
此錯誤訊息可能會出現在下列情況下:已重新定義類型;已重新定義程式原型;相同名稱之結構或等位的成員已經存在;原型中已經存在相同名稱的參數。
MIDL2004
[auto_handle] 系結將會使用
未將控制碼類型定義為預設控制碼類型。 編譯器假設自動控制碼將做為指定程式的系結控制碼。
MIDL2005
記憶體不足
編譯器在編譯期間記憶體不足。 減少 IDL 檔案的大小或複雜度,或配置更多記憶體給進程。
MIDL2006
遞迴定義
已以遞迴方式定義結構或等位。 遺漏巢狀結構定義中的指標規格時,就會發生此錯誤。
MIDL2007
匯入忽略;檔案已匯入
匯入 IDL 檔案是等冪運算。 包含一次以上沒有任何作用。 除了第一個匯入作業,也會忽略所有作業。
MIDL2008
疏鬆列舉需要 /c_ext 或 /ms_ext
將值指派給列舉常數與 DCE RPC 不相容。 如果您想要使用允許將值指派給列舉常數的 MIDL 的 Microsoft 延伸模組,則無法使用 /osf 參數進行編譯,這會強制執行嚴格的 DCE 相容性。 MIDL 3.0 版和更新版本使用 /c_ext/ms_ext 參數作為預設值; /osf 參數會關閉這些擴充功能參數。
MIDL2009
未定義的符號
運算式中已使用未定義的符號。 當您使用未定義的列舉值時,可能會發生此錯誤。
MIDL2010
在 IDL 檔案中未定義 ACF 檔案中使用的類型
正在使用未定義的型別。
MIDL2011
無法解析的類型宣告
IDL 檔案中其他位置未定義其他錯誤資訊欄位中所報告的類型。
MIDL2012
使用寬字元常數需要 /ms_ext 或 /c_ext
寬字元常數是 DCE IDL 的 Microsoft 擴充功能。 若要使用資料類型 wchar_t,您無法使用 /osf 參數進行編譯,這會覆寫 MIDL 編譯器預設參數 /ms_ext/c_ext
MIDL2013
使用寬字元字串需要 /ms_ext 或 /c_ext
寬字元字串常數是 DCE IDL 的 Microsoft 延伸模組。 若要使用資料類型 wchar_t,您無法使用 /osf 參數進行編譯,這會覆寫 MIDL 編譯器預設參數 /ms_ext/c_ext
MIDL2014
類型不一致的重新定義wchar_t
類型 wchar_t 已重新定義為不等於不帶正負號簡短 DOS *的類型。
MIDL2015
找不到 importlib
編譯器找不到 [ importlib] 指示詞所指定的類型程式庫。 請檢查以確定程式庫的路徑和名稱正確無誤。
MIDL2016
兩個程式庫區塊
即使相同原始程式檔中具有不同名稱) ,兩個程式庫區塊 (也是不合法的。 將所有元素合併成單一程式庫區塊。
MIDL2017
dispinterface 語句需要 IDispatch 的定義
當檔案 Stdole2.tlb 或 Oaidl.idl 未匯入時,通常會發生此錯誤。
MIDL2018
存取類型程式庫時發生錯誤
編譯器找不到指定的類型程式庫。 請檢查以確定您已正確指定路徑。
MIDL2019
存取類型資訊時發生錯誤
匯入的型別程式庫已損毀、無效或只部分建構。
MIDL2020
產生類型程式庫時發生錯誤
無法產生類型程式庫。 此錯誤的其中一個可能原因是指定 IDL 檔案的路徑超過 126 個字元。 Oleaut32.dll 不支援超過 126 個字元的路徑名稱。
MIDL2021
重複識別碼
應用程式會使用 IDL 檔案中的 id 語句來指定成員函式的 DISPID。 成員函式可以是介面或散發介面的屬性或方法。 此錯誤表示 IDL 檔案會針對兩個方法或屬性指定相同的識別碼編號。
MIDL2022
專案屬性的不合法或遺漏值
輸入屬性的引數可以是指定具名進入點的字串,或是定義進入點的序數。 此引數遺失或包含不正確值。
MIDL2023
錯誤復原假設
MIDL 編譯器在 IDL 檔案中找到不合法的字元。
MIDL2024
錯誤復原捨棄
MIDL 編譯器在 IDL 檔案中找到不合法的字元。 它會忽略不合法的字元。
MIDL2025
語法錯誤
編譯器在指定的行偵測到語法錯誤。
MIDL2026
無法從先前的語法錯誤中復原;中止編譯
MIDL 編譯器會藉由新增或移除語法元素,自動嘗試從語法錯誤中復原。 此訊息表示儘管嘗試復原,編譯器偵測到太多錯誤。 更正指定的錯誤 (s) 並重新編譯。
MIDL2027
未知的 pragma 選項
MIDL 不支援指定的 C pragma。 從 IDL 檔案中移除 pragma。
MIDL2028
未實作功能
MIDL 功能雖然是語言定義的一部分,但並未在 Microsoft RPC 中實作,但 MIDL 編譯器不支援此功能。 例如,未實作下列語言功能:bitset、pipe 和國際字元類型。 未實作的語言功能會出現在錯誤訊息的其他錯誤資訊欄位中。
MIDL2029
類型未實作
雖然在 Microsoft RPC 中未實作合法的 MIDL 關鍵字,但指定的資料類型。
MIDL2030
取值作業中使用的非指標
不是指標的資料類型已與指標作業相關聯。 您無法透過指定的非指標存取物件。
MIDL2031
運算式的除數為零
常數運算式包含除以零。
MIDL2032
運算式使用不相容的類型
運算式中運算子的左邊和右邊是不相容的類型。
MIDL2033
nonarray 運算式使用索引運算子
運算式會在不是陣列類型的資料項目上使用陣列索引作業。
MIDL2034
運算式的左側不會評估為結構/等位/列舉
直接或間接參考運算子 「.」 或 「->」 已套用至不是結構、等位或列舉的資料物件。 您無法使用指定的 物件取得直接或間接參考。
MIDL2035
必須是常數運算式
語法中預期會有常數運算式。 例如,陣列界限需要常數運算式。 當陣列系結是以變數或未定義的符號定義時,編譯器會發出此錯誤訊息。
MIDL2036
無法在編譯時期評估運算式
編譯器無法在編譯時期評估運算式。
MIDL2037
未實作運算式
在 Microsoft RPC 提供的編譯器版本中,不支援舊版 MIDL 編譯器所支援的功能。 移除指定的運算式。
MIDL2038
未指定 [pointer_default] 屬性,假設所有未指定指標的 [unique]
MIDL 編譯器針對沒有指標屬性的指標提供三種不同的預設案例。 最上層指標的函式參數預設為 [ref] 指標。 結構內嵌的指標和其他指標的指標, (不是最上層指標,) 預設為 [pointer_default] 屬性所指定的類型。 未提供 [pointer_default] 屬性時,這些非頂端層級指標預設為唯一指標。 此錯誤訊息指出最後一個案例:未提供 [pointer_default] 屬性,而且至少有一個將視為唯一指標的非最上層指標。 如需詳細資訊,請參閱 預設指標類型
MIDL2039
介面不是自動化封送處理一致性
介面不符合 OLE Automation 介面的需求。 請檢查以確定介面衍生自 IUnknownIDispatch
MIDL2040
[out] 只有參數不能是開啟結構的指標
[out]-only 參數已當做結構指標使用,稱為開放式結構,其傳輸範圍和大小是在執行時間決定。 伺服器存根不知道要配置給開啟結構的空間量。 使用開啟結構的指標指標,並確定伺服器應用程式佈建足夠的空間給它。
MIDL2041
[out] 只有參數不能是未化的字串
具有字串屬性的陣列已宣告為 [out]-only 參數,不含任何大小規格。 伺服器存根需要大小資訊,才能配置字串的記憶體。 您可以移除字串屬性並新增 [size_is] 屬性,也可以將參數變更為 [in, out] 參數。
MIDL2042
[out] 參數不是指標
所有 [out] 參數都必須是指標,以符合 C 程式設計語言的逐值呼叫慣例。 [out] 方向參數表示伺服器會將值傳送至用戶端。 使用逐值呼叫慣例,伺服器只有在函式引數是指標時,才能將資料傳送至用戶端。
MIDL2043
open 結構不能是參數
開放式結構包含一個一致性陣列做為最後一個專案。 當該結構或等位的最後一個專案是一致陣列時,就會截斷結構或等位。
MIDL2044
[out] 內容控制碼/泛型控制碼必須指定為該控制碼類型的指標
具有 [out] 方向屬性的內容控制碼或使用者定義控制碼參數必須是指標的指標。
MIDL2045
內容控制碼不得衍生自具有 [transmit_as] 屬性的類型
內容控制碼必須傳輸為內容控制碼類型。 它們無法以其他類型的形式傳輸,而且無法衍生自 [transmit_is]、[represent_as]、[wire_marshal]或 [user_marshal]。
MIDL2046
無法指定遠端程式的引數數目可變
在編譯時期指定可變引數數目的遠端程序呼叫,與 DCE RPC 定義不相容。 您無法在 Microsoft RPC 中使用可變數目的引數。
MIDL2047
具名參數不能是 「void」
具有基底類型 void 的參數會以名稱指定。
MIDL2048
參數衍生自 「coclass」 或 「module」
coclass會指定包含介面和散發介面的最上層物件。 它無法當做參數傳遞。
MIDL2049
只有第一個參數可以是系結控制碼;您必須指定 /ms_ext 參數
DCE RPC 只允許第一個參數成為系結控制碼。 使用 /osf 參數編譯會關閉支援多個控制碼參數的預設 /ms_ext 參數,並在最左邊的位置處理參數。
MIDL2050
無法在參數和傳回型別上使用 [comm_status]
程式及其其中一個參數都有 [comm_status] 屬性。 [comm_status] 屬性指定一次只能有一個資料 物件error_status_t類型
MIDL2051
程式上的 [local] 屬性需要 /ms_ext
[local] 屬性是 DCE IDL 的 Microsoft 延伸模組。 若要在函式上使用這個屬性,您無法使用 /osf 參數進行編譯。 /osf參數會覆寫 MIDL 編譯器預設參數/ms_ext/c_ext
MIDL2052
屬性屬性只能與程式搭配使用
不當使用 [propget]、[propput]或 [propputref] 屬性。 請檢查以確定您已正確拼字屬性的函式名稱,而且屬性和函式的名稱相同。
MIDL2053
程式可能沒有多個屬性屬性
最多隻能指定函式的其中一個 [propget]、[propput]或 [propputref] 屬性。
MIDL2054
程式具有不合法的作業屬性組合
某些屬性無法與其他屬性連接。 請檢查 MIDL 語言參考,以瞭解此程式中所用屬性的確切需求和語法。
MIDL2055
衍生自一致性陣列的欄位必須是 結構的最後一個成員
結構包含一個不符合結構中最後一個專案的一致性陣列。 一致性陣列必須顯示為最後一個結構專案。
MIDL2056
重複 [case] 標籤
已指定重複的案例標籤。 重複的標籤隨即顯示。
MIDL2057
沒有指定區分等位的 [default] 大小寫
已指定不具預設案例的區分等位。
MIDL2058
無法解析屬性運算式
無法解析與 屬性相關聯的運算式。 當運算式中顯示的變數未定義時,通常會發生此錯誤。 例如,當變數 定義且由屬性 [size_is] 使用時,可能會發生錯誤。
MIDL2059
屬性運算式必須是整數類型,不支援 64 位運算式
指定的屬性變數或運算式必須是整數類型。 當屬性運算式類型無法解析為整數時,就會發生此錯誤。
MIDL2060
[byte_count] 需要 /ms_ext
[byte_count] 屬性是 DCE IDL 的 Microsoft 延伸模組。 若要使用這個屬性,您無法使用 /osf 參數進行編譯,這會覆寫 MIDL 編譯器預設參數 /ms_ext/c_ext
MIDL2061
[byte_count] 只能套用至指標類型的 out 參數
[byte_count] 屬性只能套用至 [out] 參數,而所有 [out] 參數都必須是指標類型。
MIDL2062
[byte_count] 不能在一致性陣列或結構的指標上指定
[byte_count] 屬性無法套用至一致陣列或結構。
MIDL2063
只指定位元組計數的參數不是 [in] ,或位元組計數參數不是 [out]
與 [byte_count] 相關聯的值必須從用戶端傳輸到伺服器;它必須是 [in] 參數。 [byte_count] 參數不需要是 [in, out] 參數。
MIDL2064
指定位元組計數的參數不是整數類型
與位元組計數相關聯的值必須是整數類型 intsmallshortlong
MIDL2065
[byte_count] 無法在具有 size 屬性的參數上指定
[byte_count] 屬性不能與其他大小屬性搭配使用,例如 [size_is] 或 [length_is]。
MIDL2066
[case] 運算式不是常數
為案例標籤指定的運算式不是常數。
MIDL2067
[case] 運算式不是整數類型
為大小寫標籤指定的運算式不是整數類型。
MIDL2068
在 void * 以外的類型上指定 [coNtext_handle] 需要 /ms_ext
對於 DCE-RPC 相容性,內容控制碼必須是 void 類型 *的指標。 如果您希望內容控制碼與 void *以外的類型相關聯,請勿使用 MIDL 編譯器參數 /osf,這會覆寫 MIDL 編譯器預設參數 /ms_ext
MIDL2069
無法使用每個comm_status/fault_status指定多個參數
程式只能有一個具有 [comm_status] 屬性的參數。 它最多可以有一個具有 [fault_status] 屬性的參數。
MIDL2070
comm_status/fault_status參數必須是 [out] 唯一的指標參數
錯誤碼類型 [comm_status] 和 [fault_status] 會從伺服器傳輸到用戶端,因此必須指定為 [out] 參數。 由於 C 程式設計語言中的條件約束,所有 [out] 參數都必須是指標。
MIDL2071
端點語法錯誤
端點語法不正確。
MIDL2072
inapplicable 屬性
這個建構中無法套用指定的屬性。 例如,字串屬性會套用至 char 陣列或 char 指標,而且無法套用至包含兩個 簡短 整數的結構:
typedef [string] struct moo 
{
    short x;
    short y;
};
MIDL2073
[allocate] 需要 /ms_ext
配置屬性代表未定義為 DCE RPC 一部分的 Microsoft 延伸模組。 若要使用這個屬性,您無法使用 /osf 參數進行編譯,這會覆寫 MIDL 編譯器預設參數 /ms_ext
MIDL2074
無效 [配置] 模式
已指定 [allocate] 屬性建構的無效模式。 這四個有效模式single_node、all_nodes、on_null和一律。
MIDL2075
無法使用字串屬性來套用 length 屬性
使用字串屬性時,產生的存根檔案會呼叫 strlen 函式來判斷字串長度。 請勿將 length 屬性和字串屬性用於相同的變數。
MIDL2076
無法同時指定 [last_is] 和 [length_is]
已針對相同的陣列指定 [last_is] 和 [length_is]。 這些屬性相關,如下所示:length = last first + 1。 因為每個值都可以衍生自另一個值,所以請勿同時指定這兩個值。
MIDL2077
無法同時指定 [max_is] 和 [size_is]
已針對相同的陣列指定 [ max_is] 和 [ size_is]。 這些屬性相關,如下所示:max = size + 1。 因為每個值都可以衍生自另一個值,所以請勿同時指定這兩個值。
MIDL2078
使用等位時未指定 [switch_is] 屬性
未針對等位指定任何辨別。 [switch_is] 屬性工作表示用來在等位欄位中選取的辨別。
MIDL2079
未指定 [uuid]
介面未指定 UUID。
MIDL2080
[local] 介面上忽略 [uuid]
在物件介面上使用 [local] 屬性會導致 MIDL 編譯器忽略 [uuid] 屬性。 您無法在 RPC 介面上使用這兩個屬性。
MIDL2081
長度和大小屬性運算式之間的類型不符
長度和大小屬性運算式的類型必須相同。 例如,當 [size_is] 運算式的屬性變數的類型 為 unsigned long ,且 [length_is] 運算式的屬性變數的類型為 long時,就會發出這個警告。
MIDL2082
[string] 屬性必須指定 「byte」、「char」 或 「wchar_t」 陣列或指標
字串屬性無法套用至基底類型不是 位元組char結構 之指標或陣列,其中成員都是 位元組char 類型。
MIDL2083
[switch_is] 運算式的類型與等位的參數類型不符
如果未指定聯集 [switch_type],參數類型與 [switch_is] 欄位的類型相同。
MIDL2084
[transmit_as] 不得套用至衍生自內容控制碼的類型
內容控制碼無法當做其他類型傳輸。
MIDL2085
[transmit_as] 必須指定可允許的類型
指定的 [transmit_as] 類型衍生自 Microsoft RPC 無法傳輸的類型,例如 voidvoid *int。使用定義的 RPC 基底類型;在 int的情況下,新增 大小規範,例如 small、 shortlong ,以限定 int
MIDL2086
[transmit_as] 和 [represent_as] 的傳輸類型不得為指標或衍生自指標
傳輸的類型不能是指標或衍生自指標。
MIDL2087
呈現類型 [transmit_as] 和 [represent_as] 不得衍生自一致性/不同陣列、其指標對等專案或一致性/不同結構
套用 [transmit_as] 的類型無法衍生自一致性陣列或結構, (在執行時間決定大小的陣列或結構) 。
MIDL2088
[uuid] 格式不正確
UUID 格式不符合規格。 UUID 必須是包含長度為 8、4、4、4、4 和 12 位數之五個十六進位數位序列的字串。 「12345678-1234-ABCD-EF01-28A49C28F17D」 是有效的 UUID。 使用函式 UuidCreate 或公用程式來產生有效的 UUID。
MIDL2089
uuid 不是十六進位數位
為 介面指定的 UUID 包含十六進位數位表示中不正確字元。 字元 0 到 9 和 A 到 F 在十六進位表示中有效。
MIDL2090
選擇性參數必須位於必要參數之後
如需參數清單排序的描述,請參閱 MIDL 語言參考中的 [選擇性]。
MIDL2091
使用 [entry] 時需要 [dllname]
如果您要在 DLL 中指定進入點,您也必須使用 [dllname] 屬性來指定該 DLL 的名稱。
MIDL2092
[bindable] 沒有 [propget]、[propput]或 [propputref] 無效
[bindable] 屬性只在屬性上有效,因此您也必須指定其中一個屬性存取或屬性設定函式。
MIDL2093
具有 [propput] 或 [propputref] 的程式必須至少有一個參數
[propput] 或 [ propputref] 程式必須至少有一個 [in] 參數,且屬性必須設定;[propget] 程式至少必須有 [outretval] 參數,才能接收屬性或參考。
MIDL2094
需要 [id] 屬性
這個成員函式因為所使用的 dispinterface 語法而需要 DISPID,而您使用 [ id] 屬性指定。 當您使用屬性和方法指定 dispinterface 時,您必須為每個屬性和方法指定 DISPID。
MIDL2095
在 ACF 中指定的介面名稱與 IDL 檔案中指定的介面名稱不符
在目前的編譯器模式中,ACF 中介面關鍵字後面的名稱必須與 IDL 檔案中介面關鍵字後面的名稱相同。 當您使用 MIDL 編譯器參數 /acf進行編譯時,IDL 和 ACF 檔案中的介面名稱可能會不同。
MIDL2096
重複的屬性
已指定重複或衝突的屬性。 當兩個屬性互斥時,通常會發生此錯誤。 例如,屬性 [code] 和 [nocode] 無法同時使用。
MIDL2097
具有 [comm_status] 或 [fault_status] 屬性的參數必須是類型error_status_t的指標
當 [fault_status] 或 [comm_status] 當做參數屬性使用時,參數必須是類型為 error_status_t的 [out] 參數。 如果發生伺服器錯誤,參數會設定為錯誤碼。 成功完成遠端呼叫時,程式會設定 值。
MIDL2098
無法在 ACF 檔案中指定 [local] 程式
已在 ACF 中指定本機程式。 本機程式只能在 IDL 檔案中指定。
MIDL2099
指定的類型未定義為控制碼
在 [implicit_handle] 屬性中指定的類型未定義為控制碼類型。 變更屬性所指定的類型定義或類型名稱。
MIDL2100
程式未定義
屬性已套用至 ACF 中的程式,而且該程式未定義于 IDL 檔案中。
MIDL2101
這個參數不存在於 IDL 檔案中
ACF 中指定的參數不存在於 IDL 檔案的定義中。 ACF 中顯示的所有參數、函式和類型定義都必須對應至 IDL 檔案中先前定義的參數、函式和類型。
MIDL2102
不支援此陣列界限建構
MIDL 目前支援以 Array[Lower .. 格式表示陣列的上限和下限。 只有在指定陣列下限的常數解析為值零時,才會上層。
MIDL2103
陣列系結規格不合法
固定大小陣列的陣列界限使用者規格不合法。 例如:
typedef short Array[-1]
MIDL2104
不支援一致性陣列或包含一致性陣列的陣列指標
不符合規範的陣列使用方式。 如需控管一致性陣列的規則,請參閱 陣列和 RPC
MIDL2105
pointee/array 不會衍生任何大小
已指定一個符合規範的陣列,但未指定任何大小規格。 您可以使用 [max_is] 或 [size_is] 屬性來指定大小。
MIDL2106
只有固定陣列和 SAFEARRAY 在型別程式庫中是合法的
您已在無法用於型別程式庫的 library 語句內使用陣列類型。
MIDL2107
SAFEARRAY 只在程式庫區塊內合法
MIDL 編譯器無法將 SAFEARRAY 辨識為有效的資料類型,但產生型別程式庫時除外。
MIDL2108
格式錯誤的字元常數
字元常數中不允許行尾字元。
MIDL2109
批註中找到的檔案結尾
批註中遇到檔案結尾字元。
MIDL2110
字串中找到的檔案結尾
字串中遇到檔案結尾字元。
MIDL2111
識別碼長度超過 31 個字元
識別碼限制為 31 個英數位元。 識別碼名稱超過 31 個字元會被截斷。
MIDL2112
字串中找到的行尾
字串中遇到行尾字元。 確認您已包含終止字串的雙引號字元。
MIDL2113
字串常數超過 255 個字元的限制
字串超過允許的最大長度 255 個字元。
MIDL2114
識別碼超過 255 個字元的限制,且已截斷
識別碼超過允許的最大長度 255 個字元。 識別碼中的過多字元會被截斷。
MIDL2115
常數太大
常數太大而無法在內部表示。
MIDL2116
數值剖析錯誤
編譯器無法剖析數值識別碼。
MIDL2117
開啟檔案時發生錯誤
作業系統在嘗試開啟輸出檔案時回報錯誤。 此錯誤可能是由太長給檔案系統的名稱或重複的檔案名所造成。
MIDL2118
錯誤系結至函式
MIDL2119
初始化 OLE 時發生錯誤
MIDL2120
載入程式庫時發生錯誤
MIDL2121
[out] 唯一參數不得衍生自最上層 [unique] 或 [ptr] 指標/陣列
唯一指標不可以是 [out]-only 參數。 根據定義,唯一指標可以從 Null 變更為非Null。 [out]-only 參數的資訊不會從用戶端傳遞至伺服器。
MIDL2122
屬性不適用於這個不可 rpcable 等位
只有 [switch_is] 和 [switch_type] 屬性會套用至遠端程序呼叫一部分傳輸的聯集。
MIDL2123
用於 size 屬性的運算式不得衍生自 [out]-only 參數
[out]-only 參數的值不會傳輸至伺服器,而且無法用來判斷 [in] 參數的長度或大小。
MIDL2124
用於 [in] 參數長度屬性的運算式無法衍生自 [out]-only 參數
[out]-only 參數的值不會傳輸至伺服器,而且無法用來判斷 [in] 參數的長度或大小。
MIDL2125
使用 「int」 需要 /c_ext
MIDL 是強型別語言。 透過網路傳輸的所有參數都必須衍生自其中一個 MIDL 基底類型。 類型 int 未定義為 MIDL 的一部分。 傳輸的資料必須包含大小規範: 。 未透過網路傳輸的資料可以包含在介面中;使用 /c_ext 參數。
MIDL2126
結構/等位欄位不得為 「void」
結構或等位中的欄位必須宣告為 MIDL 所支援的特定基底類型,或衍生自基底類型的類型。 遠端作業中不允許 Void 類型。
MIDL2127
array 元素不得為 void
陣列元素不能是 void。
MIDL2128
使用型別限定詞和/或修飾詞需要 /c_ext
只有在您指定/c_ext參數時,才能編譯_cdecl_far等類型修飾詞。
MIDL2129
結構/等位欄位不得衍生自函式
結構或等位的欄位必須是衍生自這些基底類型的 MIDL 基底類型或類型。 函式在結構或等位欄位中不是合法的。
MIDL2130
array 元素不得為函式
陣列專案不能是函式。
MIDL2131
參數不得為函式
遠端程式的參數必須是指定型別的變數。 函式不能是遠端程式的參數。
MIDL2132
具有位欄位的結構/等位欄位需要 /c_ext
您必須指定 MIDL 編譯器參數 /c_ext ,以允許未在遠端程序呼叫中傳輸之結構中的位欄位。
MIDL2133
「int」 類型上的位欄位規格是與 ANSI 相容的擴充功能
ANSI C 程式設計語言規格不允許將位欄位套用至非整數類型。
MIDL2134
位欄位規格只能套用至簡單整數類型
ANSI C 程式設計語言規格不允許將位欄位套用至非整數類型。
MIDL2135
結構/等位欄位不得衍生自handle_t或內容控制碼
內容控制碼無法做為另一個結構的一部分傳輸。 它們必須以內容控制碼的形式傳輸。
MIDL2136
array 元素不得衍生自handle_t或內容控制碼
內容控制碼無法當做陣列的一部分傳輸。
MIDL2137
此聯集規格需要 /c_ext
介面定義中顯示的聯集必須與辨別關聯,或宣告為本機。 當您使用 /c_ext 交換器,這是 MIDL 預設值時,不會透過網路傳輸的資料可以隱含宣告為本機。 您無法使用 /osf 參數編譯此 IDL。
MIDL2138
衍生自 「int」 的參數必須具有大小規範 「small」、「short」 或 「long」 與 「int」
類型 int 只是 32 位平臺上的有效 MIDL 類型,16 位系統上 int 必須隨附大小規格。 使用其中一個 大小規範小
MIDL2139
參數的類型無法衍生自 void 或 void*
MIDL 是強型別語言。 透過網路傳輸的所有參數都必須衍生自其中一個 MIDL 基底類型。 MIDL 不支援 void 做為基底類型。 您必須將宣告變更為有效的 MIDL 類型。
MIDL2140
不支援從包含位欄位的結構/等位衍生參數
DCE RPC 不會將位欄位定義為有效的資料類型。
MIDL2141
使用衍生自包含 type-modifiers/type-qualifiers 類型的參數需要 /c_ext
在 IDL 檔案中使用 近、 constvolatile 等關鍵字是 DCE RPC 的 Microsoft 擴充功能。 當您使用 /osf 參數進行編譯時,無法使用這些關鍵字,這會關閉預設 /c_ext 擴充功能參數。
MIDL2142
參數不得衍生自函式的指標
RPC 執行時間程式庫會在用戶端和伺服器之間傳輸指標及其相關聯的資料。 無法將函式的指標當做參數傳輸,因為無法透過網路傳輸函式。
MIDL2143
參數不得衍生自具有非支援聯集的聯集
聯集必須與辨別關聯。 使用 [switch_is] 和 [switch_type] 屬性。
MIDL2144
傳回類型衍生自 「int」。您必須搭配 「int」 使用大小規範
在 16 位系統上,除非其隨附大小規格,否則類型 int 不是有效的 MIDL 類型。 使用其中一個 大小規範小
MIDL2145
傳回類型不得衍生自 void 指標
MIDL 是強型別語言。 透過網路傳輸的所有參數都必須衍生自其中一個 MIDL 基底類型。 Void 類型未定義為 MIDL 的一部分。 您必須將宣告變更為有效的 MIDL 類型。
MIDL2146
傳回類型不得衍生自包含位欄位的結構/等位
DCE RPC 不會將位欄位定義為有效的資料類型。
MIDL2147
傳回類型不得衍生自具有非支援聯集的聯集
聯集必須與辨別關聯。 使用 [switch_is] 和 [switch_type] 屬性。
MIDL2148
傳回類型不得衍生自函式的指標
RPC 執行時間程式庫會在用戶端和伺服器之間傳輸指標及其相關聯的資料。 無法將函式的指標當做參數傳輸,因為 RPC 不會定義透過網路傳輸相關聯函式的方法。
MIDL2149
不支援複合初始化運算式
DCE RPC 僅支援簡單的初始化。 無法在 IDL 檔案中初始化結構或陣列。
MIDL2150
IDL 檔案中的 ACF 屬性需要 /app_config 參數
Microsoft 延伸模組可讓您在 IDL 檔案中指定 ACF 屬性。 使用 /app_config 參數來啟用此擴充功能。
MIDL2151
單行批註需要 /ms_ext 或 /c_ext
使用兩個斜線字元的單行批註 (//) 代表 DCE RPC 的 Microsoft 擴充功能。 如果您要使用 /osf 參數進行編譯,則無法使用單行批註。
MIDL2152
[version] 格式不正確
介面標頭中的介面版本號碼必須以 主要格式指定。次要,其中每個數位的範圍可以從 0 到 65535。
MIDL2153
「已簽署」需要 /ms_ext 或 /c_ext
使用 帶正負號 的關鍵字是 DCE RPC 的 Microsoft 延伸模組。 如果您想要使用此功能,則無法使用 /osf 參數。
MIDL2154
指派類型不相符
變數的類型與指派給變數的數值型別不符。
MIDL2155
宣告的格式必須是:const < 類型 > \ < declarator > = < 初始化運算式>
宣告與 DCE RPC 語法不相容。 使用 /ms_ext/c_ext MIDL 編譯器模式參數。
MIDL2156
宣告必須有 「const」
IDL 檔案中的宣告必須是使用關鍵字 const的常數運算式,例如:
const short x = 2;
MIDL2157
結構/等位/列舉不得定義于參數類型規格中
結構、等位或列舉型別必須在函式原型之外明確陳述。
MIDL2158
[allocate] 屬性只能套用到非 void 指標類型上
[allocate] 屬性是針對複雜的指標型資料結構所設計。 指定 [allocate] 屬性時,存根檔案會周遊資料結構,以計算可從指標存取的所有物件大小總計,以及資料結構中的所有其他指標。 將類型變更為非 void 指標類型,或移除 [allocate] 屬性,並使用其他方法來判斷其配置大小,例如 sizeof 運算子。
MIDL2159
陣列或對等指標建構無法衍生自非capsulated 等位
每個等位都必須與辨別關聯。 不允許等位陣列,因為它們不提供相關聯的辨別。 允許結構封裝等位及其辨別結構的結構陣列,因為存根可以使用辨別來判斷每個等位的大小。
MIDL2160
欄位不得衍生自error_status_t類型
error_status_t類型只能當做參數或傳回型別使用。 它不能內嵌在結構或等位的欄位中。
MIDL2161
等位至少有一個沒有大小寫標籤的 arm
等位宣告不符合等位的必要 MIDL 語法。 每個等位 arm 都需要選取該等位 Arm 的案例標籤或預設標籤。
MIDL2162
參數或傳回值不得衍生自已套用 [ignore] 的類型
[ignore] 屬性是欄位屬性,只能套用至欄位,例如結構和陣列的欄位。 [ignore] 屬性工作表示存根不應該在傳輸期間取值指標,而且在與必須取消參考的其他屬性發生衝突時不允許,例如 [out] 參數和函式傳回值。
MIDL2163
指標已經套用指標屬性
只能將其中一個指標屬性 [ref]、[unique]或 [ptr] 套用至單一指標。
MIDL2164
field/parameter 不得衍生自透過 ref 指標遞迴的結構
根據定義,參考指標無法設定為 Null。 以參考指標定義的遞迴資料結構沒有 Null 元素,而且慣例是非決定性的。 使用 [unique] 指標屬性可允許資料結構指定 Null 元素,或重新定義資料結構做為非遞迴資料結構。
MIDL2165
使用衍生自 void 指標的欄位需要 /c_ext
只有在您使用 MIDL 預設編譯器設定時,IDE IDL 才允許類型 void * 和其他類型及 DCE IDL 不支援的類型限定詞。 使用 /osf 參數會覆寫此預設值。 如果您必須在 osf 相容性模式中編譯,則必須重新定義指標類型。
MIDL2166
使用此屬性需要 /ms_ext
此語言功能是 DCE IDL 的 Microsoft 延伸模組。 如果您要在 osf 相容性模式中編譯, ( /osf ) ,則無法使用此功能。
MIDL2167
此屬性僅允許使用新的格式類型程式庫
若要使用這個屬性,您需要 Windows 2000 或更新版本所提供的 Oleaut32.dll 版本。
MIDL2168
使用wchar_t需要 /ms_ext 或 /c_ext
寬字元類型代表 DCE IDL 的延伸模組。 當您指定 /osf 參數時,MIDL 編譯器不接受寬字元類型。
MIDL2169
未命名的欄位需要 /ms_ext 或 /c_ext
DCE IDL 不支援使用內嵌在其他結構或等位中的未命名結構或等位。 在 DCE IDL 中,所有這類內嵌欄位都必須命名。 當您指定 /osf 參數時,MIDL 編譯器不允許其使用。
MIDL2170
未命名的欄位只能衍生自結構/等位類型
支援未命名欄位之 DCE IDL 的 Microsoft 延伸模組僅適用于結構和等位。 您必須將名稱指派給欄位,或重新定義欄位以符合此限制。
MIDL2171
等位的欄位無法衍生自一致性/不同陣列或其指標對等專案
一致性陣列不能單獨出現在等位中,但必須伴隨指定陣列大小的值。 不使用陣列做為等位 arm,請使用包含一致性陣列的結構,以及指定其大小的識別碼。
MIDL2172
未指定 [pointer_default] 屬性,假設介面中所有未設定指標的 [ptr]
DCE IDL 實作指定每個 IDL 檔案中的所有指標都必須與指標屬性相關聯。 如果未將明確指標屬性指派給參數或指標類型,而且 IDL 檔案中未指定 [pointer_default] 屬性,則完整的指標屬性 ptr 會與指標相關聯。 您可以使用明確的指標屬性、指定 [pointer_default] 屬性,或指定 /ms_ext 參數,將未設定指標的預設值變更為 [unique]。
MIDL2173
初始化運算式必須解析為常數運算式
如果運算式做為初始化運算式使用,運算式必須是常數運算式。 這在所有 MIDL 編譯器模式中都是如此。 運算式必須在編譯時期解析。 指定常值常數或解析為常數的運算式,而不是變數。
MIDL2174
屬性運算式的類型必須是整數、char、布林值或列舉
指定的型別無法解析為有效的參數類型。 使用整數、字元、 位元組布林值或 列舉 類型,或衍生自其中一種類型的類型。
MIDL2175
不合法的常數
指定的常數超出指定型別的有效範圍。
MIDL2176
未實作屬性;忽視
這個版本的 Microsoft RPC 中未實作指定的屬性。 MIDL 編譯器會繼續處理 IDL 檔案,就像屬性不存在一樣。
MIDL2177
傳回型別不得衍生自 [ref] 指標
定義為指標類型的函數傳回值必須指定為 [unique] 或 完整 指標。 您無法使用參考指標。
MIDL2178
屬性運算式必須是此模式中的變數名稱或指標取值運算式。 您必須指定 /ms_ext 參數
DCE IDL 編譯器需要變數或指標變數指定與 [size_is] 屬性相關聯的大小。 如果您想要利用允許常數運算式定義 [size_is] 屬性的 Microsoft 延伸模組,則無法使用 /osf 編譯器參數。
MIDL2179
參數不得衍生自遞迴的非歸聯集
等位必須包含辨別,因此等位不能有另一個等位做為元素。 只有當聯集是包含辨別的 結構一部分時,才能內嵌在另一個等位中。
MIDL2180
binding-handle 參數不可以是 [out]
MIDL 編譯器識別為此作業之系結控制碼的 handle 參數必須是 [in] 參數。 [out]-only 參數在用戶端存根上未定義,而且必須在用戶端上定義系結控制碼。
MIDL2181
控制碼的指標不可以是 [unique] 或 [ptr]
您無法針對控制碼的指標使用唯一且完整的指標屬性。 這些屬性允許 Null值,而且系結控制碼不能是 Null。 使用 [ref] 屬性從參考指標衍生系結控制碼參數。
MIDL2182
不是系結控制碼的參數不得衍生自 handle_t
基本控制碼類型 handle_t 不是透過網路傳輸的有效資料類型。 將參數類型變更為 handle_t以外的類型,或移除 參數。
MIDL2183
找到未預期的檔案結尾
MIDL 編譯器在能夠成功解析檔案的所有語法元素之前,找到檔案的結尾。 確認終止右大括弧字元 (}) 出現在檔案結尾,或檢查語法。
MIDL2184
衍生自 handle_t 的類型不得套用 [transmit_as]
基本控制碼類型 handle_t 不會透過網路傳輸。
MIDL2185
[coNtext_handle] 不得套用至已套用 [handle] 的類型
[coNtext_handle] 和 [handle] 屬性無法套用至相同的類型。
MIDL2186
[handle] 不得在衍生自 void 或 void * 的類型上指定
使用 [handle] 屬性指定的類型可以透過網路傳輸,但 type void* 不是可傳輸的類型。 控制碼類型必須解析為衍生自可允許基底型別的類型。
MIDL2187
參數在此模式中必須有 [in]、[out] 或 [in,out]。 您必須指定 /ms_ext 或 /c_ext
DCE IDL 編譯器要求所有參數都有明確的方向參數。 若要使用 DCE IDL 的 Microsoft 擴充功能,您無法使用 /osf 參數來覆寫 /ms_ext/c_ext
MIDL2188
傳輸的類型不能衍生自 [transmit_as]、 [represent_as]、 [wire_marshal]、 [user_marshal] 的 「void」
[transmit_as] 屬性只適用于指標類型。 使用 type void* 取代 void
MIDL2189
第一個和唯一的參數規格上必須指定 「void」
關鍵字 void 與其他函式參數不正確地出現。 若要指定不含參數的函式,關鍵字 void 必須是參數清單的唯一元素,如下列範例所示:
void Moo(void)
MIDL2190
[switch_is] 只能在衍生自非擷取聯集的類型上指定
[switch_is] 關鍵字未正確套用。 它只能與 非擷取聯集類型搭配使用。
MIDL2191
此版本中未實作可字串結構
DCE IDL 可讓屬性 [string] 套用至結構,其元素只包含解析為字元或位元組的字元、位元組或類型。 Microsoft RPC 不支援此功能。 [string] 屬性無法套用至整個結構。 不過,它可以套用至每個個別陣列。
MIDL2192
switch 類型只能是整數、char、布林值或列舉
指定的型別不會解析為有效的參數類型。 使用整數、字元、 位元組布林值、 列舉 類型,或衍生自這些類型之一的類型。
MIDL2193
[handle] 不能在衍生自 handle_t 的類型上指定
控制碼類型必須使用一個控制碼類型,而且只能定義其中一個控制碼類型或屬性。 請使用基本類型 handle_t 或屬性 [handle],但不能同時使用兩者。 使用者定義控制碼類型必須可傳輸,但不會在網路上傳輸 handle_t 類型。
MIDL2194
衍生自 handle_t 的參數不得為 [out] 參數
基本類型的控制碼 handle_t 只對定義它的應用程式端有意義。 handle_t類型不會在網路上傳輸。
MIDL2195
屬性運算式衍生自 [unique] 或 [ptr] 指標取值
雖然 [unique] 和 完整 指標屬性允許指標具有 Null 值,但定義 size 或 length 屬性的運算式絕對不能有 Null 值。 使用指標時,MIDL 會將運算式限制為 [ref] 指標。
MIDL2196
「cpp_quote」 需要 /ms_ext
cpp_quote屬性是 DCE IDL 的 Microsoft 延伸模組。 請勿使用 MIDL 編譯器參數 /osf,這會覆寫 /ms_ext
MIDL2197
quoted uuid 需要 /ms_ext
在引號內指定 UUID 值的能力是 DCE IDL 的 Microsoft 延伸模組。 請勿使用 MIDL 編譯器參數 /osf,這會覆寫 /ms_ext
MIDL2198
傳回型別無法衍生自非擷取聯集
非擷取聯集不能當做函式傳回型別使用。 若要傳回等位類型,請將等位類型指定為 [out] 或 [in, out] 參數。
MIDL2199
傳回類型無法衍生自一致性結構
傳回型別的大小必須是常數。 即使結構也包含其大小規範,您也無法將 指定為包含一致性陣列的結構做為傳回型別。 若要傳回一致性結構,請將結構指定為 [out] 或 [in, out] 參數。
MIDL2200
[transmit_as] 不得套用至衍生自泛型控制碼的類型
在此版本中,無法在相同類型上合併 [handle] 和 [transmit_as] 屬性。
MIDL2201
[handle] 不得套用至已套用 [transmit_as] 的類型
在此版本中,無法在相同類型上合併 [handle] 和 [transmit_as] 屬性。
MIDL2202
為 const 宣告指定的類型無效
常數宣告僅限於整數、字元、寬字元、字串和布林類型。
MIDL2203
不支援 sizeof 運算子的運算元
MIDL 編譯器僅支援簡單類型的 sizeof 作業。 指定的運算元不會評估為整數類型。
MIDL2204
此名稱已作為 const 識別碼名稱使用
識別碼先前已用來識別 const 宣告中的常數。 變更其中一個識別碼的名稱,讓識別碼是唯一的。
MIDL2205
類型error_status_t不一致的重新定義
類型 error_status_t 必須解析為 不帶正負號的 long類型。 無法使用其他類型定義。
MIDL2206
[case] 超出參數類型範圍的值
與 switch 語句案例相關聯的值超出指定參數類型的範圍。 例如,在短整數類型的 case 語句中使用長整數值時,就會發生此錯誤。
MIDL2207
衍生自 wchar_t 的參數需要 /ms_ext
寬字元類型 wchar_t 是 DCE IDL 的 Microsoft 擴充功能。 請勿使用 MIDL 編譯器參數 /osf,這會覆寫 /ms_ext
MIDL2208
此介面只有回呼
回呼只有在遠端程序呼叫的內容中才有效。 介面至少必須包含一個函式原型,才能呼叫不包含 [callback] 屬性的遠端程序呼叫。
MIDL2209
備援指定的屬性;忽視
指定的屬性已套用一次以上。 忽略相同屬性的多個實例。
MIDL2210
用於隱含控制碼的內容控制碼類型
使用 [coNtext_handle] 屬性定義的類型已指定為 [ implicit_handle] 屬性中的控制碼類型。 屬性無法以此方式合併。
MIDL2211
為 [allocate] 指定的衝突選項
為 ACF 屬性 [allocate] 指定的選項代表衝突的指示詞。 例如,指定選項all_nodes或選項single_node,但不能同時指定兩者。
MIDL2212
寫入檔案時發生錯誤
寫入檔案時發生錯誤。 此狀況可能是因為磁碟空間、檔案控制代碼、檔案存取限制和硬體失敗的相關錯誤所造成。
MIDL2213
使用 [switch_is] 類型,在等位定義找不到參數類型
等位定義不包含明確的 [switch_type] 屬性。 [switch_is] 屬性所指定的變數類型會當做參數類型使用。
MIDL2214
語意檢查因先前的錯誤而不完整
MIDL 編譯器會透過輸入檔進行兩個傳遞 () ,以解析任何向前宣告。 由於第一次通過期間發生錯誤,因此尚未執行第二個階段檢查。 與向前宣告相關的未回報錯誤可能仍存在於 檔案中。
MIDL2215
[callback] 程式不支援 handle 參數或傳回類型
[callback] 程式會在從用戶端到伺服器的呼叫內容中發生,並使用與原始呼叫相同的系結控制碼。 回呼函式中不允許明確系結控制碼參數或傳回型別。
MIDL2216
[ptr] 不支援此版本的別名
透過多個指標或變數名稱存取資料時,就會發生別名。 移除別名。 如需詳細資訊,請參閱 唯一指標
MIDL2217
參數已定義為內容控制碼
參數先前定義為內容控制碼。
MIDL2218
[coNtext_handle] 不得衍生自 handle_t
三個控制碼特性:類型 handle_t、屬性 [handle] 和屬性 [coNtext_handle]互斥。 一次只能將一個特性套用至類型或參數。
MIDL2219
陣列大小超過 65536 個位元組
在某些 Microsoft 平臺上,允許的資料大小上限為 64K。 重新設計您的應用程式,讓所有傳輸的資料都符合允許的大小上限。
MIDL2220
結構大小超過 65536 個位元組
在某些 Microsoft 平臺上,允許的資料大小上限為 64K。 重新設計您的應用程式,讓所有傳輸的資料都符合允許的大小上限。
MIDL2221
非capsulated 等位的欄位不能是另一個非擷取聯集
做為遠端程序呼叫一部分傳輸的聯集需要相關聯的資料項目、辨別項,以選取聯集 arm。 巢狀于其他等位中的等位不會提供辨別;因此,無法以此形式傳輸它們。 建立結構,其中包含等位及其辨別。
MIDL2222
指標屬性 (套用在內嵌陣列上的) ;忽視
只有在陣列是最上層參數時,才可以將指標屬性套用至陣列。 會忽略套用至內嵌于其他資料結構陣列的其他指標屬性。
MIDL2223
[allocate] 在 [transmit_as]、[represent_as]、[wire_marshal] 或 [user_marshal] 的傳輸或呈現類型上不合法
[transmit_as] 和 [allocate] 屬性不能同時套用至相同的類型。 [transmit_as] 屬性會區分呈現和傳輸的類型,而 [allocate] 屬性則假設呈現的類型與傳輸的類型相同。
MIDL2224
[switch_type] 必須在此匯入模式中指定
MIDL2225
[implicit_handle] 類型未定義;假設泛型控制碼
在 IDL 檔案中未定義 ACF 中指定的控制碼類型。 MIDL 編譯器假設控制碼類型解析為基本控制碼類型 handle_t。 如果您想要讓句的行為類似使用者定義或泛型控制碼,請將 [handle] 屬性新增至類型定義。
MIDL2226
array 元素不得衍生自 error_status_t
在此版本的 Microsoft RPC 中, error_status_t 類型只能顯示為參數或傳回類型。 它不能出現在陣列中。
MIDL2227
[allocate] 衍生自基本/泛型/內容控制碼的類型不合法
根據設計,ACF 屬性 [allocate] 無法套用至處理類型。
MIDL2228
傳輸或呈現的類型不得衍生自 error_status_t
在此版本的 Microsoft RPC 中, error_status_t 類型不能與 [transmit_as] 屬性搭配使用。
MIDL2229
等位的辨別不得衍生自套用 [忽略] 的欄位
遠端程序呼叫中使用的聯集必須與另一個稱為辨別項的資料項目相關聯,該資料項目會選取聯集 arm。 必須傳輸辨別。 [ignore] 屬性無法套用至等位辨別。
MIDL2230
[nocode] 針對伺服器端忽略,因為未指定 「/server none」
當 [nocode] 屬性套用至產生伺服器存根檔案之介面中的程式時,某些 DCE IDL 編譯器會產生錯誤。 因為伺服器必須支援所有作業,所以 [nocode] 不得套用至此模式中的程式,或者您必須使用 MIDL 編譯器參數 /server none 明確指定不會產生任何伺服器常式。
MIDL2231
未在非[local] 介面中指定的遠端程式;不會產生任何用戶端/伺服器存根
提供的介面沒有任何遠端程式,因此只會產生標頭檔。
MIDL2232
針對封裝聯集指定的預設案例太多
封裝的等位只能有一個預設值:arm。
MIDL2233
為 coclass 指定的預設介面太多
coclass最多可以有兩個 [預設] 成員,一個代表傳出 (來源) 介面或 dispinterface,另一個表示傳入 (接收) 介面或 dispinterface。
MIDL2234
具有 [defaultvtable] 的專案也必須有 [source]
defaultvtable介面會為 物件建立第二個來源介面,其中一個介面可讓接收透過 V 資料表接收事件。
MIDL2235
沒有欄位的等位規格不合法
等位必須至少有一個欄位。
MIDL2236
超出範圍的值
提供的案例值超出參數類型的範圍。
MIDL2237
[coNtext_handle] 必須在指標類型上套用
內容控制碼必須是指標類型。 DCE 指定所有內容控制碼都必須輸入為 void *
MIDL2238
傳回型別不得衍生自 handle_t
無法傳回handle_t
MIDL2239
[handle] 不得套用至衍生自內容控制碼的類型
類型不可以是內容控制碼和泛型控制碼。
MIDL2240
衍生自 「int」 的欄位必須具有大小規範 「small」、「short」 或 「long」 與 「int」
16 位系統上無法轉譯類型 int ,因為 int 的大小在機器上可能會不同。
MIDL2241
field 不得衍生自 void 或 void *
voidvoid * 不能當做遠端程式的參數類型使用。
MIDL2242
欄位不得衍生自包含位欄位的結構
包含位欄位的結構不能當做遠端程式的參數或傳回型別使用。
MIDL2243
欄位不得衍生自不可 rpcable 等位
聯集必須指定為非擷取聯集或封裝等位,才能傳輸。 一般 C 等位缺少跨網路傳輸等位所需的辨別。
MIDL2244
欄位不得衍生自函式的指標
函式的指標無法傳送至遠端程式。 函式的指標指向函式程式碼,而且無法使用 RPC 跨網路傳輸任何函式程式碼。
MIDL2245
無法在參數和傳回型別上使用 [fault_status]
每個程式只能使用屬性 [fault_status]。 [comm_status] 屬性可以獨立使用。
MIDL2246
使用 /Os 的 /Oi 模式傳回型別太複雜
依值傳遞的大型傳回型別只能由 /Os 優化存根處理。 此常式的存根將會使用 /Os 優化來產生。
MIDL2247
泛型控制碼類型對 /Oi 模式而言太大,使用 /Os
依值傳遞的大型泛型控制碼類型只能由 /Os 優化存根來處理。 此常式的存根將會使用 /Os 優化來產生。
MIDL2248
[in,out] 參數上的 [allocate (all_nodes) ] 參數可能會孤立原始記憶體
在 [inout] 參數上使用 [allocate (all_nodes) ] 必須針對 [out] 方向重新配置連續記憶體,因而孤立 [in] 參數。 不建議使用此用法。
MIDL2249
不能有 [ref] 指標做為等位 arm
參考指標必須一律指向有效的記憶體,但是當 [in] 方向使用另一種類型時,參考指標與參考指標的 [in] 聯集可能會傳回參考指標。
MIDL2250
使用 /Os 的 /Oi 模式不支援傳回內容控制碼
MIDL 不支援完全解譯優化模式中的內容控制碼。 切換至混合模式優化。
MIDL2251
使用 /Oi 模式不支援使用額外的 [comm_status] 或 [fault_status] 參數
[comm_status] 和 [fault_status] 屬性只能由 /Os 優化存根處理。 此常式的存根將會使用 /Os 優化來產生。
MIDL2252
使用 /Oi 模式不支援使用未知類型 [represent_as] 或 [user_marshal]
使用 [represent_as] 屬性搭配未定義于 IDL 檔案中的本機類型,或匯入的 IDL 檔案只能由 /Os 優化存根來處理。 此常式的存根將會使用 /Os 優化來產生。
MIDL2253
使用 /Os 的傳回型別不支援具有 [transmit_as] 或 [represent_as] 的陣列類型
傳回套用 [transmit_as] 或 [represent_as] 的陣列,只能由 /Os 優化存根處理。 此常式的存根將會使用 /Os 優化來產生。
MIDL2254
使用 /Oi 模式不支援具有 [transmit_as] 或 [represent_as] 的陣列類型
完全解譯優化不支援此動作。 切換至混合模式優化。
MIDL2255
[callback] 需要 /ms_ext
[callback] 屬性是 Microsoft 擴充功能,而且需要啟用 /ms_ext 參數。 請勿使用 /osf進行編譯,這會覆寫 /ms_ext
MIDL2256
迴圈介面相依性
此介面會使用本身 (直接或間接) 作為基底介面。
MIDL2257
只能使用 IUnknown 做為根介面
目前,所有介面都必須有 IUnknown 作為根介面。
MIDL2258
[IID_IS] 只能套用至介面的指標
[iid_is] 屬性只能套用至介面指標,不過它們可以指定為 IUnknown *的指標。
MIDL2259
介面只能用於指標對介面建構
除了基底介面或介面指標之外,不能使用介面名稱。
MIDL2260
介面指標必須有 UUID/IID
[iid_is] 運算式的基底類型必須是 UUID/GUID/IID 類型。
MIDL2261
介面主體以外的定義和宣告需要 /ms_ext
在任何介面主體之外放置宣告和定義是 Microsoft 擴充功能,而且需要使用 /ms_ext 參數。
MIDL2262
一個檔案中的多個介面需要 /ms_ext
在單一 idl 檔案中使用多個介面是 Microsoft 延伸模組,當您以 /osf 模式編譯時無法使用。
MIDL2263
只允許其中一個 [implicit_handle]、[auto_handle] 或 [explicit_handle]
每個介面只能有這三個屬性的其中一個。
MIDL2264
[implicit_handle] 參考不是控制碼的類型
隱含控制碼必須是其中一個控制碼類型。
MIDL2265
[object] procs 只能與 「/env win32」 搭配使用
具有 [object] 屬性的介面無法與 16 位環境搭配使用。
MIDL2266
[callback] 使用 /Os 不支援 /Oi 的 -env dos/win16
16 位環境中的回呼只能由 /Os 優化存根處理。 此常式的存根將會使用 /Os 優化來產生。
MIDL2267
使用 /O 作為 /Oi 模式的最上層參數不支援 float/double
浮點數和雙精度浮點數類型只能由 /Os 優化存根處理為參數。 此常式的存根將會使用 /Os 優化來產生。 結構、陣列或等位內的 float 和 double 類型仍然可以使用/O來處理。
MIDL2268
內容控制碼的指標不能當做傳回值使用
內容控制碼必須當做直接傳回值使用,而不是間接傳回值。
MIDL2269
物件介面中的程式必須傳回 HRESULT
沒有 -[local] 屬性的物件介面中的所有程式都必須傳回HRESULT/SCODE
MIDL2270
重複的 UUID
與 UUID 相同,必須是唯一的。
MIDL2271
[object] 介面必須衍生自另一個 [object] 介面,例如 IUnknown
只有在您使用物件介面時,才允許介面繼承。
MIDL2272
(非同步) 介面必須衍生自另一個 (非同步) 介面
同步和非同步物件介面都必須衍生自 IUnknown 或其他基底 OLE 介面。
MIDL2273
[IID_IS] 運算式必須是 IID 結構的指標
[iid_is] 運算式的基底類型必須是 UUID/GUID/IID 類型。
MIDL2274
[call_as] 類型必須是 [local] 程式
如果已定義,則 [call_as] 類型的目標必須套用 [ local]。
MIDL2275
未定義的 [call_as] 不得用於物件介面
您必須定義 [call_as] 類型的目標。 請確定您已為呼叫和呼叫的應用程式提供 call_as 常式。
MIDL2276
[auto_handle] 不能與 [編碼] 或 [解碼] 搭配使用
[ 編碼] 和 [ 解碼] 屬性只能搭配明確控制碼或隱含控制碼使用。
MIDL2277
在具有 [編碼] 或 [解碼] 的介面中不允許一般程式
包含 [編碼] 或 [解碼] 程式的介面不能有遠端程式。
MIDL2278
不允許使用 [編碼] 或 [解碼] 的最上層一致性或變異數
具有最上層一致性或變異數的類型無法使用類型序列化,因為無法提供調整大小/延長。 不過,包含它們的結構允許使用型別序列化。
MIDL2279
[out] 參數可能沒有 「const」
由於已改變 [out] 參數,因此不得宣告為 sa 常數。
MIDL2280
傳回值可能沒有 「const」
由於函式傳回時會設定函式值,因此這個值不得宣告為常數。
MIDL2281
無效使用 「retval」 屬性
請檢查以確定您尚未使用 [選擇性] 屬性,且 [retval] 參數是清單中的最後一個參數。
MIDL2282
多個呼叫慣例不合法
只有一個呼叫慣例可以套用至單一程式。
MIDL2283
[object] 程式上的屬性不合法
上述屬性僅適用于介面中沒有 [object] 屬性的程式。
MIDL2284
[out] 介面指標必須使用雙間接取值
因為改變的值是介面的指標,所以指標上方必須有另一層間接取值,才能傳回它。
MIDL2285
程式使用兩次作為 [call_as] 中的呼叫端
指定的 [local] 程式只能使用一次做為 [call_as] 的目標,以避免名稱衝突。
MIDL2286
[call_as] 目標在物件介面中必須有 [local]
[call_as] 的目標必須是目前介面中定義的 [local] 程式。
MIDL2287
[code] 和 [nocode] 可能無法一起使用
這兩個屬性是衝突的,無法一起使用。
MIDL2288
具有 [may] 或 [message] 屬性的程式可能沒有 [out] 參數,或傳回值的類型必須是 HRESULT 或 error_status_t
由於 [可能] 程式永遠不會傳回,因此無法取得傳回值。
MIDL2289
必須使用函式指標
雖然 /c_ext 模式中允許函式類型定義,但它們只能當做函式的指標使用。 它們永遠無法當做參數或遠端程式的傳回值來傳輸。
MIDL2290
函式可能不會在 RPC 作業中傳遞
函式和函式指標無法當做參數或遠端程式的傳回值傳遞。
MIDL2291
使用 /O 作為 /Oi 模式的傳回值不支援 hyper/double
Hyper 和 double 傳回值只能由 /Os 優化存根來處理。 此常式的存根將會使用 /Os 優化來產生。
MIDL2292
#pragma 套件 (快顯) ,而不比對 #pragma 套件 (推送)
#pragma 套件 (推送) 和 #pragma 套件 (快顯) 必須出現在相符的配對中。 指定了至少一個太多 #pragma 套件 (推送) 。
MIDL2293
可字串結構欄位必須是位元組/char/wchar_t
類型 [string] 只能套用至結構,其欄位全都是位元組類型,或是相當於位元組的類型定義。
MIDL2294
[notify] 不支援 /Oi 模式,使用 /Os
[notify] 屬性只能由 /Os 優化存根處理。
MIDL2295
在 [object] 介面中的程式上不支援 handle 參數或傳回類型
控制碼不能與 [ 物件] 介面搭配使用。
MIDL2296
ANSI C 只允許未指定最左邊的陣列系結
在一致性陣列中,ANSI C 只允許最左邊的 (最重要的) 陣列系結為未指定。 如果多個維度一致,MIDL 會嘗試將 「1」 放在其他一致性維度中。 如果其他維度是在不同的類型定義中定義,則無法這麼做。 請嘗試將所有陣列維度放在陣列宣告上,以避免這種情況。 在任何情況下,請注意編譯器所完成的陣列索引計算;您可能需要使用實際大小來執行自己的計算。
MIDL2297
/Oi 模式不支援 by-value union 參數,使用 /Os
完全解譯的優化不支援此動作。 切換至混合模式優化。
MIDL2298
[object] 介面上會忽略 [version] 屬性
[object] 屬性會識別 COM 介面。 COM 介面的介面屬性清單不能包含 [ version] 屬性。
MIDL2299
[size_is] 或 [max_is] 屬性在固定陣列上無效
固定大小的陣列無法使用 size_ismax_is 屬性。
MIDL2300
[encode] 或 [解碼] 在 [object] 介面中無效
[object] 屬性會識別 COM 介面。 [encode] 和 [ 解碼] 屬性會啟用序列化。 也就是說,您可以提供和控制資料封送處理和 unmarshal 的緩衝區,不過,您無法在 COM 介面上執行序列化。
MIDL2301
類型上的 [encode] 或 [解碼] 需要 /ms_ext
序列化不是 DCE-IDL 規格的一部分。 這是需要使用 /ms_ext 命令列參數的 Microsoft 擴充功能。
MIDL2302
/env win16 或 /env dos 不支援 int
16 位 Microsoft 平臺不支援在 IDL 檔案中使用 int 類型。 使用限定int類型。
MIDL2303
[bstring] 只能套用至 「char」 或 「whchar_t」 的指標
此錯誤已過時。 它僅供回溯相容性使用。
MIDL2304
在 [object] 介面中的程式上屬性無效
COM 介面中的程式不允許指定的屬性。
MIDL2305
屬性在 [object] 介面上無效
COM 介面中不允許指定的屬性。
MIDL2306
針對 /Oi 模式,太多參數或堆疊太大,請使用 /Os
此警告已過時。 它僅供回溯相容性使用。 這表示呼叫遠端程式會導致堆疊成長超過 64 K。
MIDL2307
ACF 檔案類型沒有屬性def,因此沒有作用
IDL 檔案應該包含所有沒有屬性的 typedef 語句。 它們不應該發生在 ACF 檔案中。 如果是,MIDL 編譯器會將它們解譯為備援,並忽略它們。
MIDL2308
使用 /Os 的 /Oi 模式不支援__stdcall或__cdecl以外的呼叫慣例
呼叫慣例,例如 __pascal__fastcall 變更堆疊的格式。 /Oi模式僅支援__stdcall__cdecl呼叫慣例。 如果您必須使用其他呼叫慣例,請使用 /Os 模式。
MIDL2309
介面中的委派方法太多,需要 Windows 2000 或更新版本
一個介面可以繼承自另一個介面。 這樣做時,基底介面的方法會被視為委派。 沒有衍生介面可以包含超過 256 個委派的方法。
MIDL2310
/env mac 或 /env powermac 不支援 auto 控制碼
編譯 PowerMac 的 IDL 檔案時,您無法使用自動系結控制碼。 您必須指定明確或隱含控制碼。
MIDL2311
在 mktyplib 相容性模式中,程式庫區塊外部的語句不合法
當您編譯 IDL 檔案時,您可能需要指定 /mktyplib203 命令列參數。

注意:
Mktyplib.exe 工具已過時。 請改用 MIDL 編譯器。


MIDL2312
除非使用 mktyplib 相容性模式,否則語法不合法
當您編譯 IDL 檔案時,您可能需要指定 /mktyplib203 命令列參數。

注意:
Mktyplib.exe 工具已過時。 請改用 MIDL 編譯器。


MIDL2313
不合法的定義,必須在 mktyplib 相容性模式中使用 typedef
當您編譯 IDL 檔案時,您可能需要指定 /mktyplib203 命令列參數。

注意:
Mktyplib.exe 工具已過時。 請改用 MIDL 編譯器。


MIDL2314
介面指標的明確指標屬性 [ptr] [ref] 已忽略
介面的指標不能有 IDL 屬性。
MIDL2315
/Oi模式未針對 PowerMac 實作,切換至/Os
MIDL2316
屬性中使用的運算式類型不合法
指標的預設值應該是常數。
MIDL2317
管道中使用的不合法類型
管道僅限於基本 IDL 資料類型。 例如,您無法指定陣列的管道。
MIDL2318
程式使用管道,使用 /Oicf
您選取的模式不支援管道。 MIDL 編譯器偵測到在您的介面中使用一或多個管道。 因此,它會以 /Oicf 模式編譯您的 IDL 檔案。
MIDL2319
程式具有需要使用 /Oif 的屬性,切換模式
您必須在/Oif模式中編譯 [async] 程式。
MIDL2320
衝突的優化需求,無法優化
此錯誤通常表示您同時指定 /Os/Oi (或 /Oi) MIDL 編譯器模式的變體。 這也表示您在 IDL 和 ACL 檔案中指定的功能需要使用這兩種模式。 您必須選取一種模式,或選取另一個模式才能優化。
MIDL2321
管道不能是陣列元素,或是結構或等位的成員
管道資料類型只能是最上層參數。
MIDL2322
不正確管道使用方式
您無法搭配 [transmit_as]、[represent_as] 或 [user_marshal] 屬性使用管道。 此外,管道不能當做傳回型別使用。
MIDL2323
功能需要進階解譯優化選項;use -Oicf
此錯誤表示 MIDL 編譯器命令列參數,例如 /robust 需要使用 /Oicf 模式。
MIDL2324
功能需要進階解譯優化選項;use -Oicf
這個警告表示 MIDL 編譯器命令列參數,例如 /robust 需要使用 /Oicf 模式。
MIDL2329
優化選項即將分階段,請使用 -Oic
已在 MIDL 命令列上指定 /Oi1 優化模式。 不再支援此模式,因此應該改用 /Oicf
MIDL2330
優化選項即將分階段,請使用 -Oicf
已在 MIDL 命令列上指定 /Oi2 優化模式。 不再支援此模式,因此應該改用 /Oicf
MIDL2331
優化選項即將分階段,請使用 -ic
i1 優化模式是在 [optimize] ACF 屬性中指定。 不再支援此模式,而且應該改用 icf。
範例 ACF 檔案:
[optimize("i1")] roo();    //MIDL 2331
MIDL2332
優化選項即將分階段,請使用 -icf
i2 優化模式是在 [optimize] ACF 屬性中指定。 不再支援此模式,而且應該改用 icf。
範例 ACF 檔案:
[optimize("i2")] roo();    //MIDL 2332
MIDL2333
-old 和 -new 參數已過時,請使用 -oldtlb 和 -newtlb
此訊息已過時,且 MIDL 不再省略。
MIDL2334
不合法的引數值
/O 命令列參數的允許變體包括 /Os/Oi/Oic/Oicf/Oif
MIDL2335
常數中的不合法運算式類型
運算式不會評估為常數。
MIDL2336
列舉中的不合法運算式類型
列舉定義中的列舉值不會評估為整數類型。
MIDL2337
未滿意的正向宣告
MIDL 編譯器無法解析正向宣告的定義。
MIDL2338
參數是衝突的
編譯 IDL 檔案時,您無法同時使用 /osf/ms_ext 命令列參數。 您必須選擇其中一個或另一個。
MIDL2339
MIDL 無法為無法 rpc 的聯集產生 HOOKOLE 資訊
此錯誤已過時。 它嚴格提供供回溯相容性使用。
MIDL2340
找不到聯集的案例運算式
等位的每個欄位都必須有具有常數運算式的 case 語句。
MIDL2341
[user_marshal] 和 [wire_marshal] 不支援 -Oi 和 -Oic 旗標,請使用 -Os 或 -Oicf
[user_marshal] 和 [wire_marshal] 屬性需要只有 /Oicf (無程式碼 Proxy 中可用的特定優化功能,而快速格式字串) 或 /Os (混合模式封送處理) 。
MIDL2342
管道無法與資料序列化搭配使用,亦即 [編碼] 和/或 [解碼]
您無法將管道當做參數傳遞至具有 [編碼] 或 [解碼] 屬性的程式。
MIDL2343
所有管道介面指標都必須使用單一間接取值
您無法以此方式使用管線介面指標的指標。
MIDL2344
[iid_is () ] 無法搭配管道介面指標使用
此訊息已過時。 編譯器不再使用此訊息。
MIDL2345
無效或無法套用 -lcid 參數
您指定的本機識別碼 (LCID) 無效。
MIDL2346
指定的 lcid 與先前的規格不同
/lcid 和 [lcid] 中指定的值不同。 MIDL 編譯器將使用最後一個定義的編譯器。
MIDL2347
在程式庫區塊外部不允許 importlib
所有 [importlib] 語句都應該發生在 [library] 區塊中。
MIDL2348
不正確浮點值
MIDL 不應該發出此錯誤。 如果您看到此錯誤,請向 Microsoft 回報錯誤,以提供重現錯誤所需的所有檔案,包括您的 IDL 檔案、ACF 檔案、標頭等。
MIDL2349
不正確成員
程式不能是程式庫的成員。
MIDL2350
可能不正確成員
若要成為程式庫的有效成員,程式庫專案必須是模組、dispinterface、coclass、if 語句、結構、等位、列舉或正向宣告。
MIDL2351
管道和介面類別型不符
此訊息已過時。
MIDL2352
字串、不同的陣列、一致性陣列和完整的指標參數可能與執行時間期間的管道參數不相容
結合一或多個 [in] 字串、不同的陣列、一致性陣列和完整指標參數,以及任何 [in] 管道參數的方法,會產生只在 Windows 電腦上執行ncacn_*ncalrpc 通訊協定序列的存根。 使用存根對 ncadg_* 通訊協定序列進行呼叫,或接受來自其他 OSF DCE RPC 廠商的呼叫,可能會在執行時間期間于伺服器上產生錯誤。 此錯誤從 Windows Server 2003 開始發生。
MIDL2353
參數必須位於
非同步控制碼必須是 [in] 參數。
MIDL2354
[async] 物件的參數類型必須是介面的雙指標
參數的類型必須是 IAsyncManager **。
MIDL2355
不正確的非同步控制碼類型
控制碼類型應該是 IAsyncManager 或衍生自 IAsyncManager 的類型
MIDL2356
「內部」參數啟用不支援的功能,請小心使用
避免使用此參數。
MIDL2357
非同步程式無法使用自動控制碼
具有 [async] 屬性的程式需要明確的控制碼。
MIDL2358
error_status_t應該同時具有 [comm_status] 和 [fault_status]
已使用 IDL 屬性 [可能] 或 [message] 指定程式,但傳回類型只有 ACF 屬性 [comm_status] 或 [fault_status]。 這兩個 ACF 屬性都是必要的。
範例 ACF 檔案:
[comm_status] roo();    //MIDL 2358
[fault_status] bar();    //MIDL 2358
[comm_status, fault_status] baz();    //OK
MIDL2359
此建構只能在程式庫區塊內使用
模組只能在程式庫區塊內發生。
MIDL2360
不正確類型重新定義
新類型是以遞迴方式定義在不存在的類型上。
範例:
typedef roo roo[10];    //MIDL 2360
MIDL2361
具有 [vararg] 屬性的程式必須具有 SAFEARRAY (VARIANT) 參數;param order 為 [vararg], [lcid], [retval]
大部分具有 [vararg] 屬性的程式參數都必須發生在 SAFEARRAY (VARIANT) 參數之前。 SAFEARRAY (VARIANT) 參數必須存在。 如果參數清單包含具有 [ lcid] 屬性的參數,則必須遵循 SAFEARRAY (VARIANT) 參數。 如果參數清單包含具有 [retval] 屬性的參數,則必須在參數具有 [lcid] 屬性之後發生。
MIDL2363
介面中太多方法,需要 Windows 2000 或更新版本
當您在 /Oicf 模式中編譯時,MIDL 編譯器在介面中不允許超過 1024 個方法。
MIDL2364
交換器正在分階段化
下列參數已過時:/hookole、/env win16和 /env
MIDL2365
無法衍生自 IAdviseSink、IAdviseSink2 或 IAdviseSinkEx
這些介面無法擴充。
MIDL2366
無法指派預設值
Visual Basic 中允許將預設值指派給參數,但在 C++ 中則不允許。 如果您使用 C++,則會忽略預設值。
MIDL2367
不支援 DOS/Win16/MAC 的型別程式庫產生
MIDL 不支援 16 位類型程式庫。
MIDL2368
產生類型程式庫時發生錯誤,忽略
產生類型程式庫時發生非嚴重錯誤。
MIDL2369
使用 /Oi 超過堆疊大小,使用 /Os
-Oi 優化模式限制為參數的堆疊空間 128 個位元組。 編譯器已自動切換至 Os 優化模式,以因應此限制。
若要避免這個警告,請使用 -Oicf 或 -Os 優化模式。 優化模式可以藉由指定 -Oicf 或 -Os 而不是 -Oi,或在 ACF 檔案中將 [optimize9「icf」) ] 或 optimize[ (「s」) ] 屬性新增至 ACF 檔案中的函式,來變更優化模式。
當以值方式將大型結構當做參數傳遞時,通常會發生這個警告。 您可以改為將指標傳遞至 結構,以降低所需的堆疊大小。
範例:
typedef struct
{
char a[127];
}
large;
//This function has a stack size of 132 (x86) or 136 (alpha) on 32-bit systems
void roo(large s, int a);    //MIDL 2360
// workaround: pass by reference
void bar (large *s, int a);
MIDL2370
使用 /robust 需要 /Oicf,切換模式
當您在命令列上指定/robust參數時,必須在/Oicf模式中編譯。
MIDL2371
指定的範圍不正確
[range] 屬性中指定的最大值小於最小值。
範例:
void roo([range(3,2)] int a);    //MIDL 2371
MIDL2372
[in] 和 [out] 參數 [async_uuid] 介面的無效組合
這個介面類別型只允許具有 [in] 或 [out] 參數之屬性的簡單組合。
MIDL2373
/robust 不支援 DOS、Win16 和 MAC 平臺
MIDL 支援 Microsoft Windows 2000 或更新版本的 /robust 參數。
MIDL2374
將淘汰物件介面的 NT 3.51 樣式 Stubless Proxy 支援;使用 /Oif。
此模式已過時。 使用 /Oif/Oicf
MIDL2375
[encode] 或 [解碼] 與 /robust 需要 /Oicf
指定 /robust 參數時,無法執行序列化。
MIDL2377
指定的衝突屬性
已指定 [coNtext_handle_serialize] 和 [coNtext_handle_noserialize]。
MIDL2378
[serialize], [noserialize] 可以套用至coNtext_handles
ACF 屬性 [coNtext_handle_serialize] 或 [coNtext_handle_noserialize] 只能套用至內容控制碼的類型。
範例 IDL 檔案:
typedef /*[context_handle] */ void *PV;    //Note: PV is *not* a context handle.
範例 ACF 檔案:
typedef [context_handle_serialize] PV;    //MIDL 2378
MIDL2379
編譯器達到格式字串表示的限制。 如需建議,請參閱檔。
MIDL 編譯器有 64 KB 的格式字串限制。 當 IDL 檔案包含其他 IDL 檔案時,通常會發生此錯誤。 所有 include 語句所產生的複合 IDL 檔案超過封送處理引擎解譯器之類型表示資料表的限制。 請嘗試在 IDL 檔案中使用 import 指示詞,而不是 include 指示詞。 如需詳細資訊,請參閱 匯入系統標頭檔包含匯入
MIDL2380
wire 格式可能不正確,您可能需要使用 -ms_conf_struct,請參閱檔以取得建議
MIDL 編譯器無法為數據產生可轉譯的格式。 取得此錯誤的其中一個常見方式是定義複雜結構內的 ms_conf_struct
MIDL2381
堆疊大小或大於 64 K 限制的位移。 如需建議,請參閱檔。
呼叫會產生大於 64 KB 的堆疊。 請嘗試在較小的區塊中傳遞資料。
MIDL2382
強制 64 位平臺的解譯器模式
64 位平臺需要 /Oicf 編譯模式。
MIDL2383
陣列元素大小大於 64 KB 的限制。
所有陣列元素的大小必須小於 64 KB。
MIDL2384
方法中只能有一個 [Icid] 參數,如果最後一個參數有 [retval],它應該是最後一個或最後一個或最後一個參數
具有 [lcid] 屬性的參數必須最後發生。 唯一的例外狀況是也有具有 [retval] 屬性的參數。 當兩者都發生時,參數清單中的第二個到最後一個參數必須具有 [ lcid] 屬性。 最後一個參數必須具有 [retval] 屬性。
MIDL2385
midl_pragma語法不正確
MIDL 編譯器在 midl_pragma 語句中偵測到未知的語法錯誤。
MIDL2386
/osf 模式不支援__int3264
如果您需要使用 __int3264,請在 /ms-ext 模式中編譯。
MIDL2387
類型程式庫中未解析的符號
編譯器無法解析型別程式庫中的正式宣告或參考型別。
MIDL2388
非同步管道無法以傳值方式傳遞
非同步管道應該以傳址或位址傳遞。
MIDL2389
解譯程式的參數位移超過 64 KB 的限制
此錯誤通常表示程式有太多參數。
MIDL2390
不正確陣列元素
管道不能當做陣列元素使用。
MIDL2391
dispinterface 成員必須是方法、屬性或介面
dispinterface 不能包含類型定義、結構、列舉或等位。
MIDL2392
沒有 [call_as] 的程式
具有 [local] 屬性的物件程式也需要 [call_as] 屬性。
MIDL2393
多維度向量,切換至 /Oicf
/Os優化模式不支援多維度非fixed 大小陣列。 編譯器已針對此函式自動將優化模式切換至 /Oicf
藉由在 MIDL 命令列上指定 /Oicf ,或使用 MIDL_PRAGMA警告 ( 停用,即可全域隱藏此警告:IDL 檔案中的 2393) 。 將 [optimize (「icf」) ] 屬性新增至 ACF 檔案中的函式,即可變更個別函式的優化模式。
下列範例示範此警告:
void roo(long s1, [size_is(s1)] long a[][30];    //MIDL2393
void bar(long s1, long s2, [size_is(s1,s2) long **a);//MIDL2393
MIDL2395
程式庫區塊不支援類型或建構,因為缺少對 64 KB 多型類型的 Oleaut32.dll 支援
OLE 自動化不支援多型類型 (,例如_int3264、INT_PTR等) 。 這些類型在 32 位和 64 位平臺之間具有不相容的資料標記法。 遠端呼叫會在 64 位平臺上的執行時間失敗。

注意:
請注意,從 Windows 2000 版開始,OLE Automation 支援 64 位 TLB 檔案,方法是在執行時間轉換 32 位 TLB 資訊。 因此,MIDL 僅支援 32 位 TLB 產生。


如果 MIDL 只是用來產生標頭檔, /notlb 參數將會隱藏 TLB 檔案的產生。

MIDL2396
為 64b 產生的舊解譯器程式碼
此錯誤已過時。 如果您看到此錯誤,請向 Microsoft 回報錯誤,為您的 IDL 檔案、ACF 檔案和完整的 MIDL 命令列提供錯誤。
MIDL2397
不再支援編譯器參數
不再支援指定的參數或參數。
MIDL2398
無法執行 MIDL 引擎
從 Windows 2000 版本 (MIDL 5.03.279) 開始,MIDL 編譯器會使用兩個可執行檔來實作:Midl.exe (驅動程式) ,以及 Midlc.exe (編譯器引擎) 。 此錯誤表示 Midl.exe 無法啟動 Midlc.exe。 請確定 Midlc.exe 位於與 Midl.exe 相同的目錄中,而且它們是相同的版本。
錯誤可能是因為從最新的散發套件複製 Midl.exe,但不是 Midlx.exe 所造成。 在命令列執行 midl 和/或 midlc ,而不需要任何參數即可查看可執行檔的版本號碼。
MIDL2399
驅動程式的命令不正確
從 Windows 2000 版本 (MIDL 5.03.279) 開始,MIDL 編譯器會使用兩個可執行檔來實作:Midl.exe (驅動程式) ,以及 Midlc.exe (編譯器引擎) 。 此錯誤表示用來將命令從 Midl.exe 傳遞至 Midlc.exe 的暫存檔案遺失或損毀。 請確定 Midlc.exe 位於與 Midl.exe 相同的目錄中,而且它們是相同的版本。
錯誤可能是因為嘗試直接執行 Midlc.exe 或複製 Midl.exe,但不是從最新的散發套件 Midlc.exe 所造成。 在命令列執行 midl 和/或 midlc ,而不需要任何參數即可查看可執行檔的版本號碼。
MIDL2400
若為 ole automation,選擇性參數應該是 VARIANT 或 VARIANT *
OLE Automation 要求所有 [選擇性] 參數的類型都是 VARIANTVARIANT*
在 OLE 自動化中,使用非 VARIANT 參數可能會導致呼叫在執行時間失敗,或傳遞 [選擇性] 參數的未定義資料。
MIDL2401
[defaultvalue] 會套用至非 VARIANT 和 [選擇性]。 請移除 [選擇性]
[defaultvalue] 屬性工作表示 [選擇性]。 不需要 [ 選擇性] 屬性。
MIDL2402
[選擇性] 屬性在程式庫區塊外部無法套用
[ 選擇性] 屬性所隱含的功能不適用於為程式庫區塊外部介面產生的 Proxy。
MIDL2403
[Icid] 參數的資料類型必須是 long
OLE Automation 要求具有 [Icid] 屬性的參數必須是 long類型。
MIDL2404
具有 [propput]、[propget] 或 [propref] 的程式在 [選擇性] 之後不能有一個以上的必要參數
使用 [propput]、[propget]或 [ propputref] 時,最後一個參數後面不能有一個沒有 [選擇性] 的參數。
MIDL2405
[comm_status] 或 [fault_status] 需要 -Oicf
舊的 -Oi 優化模式不支援具有 [ comm_status] 或 [ fault_status] 的程式或參數,其選擇 (即使用 [ 編碼] 和/或 [ 解碼]) 。
您可以在 MIDL 命令列上指定 -Oicf ,或將 [optimize (「icf:) ] 屬性新增至 ACF 檔案中的函式,以全域隱藏此警告。
一般而言,建議使用 -Oicf 優化模式,而非 -Oi 模式。
MIDL2406
midl 驅動程式和編譯器版本不符
自 Windows 2000 版本起, (MIDL 5.03.279 版) MIDL 編譯器會使用兩個可執行檔來實作:Midl.exe (驅動程式) ,以及 Midlc.exe (編譯器引擎) 。 此錯誤表示 Midl.exe 版本與 Midlc.exe 版本不符。
錯誤可能是因為從最新的散發套件複製 Midl.exe,但不是 Midlc.exe 所造成。 在命令列執行 midl 和/或 midlc ,而不需要任何參數即可查看可執行檔的版本號碼。
MIDL2407
未指定中繼檔案:使用 Midl.exe
從 Windows 2000 版本 (MIDL 5.03.279) 開始,MIDL 編譯器會使用兩個可執行檔來實作:Midl.exe (驅動程式) ,以及 Midlc.exe (編譯器引擎) 。 此錯誤表示 Midlc.exe 是直接執行,而不是使用 Midl.exe。
MIDL2408
處理常式中參數的問題
從 TLB 匯入資料,以及程式有不正確參數時,可能會看到此錯誤。
如果您看到此錯誤,請向 Microsoft 回報錯誤。 指定您的 IDL 檔案、ACF 檔案、TLB 檔案,以及完整的 MIDL 命令列。
MIDL2409
處理結構中欄位的問題
從 TLB 匯入資料,以及當結構具有不正確結構或等位欄位時,可能會看到此錯誤。
如果您看到此錯誤,請向 Microsoft 回報錯誤。 指定您的 IDL 檔案、ACF 檔案、TLB 檔案,以及完整的 MIDL 命令列。
MIDL2410
偵測到內部編譯器不一致:格式字串位移無效。 如需詳細資訊,請參閱 文件 。
MIDL 編譯器在其內部資料結構中偵測到不正確值。 這可能是由遞迴或編譯器違反內部資料標記法限制所造成。 若要識別和/或解決此問題,請嘗試簡化 IDL 檔案。 您可以藉由簡化複雜的參數和遞迴資料結構,或透過分割 IDL 檔案來縮小,來執行此操作。 此訊息可能會伴隨診斷列印出,以及問題的其他資訊。
如果您看到此錯誤,請向 Microsoft 回報錯誤。 如果有的話,請指定您的 IDL 檔案、ACF 檔案、完整 MIDL 命令列和診斷輸出。
MIDL2411
偵測到內部編譯器不一致:類型位移無效。 如需詳細資訊,請參閱 文件 。
MIDL 編譯器在其內部資料結構中偵測到不正確值。 這可能是由遞迴或編譯器違反內部資料標記法限制所造成。 若要識別和/或解決此問題,請嘗試簡化 IDL 檔案。 您可以藉由簡化複雜參數和遞迴資料結構,或藉由分割 IDL 檔案來縮小,來執行此操作。 此訊息可能會伴隨診斷列印出,以及問題的其他資訊。
如果您看到此錯誤,請向 Microsoft 回報錯誤。 如果有的話,請指定您的 IDL 檔案、ACF 檔案、完整 MIDL 命令列和診斷輸出。
MIDL2412
在程式庫區塊之外不支援 SAFEARRAY (roo) 語法,請使用 LPSAFEARRAY 作為 Proxy
在程式庫區塊之外不允許明確輸入的 SAFEARRAY。 請改用 LPSAFEARRAY。
下列範例示範此錯誤:
void roo(SAFEARRAY(long) *a); //MIDL2412 when outside a library block
void roo(LPSAFEAEEAY a);         //OK
MIDL2413
不支援位欄位
MIDL 不支援 C 樣式位欄位。 這適用于 Proxy 產生和 TLB 產生。
MIDL2414
-Oicf 不支援具有 [解碼] 的浮點或複雜傳回類型,使用 -OI
-Oicf 樣式挑選中不支援具有浮點數或結構/等位傳回型別的程式。 32 位的因應措施是在使用 [編碼] 和/或 [解碼]) 序列化資料 (時,使用 -Oi 優化模式。 不過,由於舊版 -Oi 樣式解譯器和挑選支援會在 Windows 2000 版本之後淘汰,因此強烈建議使用指標作為此問題的因應措施。 另請注意,一般而言,將介面方法變更為使用 [out, ref] 指標,而不是傳回值,導致問題在連線上完全回溯相容,而且可以輕鬆地從應用層隱藏。
您可以在 MIDL 命令列上指定 -Oi,或將 [optimize (「i」i「) ] 屬性新增至 ACF 檔案中的函式,以全域隱藏此警告。
下列範例示範此問題:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
解決這項限制的其中一個選項是傳遞 [out] 參數來保存結果,而不是使用傳回值:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer
roo.acf:
[decode] GetDouble();
如先前所述,上述解決方案不僅適用于新介面,也適合舊介面的因應措施。 新 「out」 引數的線標記法與傳回值相同, (注意 void 作為新傳回值) 。
MIDL2415
使用 [解碼] 時,64 位不支援傳回類型
使用 [ 編碼] 和/或 [ 解碼] ) 執行資料序列化 (時,64 位模式不支援具有浮點或結構/等位傳回型別的程式。 這與 64 位平臺上不支援舊樣式 -Oi 解譯器和資料序列化程式有關。 如需詳細資訊,請參閱MIDL2414的描述。
下列範例示範此錯誤:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
建議針對新介面和舊介面使用下列事項。 使用 [out] 參數來保存結果,而不是使用傳回值:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer.
roo.acf:
[decode] GetDouble();
請注意,此解決方案線上路上完全回溯相容,因為 [ref、out] 指標或雙精度浮點的線標記法與雙精度浮點數相同。
MIDL2416
傳輸的類型不能包含 [wire_marshal] 或 [user_marshal] 的完整指標
具有 [ wire_marshal] 或 [ user_marshal] 屬性的類型可能不會包含完整的 ([ ptr]) 指標。 請改用 [ unique] 或 [ ref]。
下列範例示範此錯誤:
typedef struct
{
    [ptr] long *a;    //Should use [ref] or [unique] instead
}
st1;
typedef [wire_marshal(st1)] struct
{
    long a;
}
st2:
void roo(st2 *s);    //MIDL2416
MIDL2417
傳輸的類型必須是指標,或具有 [wire_marshal] 和 [user_marshal] 的常數大小
具有 [ wire_marshal] 或 [ user_marshal] 屬性的最上層類型在編譯時期必須具有定義完善的大小。 它們不能是或包含一致性或不同大小的陣列。
下列範例示範此錯誤:
typedef struct        //Type contains variable-sized array
{
    long s;
    [size_is(s)] char a[];
}
st1;
typedef [wire_marshal(st1)] struct
{
    long a;
}
st2;
void roo(st2 *s);        //MIDL2417
MIDL2418
具有 [propget] 的程式必須至少有一個參數或傳回值
具有 [propget] 屬性的程式必須有一些傳回屬性值的方法。 它們必須至少有一個 [out] 參數或傳回值。
MIDL2461
已在方法層級套用 [readonly] 屬性。
[readonly] 屬性只能在參數層級套用。
MIDL2465
包含一致性陣列的結構必須以傳址方式傳遞
RPC 中的最上層參數在編譯時期必須有妥善定義的大小。 它們不能是,也不包含一致性或不同大小的陣列。 此外,使用者無法在沒有定義完善的大小的情況下編碼/解碼類型。 應用程式必須以傳址方式傳遞一致性結構/一致性不同的結構。
下列範例示範此錯誤:
typedef struct        //Type contains variable-sized array
{
    long s;
    [size_is(s)] char a[];
}
st1;
void roo(st1 s);        //MIDL2465
 
on .acf file
typedef [encode,decode] st1; //MIDL2465
MIDL9008
內部編譯器問題 < 系統錯誤碼 > - 編譯器因不明原因而無法繼續。 如需因應措施,請參閱檔。
編譯器無法繼續,而且錯誤的原因不明。 十六進位錯誤號碼是系統錯誤識別碼。 編譯可能會因為外部問題而失敗,例如記憶體不足狀況。 在此情況下,您可以在 Winerror.h 或 Ntstatus.h 中找到詳細資訊。
通常會產生此錯誤的兩種情況:
  • 在偵測 IDL 檔案中的錯誤之後,MIDL 編譯器無法復原。 如果 MIDL 傳回有關 IDL 檔案的任何錯誤訊息,請嘗試修正它們並重新編譯。 如果沒有錯誤訊息,編譯器可能會失敗,才能回報錯誤。 在報告內部編譯器錯誤的行上尋找語法錯誤。
  • MIDL 編譯器無法在指定的優化選項下產生正確的程式碼。 請嘗試變更編譯器模式、在混合模式優化中編譯 (/Os) ,或移除所有優化。 或者,使用 /NO_FORMAT_OPT 旗標重新編譯,以隱藏 MIDL 程式與類型描述項的預設優化。
即使 IDL 檔案正確且未使用任何優化選項,也會偶爾發生此錯誤。 如果是這種情況,請嘗試藉由移除任何最近的修改、簡化或重新排列資料類型、變更原型,或開始批註 IDL 檔案的部分來找出問題碼,以重寫錯誤回報所在位置的程式碼區段。
如果這些選項都無法運作,或您認為問題可能與 Midl.exe 中的 Bug 有關,請通知 Microsoft,提供所有相關的詳細資料。