Index: exchange.idl =================================================================== --- exchange.idl (revision 4004) +++ exchange.idl (working copy) @@ -1039,7 +1039,7 @@ [case(ActionType_OP_COPY)] MoveCopy_Action CopyAction; [case(ActionType_OP_REPLY)] ReplyOOF_Action ReplyAction; [case(ActionType_OP_OOF_REPLY)] ReplyOOF_Action ReplyOOFAction; - [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING)] DATA_BLOB DeferAction; + [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB DeferAction; [case(ActionType_OP_BOUNCE)] BounceCode BounceCode; [case(ActionType_OP_TAG)] mapi_SPropValue_wrap PropValue; [case(ActionType_OP_FORWARD)] ForwardDelegate_Action ForwardAction; @@ -1057,7 +1057,7 @@ typedef [flag(NDR_NOALIGN)] struct { uint16 ActionLength; - [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING)] ActionBlockData ActionBlockData; + [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING|NDR_NOALIGN)] ActionBlockData ActionBlockData; } ActionBlock; typedef [flag(NDR_NOALIGN)] struct { @@ -1095,7 +1095,7 @@ typedef [public,flag(NDR_NOALIGN)] struct { uint16 cValues; - [flag(NDR_REMAINING)]mapi_SPropValue lpProps[cValues]; + [flag(NDR_REMAINING|NDR_NOALIGN)]mapi_SPropValue lpProps[cValues]; } mapi_SPropValue_array; typedef [flag(NDR_NOALIGN)] struct { @@ -1281,7 +1281,7 @@ // TODO: figure out if "layout" can go uint8 layout; // TODO: convert this to a proper structure - see if we already have one. - [flag(NDR_REMAINING)] DATA_BLOB prop_values; + [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB prop_values; } RecipientRow; typedef [flag(NDR_NOALIGN)] struct { @@ -1356,7 +1356,7 @@ typedef [flag(NDR_NOALIGN)] struct { uint8 layout; - [flag(NDR_REMAINING)] DATA_BLOB prop_data; + [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB prop_data; } GetProps_repl; /*************************/ @@ -1455,7 +1455,7 @@ typedef [flag(NDR_NOALIGN)]struct { uint32 idx; ulRecipClass RecipClass; - [subcontext(2),flag(NDR_REMAINING)] RecipientRow RecipientRow; + [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] RecipientRow RecipientRow; } ModifyRecipientRow; typedef [flag(NDR_NOALIGN)] struct { @@ -1532,7 +1532,7 @@ uint8 handle_idx; MSGFLAG_READ flags; /* TEMP HACK for editing notes without crashing Outlook: - [flag(NDR_REMAINING)] DATA_BLOB clientdata; */ + [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB clientdata; */ } SetMessageReadFlag_req; typedef [nodiscriminant, flag(NDR_NOALIGN)] union { @@ -1782,7 +1782,7 @@ typedef [nopush,nopull,flag(NDR_NOALIGN)] struct { uint8 Origin; uint16 RowCount; - [flag(NDR_REMAINING)]DATA_BLOB RowData; + [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB RowData; } QueryRows_repl; /**************************/ @@ -2394,13 +2394,13 @@ } ReadStream_req; typedef [flag(NDR_NOALIGN)] struct { - [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data; + [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data; } ReadStream_repl; /*************************/ /* EcDoRpc Function 0x2d */ typedef [flag(NDR_NOALIGN)] struct { - [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data; + [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data; } WriteStream_req; @@ -2900,7 +2900,7 @@ uint16 TotalStepCount; uint8 Reserved; uint16 TransferBufferSize; - [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer; + [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB TransferBuffer; } FastTransferSourceGetBuffer_repl; /**************************/ @@ -2982,7 +2982,7 @@ /* EcDoRpc Function 0x54 */ typedef [flag(NDR_NOALIGN)] struct { uint16 TransferBufferSize; - [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer; + [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB TransferBuffer; } FastTransferDestinationPutBuffer_req; typedef [flag(NDR_NOALIGN)] struct { @@ -3075,7 +3075,7 @@ typedef [flag(NDR_NOALIGN)] struct { uint32 ExpandedRowCount; uint16 RowCount; - [flag(NDR_REMAINING)]DATA_BLOB RowData; + [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB RowData; } ExpandRow_repl; /*************************/ @@ -3184,7 +3184,7 @@ typedef [flag(NDR_NOALIGN)] struct { boolean8 HasFinished; uint16 DataSize; - [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data; + [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data; } ReadPerUserInformation_repl; /*************************/ @@ -3194,7 +3194,7 @@ boolean8 HasFinished; uint32 DataOffset; uint16 DataSize; - [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data; + [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data; GUID ReplGuid; /* Note: ReplGuid gets only included under specific circumstances */ } WritePerUserInformation_req; @@ -3364,7 +3364,7 @@ SendOptions SendOptions; SynchronizationFlag SynchronizationFlag; uint16 RestrictionSize; - [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING)] DATA_BLOB RestrictionData; + [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB RestrictionData; SynchronizationExtraFlags SynchronizationExtraFlags; mapi_SPropTagArray PropertyTags; } SyncConfigure_req; @@ -3542,7 +3542,7 @@ } MessageReadState; typedef [flag(NDR_NOALIGN)] struct { - [subcontext(2),flag(NDR_REMAINING)] DATA_BLOB MessageReadStates; + [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB MessageReadStates; } SyncImportReadStateChanges_req; typedef [flag(NDR_NOALIGN)] struct { @@ -3617,7 +3617,7 @@ /*************************/ /* EcDoRpc Function 0x90 */ typedef [flag(NDR_NOALIGN)] struct { - [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data; + [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data; } WriteAndCommitStream_req; @@ -4462,7 +4462,7 @@ uint32 MajorVersion; uint32 MinorVersion; uint32 BuildNumber; - [subcontext(0), subcontext_size(132), flag(NDR_NOALIGN|NDR_REMAINING)] DATA_BLOB Reserved_1; + [subcontext(0), subcontext_size(132), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Reserved_1; uint16 ServicePackMajor; uint16 ServicePackMinor; uint32 Reserved_2; @@ -4567,7 +4567,7 @@ [out] uint16 rgwServerVersion[3], [out] uint16 rgwBestVersion[3], [in,out] uint32 *pulTimeStamp, - [in,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)] mapi2k7_AuxInfo *rgbAuxIn, + [in,subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] mapi2k7_AuxInfo *rgbAuxIn, [in] uint32 cbAuxIn, [out, length_is(*pcbAuxOut), size_is(*pcbAuxOut)] mapi2k7_AuxInfo *rgbAuxOut, [in,out][range(0,0x1008)] uint32 *pcbAuxOut @@ -4588,7 +4588,7 @@ typedef [public,nopull] struct { RPC_HEADER_EXT header; - [subcontext(0),flag(NDR_NOALIGN|NDR_REMAINING)] mapi_response *mapi_response; + [subcontext(0),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_response *mapi_response; } mapi2k7_response; [public,noprint] MAPISTATUS EcDoRpcExt2(