Re: midlc parse error

Michael B Allen <[email protected]>
Newsgroups gmane.network.samba.java
Message-ID <CAGMFw4i2tLYV1XXRdMN-j+K9uaYusNBe8p+aPnSRhCzkYL2kcw@mail.gmail.com>
On Sun, Sep 11, 2011 at 3:00 AM, Robert Doerr <[email protected]> wrote:
> Hello,
>
> I get some parse error when trying to compile the idl for the net
> shutdown command and am not sure if I did right.
> Here are my steps so far:
> - compiled midlc under cygwin
> - extracted three IDL-Files from [MS-RSP].pdf (download from microsoft):
> initshutdown.idl, windowsshutdown.idl winreg.idl
> - executed ./midlc<filename>  for all three files
>
> For each file I get a parse failure from midlc for line 4. This line
> looks like (example from windowsshutdown.idl):
>  [size_is(MaximumLength / 2), length_is((Length) / 2) ] unsigned short*
> Buffer;
> The corresponding lines in the other files look similar.
>
> midlc stops in parse.c on line 69 with the message "invalid attribute".
>
> What am I doing wrong?

Hi Robert,

Midlc only supports a subset of Microsoft IDL so copying and pasting
from Microsoft literature is almost certainly not going to work. You
will need to narrow down and isolate things a little. However in this
particular case I know for a fact midlc can handle that input. That
whole line is actually part of the definition for UNICODE_STRING which
is very common in JCIFS RPCs compiled with midlc. Look at
src/jcifs/dcerpc/rpc.idl and you will see a definition for
unicode_string with the same IDL in it.  Try copying that typedef and
replace the corresponding chunk of IDL with that unicode_string
definition. Study the various idl included with JCIFS in
src/jcifs/dcerpc/msrpc/*.idl to get a better idea of what midlc wants.
With a little work you should be able to get it to work no problem.

Mike

-- 
Michael B Allen
Java Active Directory Integration
http://www.ioplex.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.