From 48540940b6c28bb4378abfeb500ec45a625b37b6 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 15 May 2012 10:38:20 +0000 Subject: initial commit git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/MSN/Docs/gpl.txt | 340 +++ protocols/MSN/Docs/history-msn.txt | 529 +++++ protocols/MSN/Docs/readme-msn.txt | 125 + protocols/MSN/Docs/todo-msn.txt | 10 + protocols/MSN/Docs/translate-msn.txt | 169 ++ protocols/MSN/Icos/inbox.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/invite.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/list_al.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/list_bl.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/list_fl.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/list_ph.ico | Bin 0 -> 2038 bytes protocols/MSN/Icos/list_rl.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/msn.ico | Bin 0 -> 6830 bytes protocols/MSN/Icos/msnblock.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/netmeeting.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/profile.ico | Bin 0 -> 2550 bytes protocols/MSN/Icos/services.ico | Bin 0 -> 2550 bytes protocols/MSN/SDK/icftypes.h | 119 + protocols/MSN/SDK/m_assocmgr.h | 301 +++ protocols/MSN/SDK/m_folders.h | 282 +++ protocols/MSN/SDK/m_metacontacts.h | 166 ++ protocols/MSN/SDK/m_proto_listeningto.h | 144 ++ protocols/MSN/SDK/m_smileyadd.h | 252 +++ protocols/MSN/SDK/netfw.h | 3770 +++++++++++++++++++++++++++++++ protocols/MSN/des.c | 639 ++++++ protocols/MSN/des.h | 170 ++ protocols/MSN/ezxml.c | 967 ++++++++ protocols/MSN/ezxml.h | 165 ++ protocols/MSN/msn.cpp | 184 ++ protocols/MSN/msn.dep | 127 ++ protocols/MSN/msn.dsp | 444 ++++ protocols/MSN/msn.dsw | 33 + protocols/MSN/msn.mak | 1666 ++++++++++++++ protocols/MSN/msn.rc | 334 +++ protocols/MSN/msn.vcproj | 1130 +++++++++ protocols/MSN/msn_10.vcxproj | 558 +++++ protocols/MSN/msn_10.vcxproj.filters | 207 ++ protocols/MSN/msn_8.vcproj | 1407 ++++++++++++ protocols/MSN/msn_9.vcproj | 1195 ++++++++++ protocols/MSN/msn_auth.cpp | 557 +++++ protocols/MSN/msn_chat.cpp | 489 ++++ protocols/MSN/msn_commands.cpp | 1983 ++++++++++++++++ protocols/MSN/msn_contact.cpp | 273 +++ protocols/MSN/msn_errors.cpp | 91 + protocols/MSN/msn_ftold.cpp | 393 ++++ protocols/MSN/msn_global.h | 904 ++++++++ protocols/MSN/msn_http.cpp | 122 + protocols/MSN/msn_libstr.cpp | 455 ++++ protocols/MSN/msn_links.cpp | 171 ++ protocols/MSN/msn_lists.cpp | 726 ++++++ protocols/MSN/msn_mail.cpp | 433 ++++ protocols/MSN/msn_menu.cpp | 513 +++++ protocols/MSN/msn_mime.cpp | 532 +++++ protocols/MSN/msn_misc.cpp | 1500 ++++++++++++ protocols/MSN/msn_msgqueue.cpp | 204 ++ protocols/MSN/msn_msgsplit.cpp | 122 + protocols/MSN/msn_natdetect.cpp | 494 ++++ protocols/MSN/msn_opts.cpp | 785 +++++++ protocols/MSN/msn_p2p.cpp | 2494 ++++++++++++++++++++ protocols/MSN/msn_p2ps.cpp | 340 +++ protocols/MSN/msn_proto.cpp | 1262 +++++++++++ protocols/MSN/msn_proto.h | 604 +++++ protocols/MSN/msn_soapab.cpp | 1718 ++++++++++++++ protocols/MSN/msn_soapstore.cpp | 779 +++++++ protocols/MSN/msn_srv.cpp | 414 ++++ protocols/MSN/msn_ssl.cpp | 138 ++ protocols/MSN/msn_std.cpp | 227 ++ protocols/MSN/msn_svcs.cpp | 641 ++++++ protocols/MSN/msn_switchboard.cpp | 51 + protocols/MSN/msn_threads.cpp | 861 +++++++ protocols/MSN/msn_useropts.cpp | 77 + protocols/MSN/msn_ws.cpp | 178 ++ protocols/MSN/resource.h | 100 + protocols/MSN/resource.rc | 2 + protocols/MSN/version.h | 23 + protocols/MSN/version.rc | 36 + 76 files changed, 36125 insertions(+) create mode 100644 protocols/MSN/Docs/gpl.txt create mode 100644 protocols/MSN/Docs/history-msn.txt create mode 100644 protocols/MSN/Docs/readme-msn.txt create mode 100644 protocols/MSN/Docs/todo-msn.txt create mode 100644 protocols/MSN/Docs/translate-msn.txt create mode 100644 protocols/MSN/Icos/inbox.ico create mode 100644 protocols/MSN/Icos/invite.ico create mode 100644 protocols/MSN/Icos/list_al.ico create mode 100644 protocols/MSN/Icos/list_bl.ico create mode 100644 protocols/MSN/Icos/list_fl.ico create mode 100644 protocols/MSN/Icos/list_ph.ico create mode 100644 protocols/MSN/Icos/list_rl.ico create mode 100644 protocols/MSN/Icos/msn.ico create mode 100644 protocols/MSN/Icos/msnblock.ico create mode 100644 protocols/MSN/Icos/netmeeting.ico create mode 100644 protocols/MSN/Icos/profile.ico create mode 100644 protocols/MSN/Icos/services.ico create mode 100644 protocols/MSN/SDK/icftypes.h create mode 100644 protocols/MSN/SDK/m_assocmgr.h create mode 100644 protocols/MSN/SDK/m_folders.h create mode 100644 protocols/MSN/SDK/m_metacontacts.h create mode 100644 protocols/MSN/SDK/m_proto_listeningto.h create mode 100644 protocols/MSN/SDK/m_smileyadd.h create mode 100644 protocols/MSN/SDK/netfw.h create mode 100644 protocols/MSN/des.c create mode 100644 protocols/MSN/des.h create mode 100644 protocols/MSN/ezxml.c create mode 100644 protocols/MSN/ezxml.h create mode 100644 protocols/MSN/msn.cpp create mode 100644 protocols/MSN/msn.dep create mode 100644 protocols/MSN/msn.dsp create mode 100644 protocols/MSN/msn.dsw create mode 100644 protocols/MSN/msn.mak create mode 100644 protocols/MSN/msn.rc create mode 100644 protocols/MSN/msn.vcproj create mode 100644 protocols/MSN/msn_10.vcxproj create mode 100644 protocols/MSN/msn_10.vcxproj.filters create mode 100644 protocols/MSN/msn_8.vcproj create mode 100644 protocols/MSN/msn_9.vcproj create mode 100644 protocols/MSN/msn_auth.cpp create mode 100644 protocols/MSN/msn_chat.cpp create mode 100644 protocols/MSN/msn_commands.cpp create mode 100644 protocols/MSN/msn_contact.cpp create mode 100644 protocols/MSN/msn_errors.cpp create mode 100644 protocols/MSN/msn_ftold.cpp create mode 100644 protocols/MSN/msn_global.h create mode 100644 protocols/MSN/msn_http.cpp create mode 100644 protocols/MSN/msn_libstr.cpp create mode 100644 protocols/MSN/msn_links.cpp create mode 100644 protocols/MSN/msn_lists.cpp create mode 100644 protocols/MSN/msn_mail.cpp create mode 100644 protocols/MSN/msn_menu.cpp create mode 100644 protocols/MSN/msn_mime.cpp create mode 100644 protocols/MSN/msn_misc.cpp create mode 100644 protocols/MSN/msn_msgqueue.cpp create mode 100644 protocols/MSN/msn_msgsplit.cpp create mode 100644 protocols/MSN/msn_natdetect.cpp create mode 100644 protocols/MSN/msn_opts.cpp create mode 100644 protocols/MSN/msn_p2p.cpp create mode 100644 protocols/MSN/msn_p2ps.cpp create mode 100644 protocols/MSN/msn_proto.cpp create mode 100644 protocols/MSN/msn_proto.h create mode 100644 protocols/MSN/msn_soapab.cpp create mode 100644 protocols/MSN/msn_soapstore.cpp create mode 100644 protocols/MSN/msn_srv.cpp create mode 100644 protocols/MSN/msn_ssl.cpp create mode 100644 protocols/MSN/msn_std.cpp create mode 100644 protocols/MSN/msn_svcs.cpp create mode 100644 protocols/MSN/msn_switchboard.cpp create mode 100644 protocols/MSN/msn_threads.cpp create mode 100644 protocols/MSN/msn_useropts.cpp create mode 100644 protocols/MSN/msn_ws.cpp create mode 100644 protocols/MSN/resource.h create mode 100644 protocols/MSN/resource.rc create mode 100644 protocols/MSN/version.h create mode 100644 protocols/MSN/version.rc (limited to 'protocols/MSN') diff --git a/protocols/MSN/Docs/gpl.txt b/protocols/MSN/Docs/gpl.txt new file mode 100644 index 0000000000..45645b4b53 --- /dev/null +++ b/protocols/MSN/Docs/gpl.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/protocols/MSN/Docs/history-msn.txt b/protocols/MSN/Docs/history-msn.txt new file mode 100644 index 0000000000..b3f08ab339 --- /dev/null +++ b/protocols/MSN/Docs/history-msn.txt @@ -0,0 +1,529 @@ +Legend: +[+] added +[*] changed +[-] deleted +[!] bug fixed + +Version 0.7.1.0 +=============== +[+] All bitmap processing routines were removed in honour of the loadavatars plugin + +Version 0.7.0.1 +=============== +[+] IcoLib Integration + +Version 0.5.0.3 +=============== +[+] added support for custom smileys +[!] bug 0001996 fixed: No Contact Idetification When an Unsupport Feature Even Occurs + +Version 0.5.0.1 +=============== +[!] bug 0002083 fixed: Filetransfer suddenly stops +[!] bug 0002067 fixed: MSN connection fails in gateway mode through http-proxy (with authentication) +[!] bug 0001584 fixed: Crash when sender cancels file send + +Version 0.4.3.1 +=============== +[!] bug 0001887 fixed: Sometimes getting Error 540 from server then disconnect. +[!] fix for the invalid chars in the MSN chat + +Version 0.4.3.0 +=============== +[+] first Unicode version of the MSN plugin +[!] wish 0001015: nudges (thanks Tweetie for a patch) +[!] bug 0001532 fixed: Hotmail does not open from miranda +[!] bug 0001536 fixed: Contacts displayed as online while MSN isn't connected yet + +Version 0.4.1.3 +=============== +[+] support for dropping idle switchboards was added + +Version 0.4.1.2 +=============== +[+] Unicode in the nicknames and groups. Requires clistw & Miranda +0.4.3 bld. 32 or later +[*] avatar setting dialog was moved to View/Change User Details section +[!] fix for initial email notification in the MSNP11 mode +[!] fix for the "User is already in your contact list" error +[!] bug 0001427 fixed: Error 540 during login on slow connections +[!] bug 0001468 fixed: MSN 7.5 users cannot load Miranda users avatar. +[!] BYE command was handled incorrectly +[!] fix for the old MSN file transfers: a received file cannot be opened + +Version 0.4.1.1 +=============== +[!] fixed a bug when Miranda hangs up on exit, when the +clist_modern plugin is installed + +Version 0.4.0.4 +=============== +[!] important bugfix: MSNP11 status messages may block the login +process. +[!] fix for the problems with the keep-alive thread +[*] numerous minor changes and bugfixes. + +Version 0.4.0.3 +=============== +[+] MSNP11 support added +[+] wish #0001239 fixed: MSN Personal Status Messages +[+] WebMessenger detection added +[!] fix for the GPF on exit + +Version 0.4.0.2 +=============== +[!] bug #0000913 fixed: no zero-termination after _snprintf (potential +security issue) +[!] bug #0001176 fixed: can't send messages to the MSN WebMessenger +[!] bug #0001202 fixed: Can't delete received file directory +[!] various memory leaks + +Version 0.4.0.1 +=============== +[+] wish #0000971 fixed: Block & Unblock actions must be separated +[+] wish #0000966 fixed: to show the warning when a contact tries +to establish a audio/video/webcam conference with you. +[-] removed support for old versions of Miranda. +[!] bug #0000996 fixed: File transfer fails when auto-accept is on +and file already exists in destination directory +[!] fixes for minor string allocation problems. + +WARNING!!! All versions since this one require Miranda 0.4.x core. +This is required by the project admins. + +Version 0.1.7.11 +================ +[+] full support for server-side groups and contacts +[+] wish #0000142 fixed: a popup for session disconnection +[+] wish #0000149 fixed: CHAT.DLL support was added for groupchats (thanks noname) +[!] bug #0000458 fixed: Messages disappear when sending to MSN. +[!] bug #0000684 fixed: a file with the Unicode name fails to open after +the successful transfer. +[!] bug #0000761 fixed: apply button in options->popups->msn enabled on +first showing of page +[!] minor fix for P2P file transfers over NAT + +Version 0.1.7.10 +================ +[!] multiple bugfixes for gateways & P2P file transfers +[*] login rules were changed a bit: now Miranda assigns its own +proxy address to SSL connection when the 'Use IE proxy settings' +option is turned off. If you don't use a proxy, nothing gets +changed. +[!] bug #0000580 fixed: the large messages disappear being sent. +[!] bug #0000601 fixed: files with incorrect file names aren't +saved during P2P file transfers. +[!] bug #0000565 fixed: avatar file names becomes different after +using the dbtool, that's why the MSN folder may have the same +avatars several times. +[!] bug #0000437 fixed: expert must have an option to choose the +needed status translation schema for Away, BRB & N/A statuses. +[!] bug #0000541 fixed: if Miranda asks to overwrite a file +during the f/t, a crash can occur when user cancels it. +[*] translation file modification. + +Version 0.1.7.9a +================ +[!] bug #0000564 fixed: MSN Messenger doesn't confirm a file +transfer from Miranda when it goes via the server + +Version 0.1.7.9 +=============== +[+] wish #000519: the ability to create avatars from PNG images. +[+] contact's phone numbers support was added +[+] options dialog was changed to allow a user to see his own avatar. +[-] mSN protocol v.9 support code was removed +[!] option 'File Transfers -> If a file already exists -> Rename' +doesn't work for MSN P2P transfers. +[!] bug #0000092 fixed: 'User Is Typing' event delay is too slow. +[!] bug #0000423 fixed: Send Message To Offline User Return Message Time +Out message +[!] bug #0000444 fixed: the passive P2P transfer fails if MSN Messenger +returns bad IP address +[!] bug #0000554 fixed: fake Hotmail notifications are shown, even +when there's no new mail available +[*] translation file modification. + +Version 0.1.7.8 +=============== +[+] 'View MSN services status' menu item was added to the main menu +[+] Massive improvements for P2P file transfers + +Version 0.1.7.7 +=============== +[!] fixed some bugs with file transfer cancellation. +[*] minor changes in MSN object id handling. +[*] internal changes to the threading mechanism to make it more stable + +Version 0.1.7.6 +=============== +[+] the support for v10 P2P incoming passive direct connections was +added. DC are used when a sender reports the 'Direct-Connect' +connection type in the 'Conn-Type' request fiels. +[+] the support for newly added avatar notifications was added +(works only under 0.3.4+ core). +[+] the MSN/GetAvatarInformation service was added to support the +external avatar readers like tabSRMM etc. +[*] incoming file transfers now use the standard settings for +ports: via Options -> Network, MSN plugin connections. The existing +settings are transferred, but you can use port ranges now to +establish several transfers (one transfer for each contact) +[-] the 'Incoming port' setting was deleted from MSN network options. +[*] blocked contacts from the server lists aren't temporary anymore. +It also avoids the contact list flickering during login. +[!] bugfix (error #0000331): incoming file transfers seem to fail +being initiated from the MSN Messenger; +[!] bugfix (error #0000333): contacts aren't deleted from server when +you press Del key in the contact list + +Version 0.1.7.5 +=============== +[+] full avatars support added: you can set your own avatar +and transfer it to another people. +[!] bugfix for error 0000319: MSN server list manager shall not display +contacts of another protocols, groups also shouldn't be displayed. +[!] bugfix: MSN plugin adds a contact to CL during a search by e-mail. +[!] bugfix: massive fixes for authorization, both for v.9 and v.10 + +Version 0.1.7.4 +=============== +[+] server lists manager was added to Options -> Network +[!] bugfix for timeouts caused by User-Is-Typing notifications. +[!] bugfix (error #000305): MSN protocol freezes Miranda under +Windows 98/ME after login (many thanks to Hilary Cheng for a solution) + +Version 0.1.7.3 +=============== +[!] bugfix for file transfers: the incorrect address was used +during sending a file. +[+] added a 'View profile' contacts popup menu item (thanks koobs for an idea) +[*] numerous fixes for MSN v10. + +Version 0.1.7.2 +=============== +[!] bugfix (error #0000222): you can add yourself using Find/Add contacts. +[!] bugfix (error #0000123): Away and N/A modes are switched. +[!] bugfix: e-mail, password and nickname can't be saved into the +empty profile database. +[!] bugfix: Cancel button does not close the png2dib d/l dialog. + +Version 0.1.7.1 +=============== +[!] critical bugfix (err.#50): typing notification can result to +the infinite timeouts during message sending. + +Version 0.1.7.0 +=============== +[*] plugin lost its compatibility with Miranda 0.2.x due to stability +reasons, version 0.3.x is required. +[+] first version of MSN avatars (user-defined pictures). +[+] added an option to support avatars and d/l the DLL. +[*] PNG support was moved from IE components to libpng. +[+] added an option not to get the nickname from a server, to allow +a user to identify his/her location via a nick. +[!] fixed a problem with the lack of diagnostics on error 715. +[!] some minor bugfixes to file transfers. +[-] support for MSNP v.8 was removed. +[*] translation file was slightly modified. + +Version 0.1.6.8 +=============== +[!] rarely occurred GPF fixed during file transfers +[!] MSN gateway access without a proxy breaks connections +when 'user-is-typing' messages are transferred first. +[!] MSN server closes connection if a PNG command is send to +a switchboard thread +[!] PNG command is not send when a proxy exists. + +Version 0.1.6.7 +=============== +Official version for Miranda 0.3.3 release +[!] minor interface fixes in the options dialog. + +Version 0.1.6.6 (requires SRMM Unicode 1.0.1.3!!!) +=============== +[*] keep-alive support was redesigned to avoid threading problems +[!] bugfix: rare GPF fixed after reconnecting to the MSN server +[!] bugfix for all plugins like AwaySys for sending non-Unicode +messages. + +Version 0.1.6.5 +=============== +[!] bugfix: file receiving was broken. + +Version 0.1.6.4 +=============== +[*] gateway support redesigned to provide the gateway access +without both proxies and MSN Gateway plugin. +[!] a few minor memory leaks were fixed. +[*] minor interface changes in the options dialogs, translation +file was synchronized with the current options dialogs. + +Version 0.1.6.3 +=============== +[!] bugfix: if both built-in gateway and 'Keep connection alive' checkbox +are enabled, disconnection occurs every 2 minutes. +[!] bugfix: a blocked contact becomes unblocked after relogin, if it's +not deleted. + +Version 0.1.6.2 +=============== +[+] option "Use IE proxy settings" was added to simplify life for +users of the MSN Gateway plugin. +[*] options page was divided into two ones: general MSN options and +network options. +[!] bugfix: option 'Disable all contacts not included...' could not be changed +[!] bugfix: GPF sometimes occurred when starting an external mailer +(thanks Daniel for kind cooperation) + +Version 0.1.6.1 +=============== +[+] built-in gateway added (requires Miranda 0.3.3 or later) +[+] 'User is typing' support added (requires SRMM or SRMM MOD plugin) +[+] Full Unicode support for messages was added (requires SRMM MOD Unicode) +[+] MSN main menu item is created in the same section with all +another protocols +[*] 'block/unlock' feature is integrated with Options->Status->Visible +[!] bugfix: a port remains opened after the file trasnfer cancel. +[!] bugfix: if a contact list is very long, all contacts can be +shown in the Offline mode. +[!] a whole bunch of minor bugfixes, changes and improvements. + +Version 0.1.5.11 +================ +[+] Netmeeting support added +[-] MSNP7 support is deleted and this option is locked +[+] option was added to launch a specific program when the new +Hotmail arrives. +[+] option was added to display errors as popups to avoid the +interface locking. +[*] additional diagnostics was added to handle the case when +Internet Explorer is in the Offline mode (thanks to Jonas Svensson). +[*] numerous minor changes in option dialogs and debug messages. + +Version 0.1.5.10 +================ +[!] bug fixed: the "Use MSN protocol v.8" option is not saved +correctly after pressing Apply/Ok in the options dialog if this +option was never saved in the database before. +[*] the source code was changed to allow the compilation without +the Platform SDK. + +Version 0.1.5.9 +=============== +[!] bug in new URL encode mechanism prevents messages from being sent +if the contact's email contains underscores. + +Version 0.1.5.8 +=============== +[+] new MSN Menu item was added to edit user's MSN profile in a browser +[!] bug fixed: authorization problems when many MSN accounts are +used in the same Miranda installation. +[!] bug fixed: if a password contains non-alphabetical characters +(like punctuation, ampersand, plus, etc) the MSNP8 login could return +error 401 Unauthorized. MSNP7 login works Ok. +[!] bug fixed: if a contact changes its status to Invisible, it's +not possible to send messages to him/her anymore. +[*] the popup displaying procedure was changed to avoid so called +'frozen popups'effect. +[*] the "Use MSN protocol v.8" option is now turned on by default. + +Version 0.1.5.7 +=============== +[*] the SSL autorization procedure was changed: now it uses +Internet Explorer's proxy settings to log in. It also resolves +problems with proxies that require authorization (previously you +could see the error 407 in the network log when trying to logon). +In this case MSN plugin tries automatically to apply the login and +the password from the Options -> Network -> MSN. +[*] cookies usage had been turned off, it means that you can logon +automatically into MSN Messenger and simultaneously logon using +Miranda under different account. +[*] error diagnostic has been slightly enhanced. +[*] WinInet.dll now gets unloaded from memory after login to use +less memory. +[!] bug fixed: attemp to find/add a contact that already exists in +your contact list resulted to strange error message. + +Version 0.1.5.6 +=============== +[+] added the external IP autodetection if the protocol v.8 is +used. It can significantly simplify life if you have the dynamic +external IP address. +[*] minor fixes in the Options dialog + +Version 0.1.5.5 +=============== +[!] bug fixed: 'Cancel' button does not stop the file transfer +[!] bug fixed: contacts with leading digits in the e-mail are not +processed properly. +[!] bug fixed: you cannot send messages to a person if you tried to +send the first message in the Invisible mode. + +Version 0.1.5.4 +=============== +[*] the file senging does not require to talk anymore +[!] bug fixed: fast sending of two or more messages results to the GPF + +Version 0.1.5.3 +=============== +[!] bug fixed: memory corruption in multichat mode + +Version 0.1.5.2 +=============== +[!] bug fixed: LastSeen plugin shows the incorrect time of contact's logout. +[!] bug fixed: you cannot block a contact if it's offline (even if you're online). +[!] bug fixed: when MSNP8 is used, some contacts are skipped at all during +the synchronization procedure. + +Version 0.1.5.1 +=============== +[!] bug fixed: 'Display menu' option does not really disable the MSN menu +[*] translate-msn.txt updated. +[+] minor changes in the options dialog + +Version 0.1.5.0 +=============== +[+] MSN Protocol v.8 support added. +[+] a "Invite to chat" contact menu item is added. +[*] multichat support is fully redesigned and fixed. +[*] multiple file transfers are fully redesigned and fixed. +[!] bug fixed: when you set your own nickname with spaces, it appears in +the options dialog URL-encoded (with %20 instead of a space char). +[!] bug fixed: opened switchboard sessions weren't closed when you go +offline without closing Miranda. + +Version 0.1.4.12 +================ +[!] bug fixed: Hotmail inbox is not shown after a clicking on a Hotmail +popup under Windows 9x +[!] bug fixed: a user's own nickname is not properly saved after changing. + +Version 0.1.4.11 +================ +[*] changed blocked user visualization method: nickname is never got +corrupted anymore, visibility mode is used now. M will show blocked +contacts in italic by default, but you can tune the font/color/style of +the 'invisible' users at the Options/Contact List/List text tab, for item +called "Online contacts for whom you have a different visibility". +[!] bug fixed: an authorization is rerequested after deleting a contact. +[!] bug fixed: the very long nickname can be set, and then cut off when +saving to the database or the server +[!] bug fixed: when viewing the user options, an 'Updating...' string is +blinking all the time. + +Version 0.1.4.10 +================ +[+] option added to block all another MSN contacts. Attention: you +must be online to edit this option. +[!] search-by-email mechanism fixed. +[!] bug fixed: user email is shown in popups instead of nickname +[!] bug fixed: when migrating from previous versions of MSN plugin +a lot of authorization requests are shown. + +Version 0.1.4.9 (May Day Build :) +=============== +[!] bug fixed: "First message delivered" displayed as a message +box if the Popup plugin is not installed. +[!] bug fixed: contact's e-mail is shown instead of a user's +nick name when "First message delivered" popup is shown + +Version 0.1.4.8 +=============== +[!] bug fixed: the first message get lost when another message +editor window is opened. +[+] "First message delivered" popup can be enabled separately. + +Version 0.1.4.7 +=============== +[+] separate timeout for Hotmail popups added +[*] options layout changed: all popup options are grouped on the +separate options page: Options/Popups/MSN. +[!] bug fixed: Hotmail popups got 'frozen' after being clicked + +Version 0.1.4.6 +=============== +[!] bug fixed: offline messages are get lost without notification + +Version 0.1.4.5 +=============== +[*] first message sending routine is changed to release message editor immediately. +This does not fix the delay problem completely, but user will never see the timeout +dialog again. If the Popup plugin is installed, user will be notified using a popup +message when the first message will be really delivered. +[!] bugfix: when you go offline from the online mode, both modes are disabled in +the plugin's statuses menu. +[!] minor interface bugfixes in the options dialog + +Version 0.1.4.4 +=============== +MSN plugin is added as a protocol to the Miranda's sources CVS tree. +[!] fixed a problem with sending raw data to the HTTP proxy. +[+] new option: popup timeouts. Requires Popup plugin v. 1.0.1.9 or later +[*] popups interface changed not to call Web browser when 'typing' popups are clicked +[*] FAQ is added to the readme.txt + +Version 0.1.4.3 +=============== +[+] new option: display 'user is typing' messages as popups if an appropriate plugin is installed +[+] new option: send a font color/style alongside with messages. This +option also fixes a problem with displaying messages in the standard +Windows Messenger using an ugly/incorrect font/size/style. +[!] fixed a memory leak when calling popups. + +Version 0.1.4.2 +=============== + +A couple of bugfixes from Pixador (thank him for a patch): +[!] multiple MSN plugins do not work together. +[!] GPF when user presses Block/Unblock several times; + +Version 0.1.4.1 +=============== + +Numerous bugfixes: +[!] file sending/receiving almost works now, excluding multi-file sending from Miranda to WM. +[!] a lot of memory leaks, double deletions, memory corruptions etc. fixed. + +Version 0.1.4.0 +=============== + +Entering next major release: +[+] proxy support added; +[+] network traffic logging added; +[!] fixed bug with 100% processor usage; +[!] fixed bug with displaying incorrect file names in the file accept dialog. + +Version 0.1.3.4 +=============== + +[*] code of Authorization/Deny changed to show an authorization request only once; +[!] memory corruption fixed; +[!] GPF with blocking/unblocking fixed. + +Version 0.1.3.3 +=============== + +[*] language of plugin is changed to C++; +[!] bug with offline authorization fixed; + +Version 0.1.3.0 +=============== + +[!] fixed a bug with GPF on exit; +[!] fixed a bug with contacts blocking/unblocking; +[!] fixed a bug with strange crashes time to time; +[!] fixed a memory leak; +[!] fixed the ANSI <-> UTF conversion scheme to avoid problems with old versions of Windows (like 95 OSR2). + +Version 0.1.2.1 +=============== + +Written by Rako Shizuka. +The second version with extended functionality: file transfers, blocking etc. + +Version 0.1.2.0 +=============== + +Written by Richard Hughes aka cyreve. +The first version with basic functionality diff --git a/protocols/MSN/Docs/readme-msn.txt b/protocols/MSN/Docs/readme-msn.txt new file mode 100644 index 0000000000..8c0a035958 --- /dev/null +++ b/protocols/MSN/Docs/readme-msn.txt @@ -0,0 +1,125 @@ +Protocol for the Miranda IM for communicating with users of +the MSN Messenger protocol. + +Copyright (C) 2003-5 George Hazan (ghazan@postman.ru) +Copyright (C) 2001-3 Richard Hughes (original version), + +Miranda IM: the free icq client for MS Windows +Copyright (C) 2002-5 Martin Oberg, Robert Rainwater, Sam Kothari, Lyon Lim +Copyright (C) 2000-2 Richard Hughes, Roland Rabien & Tristan Van de Vreede + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +================================================================================ +Useful plugins which can help you to work with the MSN protocol +================================================================================ + +Popup 1.0.1.9 +(http://miranda-im.org/download/details.php?action=viewfile&id=299) +Popup Plus 2.0.3.8 +(http://miranda-im.org/download/details.php?action=viewfile&id=1170) +---------------------- +All notifications in the MSN plugin are made using the Popup +plugin. After the Popup plugin installation there will be some +options available for tuning, you will find them in +Options/Popups/MSN tab. + +Chat 0.2.0.2 +(http://miranda-im.org/download/details.php?action=viewfile&id=1309) +---------------------- +This plugin allows you to support group chats with many MSN users. Without +that plugin you can't leave a chat been being invited, so if you plan to +use groupchats, this plugin is essential. + +SRMM (Unicode) 1.0.4.3 +(http://miranda-im.org/download/details.php?action=viewfile&id=1136) +tabSRMM (Unicode) 0.9.9.95 +(http://hell.at.eu.org/forums) +---------------------- +They both are true Unicode-aware message editors. Using them you can +send/receive Unicode messages, so you won't be dependent on the +codepages, encodings etc. They work only under NT4/Win2k/XP/2003. + +Unicode History Viewer +(http://miranda-im.org/download/details.php?action=viewfile&id=1109) +---------------------- +If you work under NT4/Win2k/XP/2003, and you can send/receive messages +in Unicode, the standard history viewer will show question-marks when +Unicode characters cannot be mapped to the current codepage. In this +case you can use this plugin to have no problems at all. + +================================================================================ +Frequently asked questions. +================================================================================ + +Q1. I want to use the OpenSSL libraries, but plugin can't find or load +them. Where can I find the valid DLLs for Win32? + +A1. http://www.slproweb.com/products/Win32OpenSSL.html +Use the latest stable version. + +---------------------------------------------------------------- + +Q2. I get strange errors with connection, proxies, file sending/ +receiving. How can I find the reason of the problem? + +A2. Some useful information is grouped in the networking-msn.txt. +If it does not help, try to create a network log. Go to +Options/Network and press a "Log Options" button (the only button +in the upper-right corner). Very often this log helps users to +find a hidden diagnostic messages, or simply understand what is +happening concretely. If a problem persists, you can contact me, +and upon request, send me (zipped!) a piece of this log. + +---------------------------------------------------------------- + +Q3. My Miranda logged into the MSN network successfully, but I +cannot send a message, and a contact's menu item 'Message' is blocked. + +A3. The problem is in the Conversation Style Messaging plugin. +CSM plugin is incompatible with the MSN plugin because of the +error in it. Disable it and/or delete, if you want to use the MSN +protocol + +---------------------------------------------------------------- + +Q4. I want to compile your sources, but got a lot of errors. + +A4. First, you should download new Miranda's SDK sources, and +place the MSN plugin's sources into Protocol\MSN subdirectory +(accordingly to the Miranda's directory tree). Notice that MSN is +not a plugin anymore, it's stored among another protocols. Look at +http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/miranda-icq to +view the complete directory structure. + +Then download the Popup plugin, and unzip header file m_popup.h +to the SDK\headers_c directory. Then you should be able to compile +MSN plugin without problems. + +Installation of Microsoft Platform SDK is not required to +compile MSN plugin sources + +---------------------------------------------------------------- + +Q5. When I receive an authorization request, my own nickname is +shown in the contact list. Is it a bug? + +A5. Yes, it is, but it cannot be solved now. Miranda uses UINs +to identify a contact, but because MSN protocol have no UINs, +your own nickname (as a default one) is shown. + +---------------------------------------------------------------- + +WMBR, George Hazan (ghazan@postman.ru). diff --git a/protocols/MSN/Docs/todo-msn.txt b/protocols/MSN/Docs/todo-msn.txt new file mode 100644 index 0000000000..627c0ae56b --- /dev/null +++ b/protocols/MSN/Docs/todo-msn.txt @@ -0,0 +1,10 @@ +There're most important problems and known bugs: + +1. File transfers: +- problems with the multihomed machines. +- better diagnostics. + +If you know a problem that is not listed here, report it via e-mail. + +WMBR, George Hazan +ghazan@postman.ru diff --git a/protocols/MSN/Docs/translate-msn.txt b/protocols/MSN/Docs/translate-msn.txt new file mode 100644 index 0000000000..f711e8e955 --- /dev/null +++ b/protocols/MSN/Docs/translate-msn.txt @@ -0,0 +1,169 @@ +; MSN 0.1.7.9 translation strings + +[MSN Protocol] +[%s plugin connections] +[Hotmail] +[Hotmail Notify] +[Hotmail from %s] +[Hotmail from %s (%s)] +[A new mail has come from %s (title: %s).] +[A new mail has come from %s (%s) (title: %s).] +[Subject: %s] +[Unread mail is available: %d messages (%d junk e-mails).] +[Test: Arrival Hotmail] +[A New Hotmail has come!] +[Contact left channel] + +; Messages + +[%s (%s) has joined the chat with %s] +[First message delivered] +[typing...] + +; Menus + +[&Block] +[&Unblock] +[Display Hotmail &Inbox] +[&Invite to chat] +[Set &Nickname] +[Edit MSN &Profile] +[&Start Netmeeting] +[Set &Avatar] +[View MSN Services &Status] +[&View Profile] + + +; Errors + +[Attempt to make the SSL connection resulted to error %d: %s.] +[Cannot start the file transfer: no free sockets. Error %d: %s.] +[Cannot start the file transfer due to the lack of free sockets.] +[Cannot start the file transfer: cannot listen on a socket. Error %d: %s.] +[Contact tried to send its webcam data (currently not supported)] +[Contact tried to view our webcam data (currently not supported)] +[Contact tried to open an audio conference (currently not supported)] +[file transfer is canceled by remote host] +[file transfer: time out occurred] +[Internet Explorer is in the 'Offline' mode. Switch IE to the 'Online' mode and then try to relogin] +[MSN plugin cannot add a new contact because the contact list is full] +[MSN protocol allows only one file to be sent at a time] +[MSN protocol does not allow you to communicate with others when you are invisible] +[MSN protocol does not support offline messages] +[MSN Services are temporarily unavailable, please try to connect later] +[Message is too long: MSN messages are limited by 1202 UTF8 chars] +[Server has requested an unknown protocol set (%s)] +[Unknown or invalid host name was specified (%s). Error %d: %s] +[Unprocessed error: %s] +[Unrecognised error %d. The server has closed our connection] +[User is already in your contact list] +[You must be talking to start Netmeeting] +[You must specify your e-mail in Options/Network/MSN] +[Your username or password is incorrect] +[Your MSN account e-mail is unverified. Goto http://www.passport.com and verify the primary e-mail first] + +; Options dialog + +[Network] +[PopUps] +[E-mail address] + +[Full e-mail:] +[Password:] +[Nickname:] +[Create a new MSN messenger account using the MSN website] +[Expert] +[Use MSN protocol v.8] +[Disable main menu] +[Send message font color/size info inside messages] +[Disable all contacts not included into my contact list] +[Enable avatars support] +[Manage server groups] +[Treat Away status as 'Be Right Back'] +[Never update your nickname from server] +[Run the following application when new Hotmail arrives] +[Server groups import may change your contact list layout after next login. Do you want to upload your groups to the server?] + +; Network options dialog + +[Connection settings] +[Login server:] +[Port:] +[Use HTTP gateway mode (incompatible with MSN Gateway plugin)] +[Use IE proxy settings] +[Keep connection alive (send a ping packet every minute)] +[Notify me when a message delivery has failed] +[Use MSN Messenger 7 protocol] +[Use OpenSSL encryption (requires LIBSSL32.DLL)] + +[Incoming file transfers] +[Automatically obtain host/port for incoming file transfers] +[Your host (or router):] +[Reset] +[The changes you have made require you to reconnect to the MSN Messenger network before they take effect] +[The changes you have made require you to restart Miranda IM before they take effect] + + +; Popup options dialog + +[Colours] +[Background colour] +[Text colour] +[&Use Windows colours] +[Disable receiving Hotmail notifications] +[Ignore new messages in 'Junk Mail' folder only (at startup)] +[Timeout (*)] +[Previe&w] +[Other] +[Display popups when user is typing] +[Enable 'First message delivered' popup] +[(*) Timeouts require Popup v. 1.0.1.9 or later] +[Display errors using popups] + +; pnd2dib download dialog + +[png2lib download] +[To enable the avatar support, you must obtain the valid copy of the +png2dib.dll. Choose one of the following:] +[[Install] - install a png2lib plugin using Miranda Installer] +[[Download] - manually download a zipped DLL and then unzip it to the +plugins folder] +[[Cancel] - disable the avatar support] + + +; Server list manager + +[Server Lists] +[Server List Manager] +[Contact is included into your server list] +[Somebody included you in his/her server list] +[Allowed (active) contact] +[Blocked contact] + +; chat window +[Me] +[Others] + +; chat log message +[This conversation has been inactive, participants will be removed.] +[To resume the conversation, please quit this session and start a new chat session.] + +; contact list and chat title +[MSN Chat #] + +; message box +[There is only 1 person left in the chat, do you want to switch back to standard message window?] +[User is already in the chat session.] +[No active chat session is found.] + +; menus +[User &details] +[User &history] +[&Leave chat session] +[&Invite user...] + +; options dialog +[Avatar] +[Running on a mobile device] +[Running on a MSN mobile device] +[Using MSN Webmessenger] diff --git a/protocols/MSN/Icos/inbox.ico b/protocols/MSN/Icos/inbox.ico new file mode 100644 index 0000000000..e101d8550e Binary files /dev/null and b/protocols/MSN/Icos/inbox.ico differ diff --git a/protocols/MSN/Icos/invite.ico b/protocols/MSN/Icos/invite.ico new file mode 100644 index 0000000000..94c37db75e Binary files /dev/null and b/protocols/MSN/Icos/invite.ico differ diff --git a/protocols/MSN/Icos/list_al.ico b/protocols/MSN/Icos/list_al.ico new file mode 100644 index 0000000000..3ac6fb073d Binary files /dev/null and b/protocols/MSN/Icos/list_al.ico differ diff --git a/protocols/MSN/Icos/list_bl.ico b/protocols/MSN/Icos/list_bl.ico new file mode 100644 index 0000000000..fefdefd97e Binary files /dev/null and b/protocols/MSN/Icos/list_bl.ico differ diff --git a/protocols/MSN/Icos/list_fl.ico b/protocols/MSN/Icos/list_fl.ico new file mode 100644 index 0000000000..ad34437946 Binary files /dev/null and b/protocols/MSN/Icos/list_fl.ico differ diff --git a/protocols/MSN/Icos/list_ph.ico b/protocols/MSN/Icos/list_ph.ico new file mode 100644 index 0000000000..b28e2a2bed Binary files /dev/null and b/protocols/MSN/Icos/list_ph.ico differ diff --git a/protocols/MSN/Icos/list_rl.ico b/protocols/MSN/Icos/list_rl.ico new file mode 100644 index 0000000000..704b802c62 Binary files /dev/null and b/protocols/MSN/Icos/list_rl.ico differ diff --git a/protocols/MSN/Icos/msn.ico b/protocols/MSN/Icos/msn.ico new file mode 100644 index 0000000000..a8534a836e Binary files /dev/null and b/protocols/MSN/Icos/msn.ico differ diff --git a/protocols/MSN/Icos/msnblock.ico b/protocols/MSN/Icos/msnblock.ico new file mode 100644 index 0000000000..6f59309853 Binary files /dev/null and b/protocols/MSN/Icos/msnblock.ico differ diff --git a/protocols/MSN/Icos/netmeeting.ico b/protocols/MSN/Icos/netmeeting.ico new file mode 100644 index 0000000000..bd771e38d8 Binary files /dev/null and b/protocols/MSN/Icos/netmeeting.ico differ diff --git a/protocols/MSN/Icos/profile.ico b/protocols/MSN/Icos/profile.ico new file mode 100644 index 0000000000..715b7a1bec Binary files /dev/null and b/protocols/MSN/Icos/profile.ico differ diff --git a/protocols/MSN/Icos/services.ico b/protocols/MSN/Icos/services.ico new file mode 100644 index 0000000000..bd6f8e0f2c Binary files /dev/null and b/protocols/MSN/Icos/services.ico differ diff --git a/protocols/MSN/SDK/icftypes.h b/protocols/MSN/SDK/icftypes.h new file mode 100644 index 0000000000..d2b30b2cb1 --- /dev/null +++ b/protocols/MSN/SDK/icftypes.h @@ -0,0 +1,119 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 6.00.0366 */ +/* Compiler settings for icftypes.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#if defined(_MSC_VER) +#pragma warning( disable: 4049 ) /* more than 64k source lines */ +#endif + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + + +#ifndef __icftypes_h__ +#define __icftypes_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +/* header files for imported files */ +#include "wtypes.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_icftypes_0000 */ +/* [local] */ + +typedef +enum NET_FW_POLICY_TYPE_ + { NET_FW_POLICY_GROUP = 0, + NET_FW_POLICY_LOCAL = NET_FW_POLICY_GROUP + 1, + NET_FW_POLICY_EFFECTIVE = NET_FW_POLICY_LOCAL + 1, + NET_FW_POLICY_TYPE_MAX = NET_FW_POLICY_EFFECTIVE + 1 + } NET_FW_POLICY_TYPE; + +typedef +enum NET_FW_PROFILE_TYPE_ + { NET_FW_PROFILE_DOMAIN = 0, + NET_FW_PROFILE_STANDARD = NET_FW_PROFILE_DOMAIN + 1, + NET_FW_PROFILE_CURRENT = NET_FW_PROFILE_STANDARD + 1, + NET_FW_PROFILE_TYPE_MAX = NET_FW_PROFILE_CURRENT + 1 + } NET_FW_PROFILE_TYPE; + +typedef +enum NET_FW_IP_VERSION_ + { NET_FW_IP_VERSION_V4 = 0, + NET_FW_IP_VERSION_V6 = NET_FW_IP_VERSION_V4 + 1, + NET_FW_IP_VERSION_ANY = NET_FW_IP_VERSION_V6 + 1, + NET_FW_IP_VERSION_MAX = NET_FW_IP_VERSION_ANY + 1 + } NET_FW_IP_VERSION; + +typedef +enum NET_FW_SCOPE_ + { NET_FW_SCOPE_ALL = 0, + NET_FW_SCOPE_LOCAL_SUBNET = NET_FW_SCOPE_ALL + 1, + NET_FW_SCOPE_CUSTOM = NET_FW_SCOPE_LOCAL_SUBNET + 1, + NET_FW_SCOPE_MAX = NET_FW_SCOPE_CUSTOM + 1 + } NET_FW_SCOPE; + +typedef +enum NET_FW_IP_PROTOCOL_ + { NET_FW_IP_PROTOCOL_TCP = 6, + NET_FW_IP_PROTOCOL_UDP = 17 + } NET_FW_IP_PROTOCOL; + +typedef +enum NET_FW_SERVICE_TYPE_ + { NET_FW_SERVICE_FILE_AND_PRINT = 0, + NET_FW_SERVICE_UPNP = NET_FW_SERVICE_FILE_AND_PRINT + 1, + NET_FW_SERVICE_REMOTE_DESKTOP = NET_FW_SERVICE_UPNP + 1, + NET_FW_SERVICE_NONE = NET_FW_SERVICE_REMOTE_DESKTOP + 1, + NET_FW_SERVICE_TYPE_MAX = NET_FW_SERVICE_NONE + 1 + } NET_FW_SERVICE_TYPE; + + + +extern RPC_IF_HANDLE __MIDL_itf_icftypes_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_icftypes_0000_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/protocols/MSN/SDK/m_assocmgr.h b/protocols/MSN/SDK/m_assocmgr.h new file mode 100644 index 0000000000..4e15168643 --- /dev/null +++ b/protocols/MSN/SDK/m_assocmgr.h @@ -0,0 +1,301 @@ +/* + +'File Association Manager'-Plugin for +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright (C) 2005-2007 H. Herkenrath + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program (AssocMgr-License.txt); if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef M_ASSOCMGR_H__ +#define M_ASSOCMGR_H__ + +#if defined (_MSC_VER) && (_MSC_VER >= 1020) + #pragma once +#endif + +#if !defined(_TCHAR_DEFINED) + #include +#endif + +#if defined(_MSC_VER) +#pragma warning(push) /* save warning settings */ +#pragma warning(disable:4201) /* nonstandard extension used : nameless struct/union */ +#endif + +/* + File Association Manager v0.1.1.0 +*/ + +/* interface id */ +#if !defined(MIID_ASSOCMGR) + #define MIID_ASSOCMGR {0xa05b56c0,0xcf7b,0x4389,{0xa1,0xe9,0xf1,0x3d,0xb9,0x36,0xe,0xf1}} +#endif +#if !defined(MIID_AUTORUN) + #define MIID_AUTORUN {0xeb0465e2,0xceee,0x11db,{0x83,0xef,0xc1,0xbf,0x55,0xd8,0x95,0x93}} +#endif + +/* Add a new file type v0.1.0.0+ +Add a new file type to be registered with Windows. +You probably want to call this event when +ME_SYSTEM_MODULESLOADED is fired. + wParam=0 + lParam=(LPARAM)(FILETYPEDESC*)ftd +Returns 0 on success, nonzero otherwise. +*/ +#define MS_ASSOCMGR_ADDNEWFILETYPE "AssocMgr/AddNewFileType" + +typedef struct { + int cbSize; // set to sizeof(FILETYPEDESC), in bytes + union { + const char *pszDescription; // description for options dialog and in registry. + const TCHAR *ptszDescription; // please Translate(), use singular form here. + const WCHAR *pwszDescription; + }; + HINSTANCE hInstance; // instance of the calling module and where the icon + // resource is located. + // always be sure you set this to your own hInstance even if + // you use the generic default icon + + UINT nIconResID; // resource id of an icon to use for the file type. + // this icon should contain icons of all sizes and color depths + // needed by Windows. + // set this to 0 to use the generic 'miranda file' icon + // provided by assocmgr. + + const char *pszService; // service to call when a file is opened + // this service will be called with lParam set to + // the file name being opened including path. + // it can be assumed that the provided file name + // is always the long path name. + // return zero on suceess, nonzero on error. + // Note: set this to NULL to pass the file name as + // commandline argument to miranda32.exe (db file). + + DWORD flags; // see FTDF_* flags below + + const char *pszFileExt; // file extension, e.g. ".ext" + // first character must be a dot, assumed to be all lower case. + // may only consist of ascii characters. + + const char *pszMimeType; // MIME type of the file, e.g. "application/x-icq" + // may only consist of ascii characters. + union { + const char *pszVerbDesc; // description for the open verb e.g. "&Install". + const TCHAR *ptszVerbDesc; // set this to NULL to use the default description. + const WCHAR *pwszVerbDesc; // include an ampersand (&) character for a mnemonic key. + }; // please Translate(). +} FILETYPEDESC; + +#define FTDF_UNICODE 0x0001 // pszDescription and pszVerbDesc in struct are Unicode. + // the specified service is called with Unicode parameters. + +#define FTDF_DEFAULTDISABLED 0x0002 // file type is not registered by default, it needs to be + // enabled explicitly on the options page. + +#define FTDF_BROWSERAUTOOPEN 0x0004 // tells the browser to download and open the file directly + // without prompt (currently IE and Opera6+) - be careful! + // use only in conjunction with pszMimeType set. + // this tells Windows that open can be safely invoked for + // downloaded files. + // Note that this flag may create a security risk, + // because downloaded files could contain malicious content. + // you need to protect against such an exploit. + +#define FTDF_ISTEXT 0x0008 // tells Windows that this file can be opened + // as a text file using e.g Notepad. + // only has an effect on Windows XP and higher. + +#define FTDF_ISSHORTCUT 0x0010 // file type behaves as shortcut, this means a + // small overlay arrow is applied and the extension is never shown + +#if defined(_UNICODE) + #define FTDF_TCHAR FTDF_UNICODE // strings in struct are WCHAR*, service accepts WCHAR* +#else + #define FTDF_TCHAR 0 // strings in struct are char*, service accepts char* +#endif + +#if !defined(ASSOCMGR_NOHELPERFUNCTIONS) +__inline static int AssocMgr_AddNewFileType(const char *ext,const char *mime,const char *desc,const char *verb,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags) +{ + FILETYPEDESC ftd; + ftd.cbSize=sizeof(FILETYPEDESC); + ftd.pszFileExt=ext; + ftd.pszMimeType=mime; + ftd.pszDescription=desc; + ftd.pszVerbDesc=verb; + ftd.hInstance=hinst; + ftd.nIconResID=iconid; + ftd.pszService=service; + ftd.flags=flags&~FTDF_UNICODE; + return CallService(MS_ASSOCMGR_ADDNEWFILETYPE,0,(LPARAM)&ftd); +} +__inline static int AssocMgr_AddNewFileTypeW(const char *ext,const char *mime,const WCHAR *desc,const WCHAR *verb,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags) +{ + FILETYPEDESC ftd; + ftd.cbSize=sizeof(FILETYPEDESC); + ftd.pszFileExt=ext; + ftd.pszMimeType=mime; + ftd.pwszDescription=desc; + ftd.pwszVerbDesc=verb; + ftd.hInstance=hinst; + ftd.nIconResID=iconid; + ftd.pszService=service; + ftd.flags=flags|FTDF_UNICODE; + return CallService(MS_ASSOCMGR_ADDNEWFILETYPE,0,(LPARAM)&ftd); +} +#if defined(_UNICODE) + #define AssocMgr_AddNewFileTypeT AssocMgr_AddNewFileTypeW +#else + #define AssocMgr_AddNewFileTypeT AssocMgr_AddNewFileType +#endif +#endif + +/* Remove a file type v0.1.0.0+ +Remove a file type registered previously using +MS_ASSOCMGR_ADDNEWFILETYPE. +This removes all settings in database and in registry +associated with the file type. + wParam=0 + lParam=(WPARAM)(char*)pszFileExt +Returns 0 on success, nonzero otherwise. +*/ +#define MS_ASSOCMGR_REMOVEFILETYPE "AssocMgr/RemoveFileType" + +/* Add a new url protocol type v0.1.0.0+ +Add a new url type to be registered with Windows. +You probably want to call this event when +ME_SYSTEM_MODULESLOADED is fired. + wParam=0 + lParam=(LPARAM)(URLTYPEDESC*)utd +Returns 0 on success, nonzero otherwise. +*/ +#define MS_ASSOCMGR_ADDNEWURLTYPE "AssocMgr/AddNewUrlType" + +typedef struct { + int cbSize; // set to sizeof(URLTYPEDESC), in bytes + union { + const char *pszDescription; // description for options dialog and in registry. + const TCHAR *ptszDescription; // please Translate(), use singular form here. + const WCHAR *pwszDescription; + }; + HINSTANCE hInstance; // instance of the calling module and where the icon + // resource is located. + // always be sure you set this to your own hInstance even if + // you use the generic default icon + + UINT nIconResID; // resource id of an icon to use for the url type. + // only a small one (16x16) is needed by Windows, + // e.g. proto icon as used in Miranda. + // set this to 0 to use the default miranda icon. + + const char *pszService; // service to call when a url is opened (can't be NULL) + // this service will be called with lParam set to + // the url being opened including the prefix. + // return zero on suceess, nonzero on error. + + DWORD flags; // see UTDF_* flags below + + const char *pszProtoPrefix; // protocol prefix, e.g. "http:" + // last character must be a colon, assumed to be all lower case. + // may only consist of ascii characters. +} URLTYPEDESC; + +#define UTDF_UNICODE 0x0001 // pszDescription in struct is Unicode. + // the specified service is called with Unicode parameters. + +#define UTDF_DEFAULTDISABLED 0x0002 // url type is not registered by default, it needs to be + // enabled explicitly on the options page. +#if defined(_UNICODE) + #define UTDF_TCHAR UTDF_UNICODE // strings in struct are WCHAR*, service accepts WCHAR* +#else + #define UTDF_TCHAR 0 // strings in struct are char*, service accepts char* +#endif + +#if !defined(ASSOCMGR_NOHELPERFUNCTIONS) +static int __inline AssocMgr_AddNewUrlType(const char *prefix,const char *desc,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags) +{ + URLTYPEDESC utd; + utd.cbSize=sizeof(URLTYPEDESC); + utd.pszProtoPrefix=prefix; + utd.pszDescription=desc; + utd.hInstance=hinst; + utd.nIconResID=iconid; + utd.pszService=service; + utd.flags=flags&~UTDF_UNICODE; + return CallService(MS_ASSOCMGR_ADDNEWURLTYPE,0,(LPARAM)&utd); +} +static int __inline AssocMgr_AddNewUrlTypeW(const char *prefix,const WCHAR *desc,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags) +{ + URLTYPEDESC utd; + utd.cbSize=sizeof(URLTYPEDESC); + utd.pszProtoPrefix=prefix; + utd.pwszDescription=desc; + utd.hInstance=hinst; + utd.nIconResID=iconid; + utd.pszService=service; + utd.flags=flags|UTDF_UNICODE; + return CallService(MS_ASSOCMGR_ADDNEWURLTYPE,0,(LPARAM)&utd); +} +#if defined(_UNICODE) + #define AssocMgr_AddNewUrlTypeT AssocMgr_AddNewUrlTypeW +#else + #define AssocMgr_AddNewUrlTypeT AssocMgr_AddNewUrlType +#endif +#endif + +/* Remove an url protocol type v0.1.0.0+ +Remove an url registered previously using +MS_ASSOCMGR_ADDNEWURLTYPE. +This removes all settings in database and in registry +associated with the url type. + wParam=0 + lParam=(WPARAM)(char*)pszProtoPrefix +Returns 0 on success, nonzero otherwise. +*/ +#define MS_ASSOCMGR_REMOVEURLTYPE "AssocMgr/RemoveUrlType" + +/* utility which should be moved as service into m_netlib.h (MS_NETLIB_URLENCODE already exists) */ +#if defined(MoveMemory) && defined(lstrlen) +static __inline char *Netlib_UrlDecode(char *str) +{ + char *psz=str; + for(;*psz;++psz) + switch(*psz) { + case '+': + *psz=' '; + break; + case '%': + if(!psz[1] || !psz[2]) break; + MoveMemory(psz,&psz[1],2); + psz[2]=0; + *psz=(char)strtol(psz,NULL,16); + MoveMemory(&psz[1],&psz[3],lstrlenA(&psz[3])+1); + break; + } + return str; +} +#endif + +#if defined(_MSC_VER) +#pragma warning(pop) /* restore warning settings */ +#endif + +#ifndef ASSOCMGR_NOSETTINGS +#define SETTING_ONLYWHILERUNNING_DEFAULT 0 +#endif + +#endif // M_ASSOCMGR_H \ No newline at end of file diff --git a/protocols/MSN/SDK/m_folders.h b/protocols/MSN/SDK/m_folders.h new file mode 100644 index 0000000000..ed373ae555 --- /dev/null +++ b/protocols/MSN/SDK/m_folders.h @@ -0,0 +1,282 @@ +/* +Custom profile folders plugin for Miranda IM + +Copyright © 2005 Cristian Libotean + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef M_CUSTOM_FOLDERS_H +#define M_CUSTOM_FOLDERS_H + +#define FOLDERS_API 501 //dunno why it's here but it is :) + +#define PROFILE_PATH "%profile_path%" +#define CURRENT_PROFILE "%current_profile%" +#define MIRANDA_PATH "%miranda_path%" +#define PLUGINS_PATH "%miranda_path%" "\\plugins" + +#define TO_WIDE(x) L ## x + +#define PROFILE_PATHW L"%profile_path%" +#define CURRENT_PROFILEW L"%current_profile%" +#define MIRANDA_PATHW L"%miranda_path%" + +#define FOLDER_AVATARS PROFILE_PATH "\\" CURRENT_PROFILE "\\avatars" +#define FOLDER_VCARDS PROFILE_PATH "\\" CURRENT_PROFILE "\\vcards" +#define FOLDER_LOGS PROFILE_PATH "\\" CURRENT_PROFILE "\\logs" +#define FOLDER_RECEIVED_FILES PROFILE_PATH "\\" CURRENT_PROFILE "\\received files" +#define FOLDER_DOCS MIRANDA_PATH "\\" "docs" + +#define FOLDER_CONFIG PLUGINS_PATH "\\" "config" + +#define FOLDER_SCRIPTS MIRANDA_PATH "\\" "scripts" + +#define FOLDER_UPDATES MIRANDA_PATH "\\" "updates" + +#define FOLDER_CUSTOMIZE MIRANDA_PATH "\\" "customize" +#define FOLDER_CUSTOMIZE_SOUNDS FOLDER_CUSTOMIZE "\\sounds" +#define FOLDER_CUSTOMIZE_ICONS FOLDER_CUSTOMIZE "\\icons" +#define FOLDER_CUSTOMIZE_SMILEYS FOLDER_CUSTOMIZE "\\smileys" +#define FOLDER_CUSTOMIZE_SKINS FOLDER_CUSTOMIZE "\\skins" +#define FOLDER_CUSTOMIZE_THEMES FOLDER_CUSTOMIZE "\\themes" + + +#define FOLDERS_NAME_MAX_SIZE 64 //maximum name and section size + +#define FF_UNICODE 0x00000001 + +#if defined (UNICODE) + #define FF_TCHAR FF_UNICODE +#else + #define FF_TCHAR 0 +#endif + +typedef struct{ + int cbSize; //size of struct + char szSection[FOLDERS_NAME_MAX_SIZE]; //section name, if it doesn't exist it will be created otherwise it will just add this entry to it + char szName[FOLDERS_NAME_MAX_SIZE]; //entry name - will be shown in options + union{ + const char *szFormat; //default string format. Fallback string in case there's no entry in the database for this folder. This should be the initial value for the path, users will be able to change it later. + const wchar_t *szFormatW; //String is dup()'d so you can free it later. If you set the unicode string don't forget to set the flag accordingly. + const TCHAR *szFormatT; + }; + DWORD flags; //FF_* flags +} FOLDERSDATA; + +/*Folders/Register/Path service + wParam - not used, must be 0 + lParam - (LPARAM) (const FOLDERDATA *) - Data structure filled with + the necessary information. + Returns a handle to the registered path or 0 on error. + You need to use this to call the other services. +*/ +#define MS_FOLDERS_REGISTER_PATH "Folders/Register/Path" + +/*Folders/Get/PathSize service + wParam - (WPARAM) (int) - handle to registered path + lParam - (LPARAM) (int *) - pointer to the variable that receives the size of the path + string (not including the null character). Depending on the flags set when creating the path + it will either call strlen() or wcslen() to get the length of the string. + Returns the size of the buffer. +*/ +#define MS_FOLDERS_GET_SIZE "Folders/Get/PathSize" + +typedef struct{ + int cbSize; + int nMaxPathSize; //maximum size of buffer. This represents the number of characters that can be copied to it (so for unicode strings you don't send the number of bytes but the length of the string). + union{ + char *szPath; //pointer to the buffer that receives the path without the last "\\" + wchar_t *szPathW; //unicode version of the buffer. + TCHAR *szPathT; + }; +} FOLDERSGETDATA; + +/*Folders/Get/Path service + wParam - (WPARAM) (int) - handle to registered path + lParam - (LPARAM) (FOLDERSGETDATA *) pointer to a FOLDERSGETDATA that has all the relevant fields filled. + Should return 0 on success, or nonzero otherwise. +*/ +#define MS_FOLDERS_GET_PATH "Folders/Get/Path" + +typedef struct{ + int cbSize; + union{ + char **szPath; //address of a string variable (char *) or (wchar_t*) where the path should be stored (the last \ won't be copied). + wchar_t **szPathW; //unicode version of string. + TCHAR **szPathT; + }; +} FOLDERSGETALLOCDATA; + +/*Folders/GetRelativePath/Alloc service + wParam - (WPARAM) (int) - Handle to registered path + lParam - (LPARAM) (FOLDERSALLOCDATA *) data + This service is the same as MS_FOLDERS_GET_PATH with the difference that this service + allocates the needed space for the buffer. It uses miranda's memory functions for that and you need + to use those to free the resulting buffer. + Should return 0 on success, or nonzero otherwise. Currently it only returns 0. +*/ +#define MS_FOLDERS_GET_PATH_ALLOC "Folders/Get/Path/Alloc" + + +/*Folders/On/Path/Changed + wParam - (WPARAM) 0 + lParam - (LPARAM) 0 + Triggered when the folders change, you should reget the paths you registered. +*/ +#define ME_FOLDERS_PATH_CHANGED "Folders/On/Path/Changed" + +#ifndef FOLDERS_NO_HELPER_FUNCTIONS + +#ifndef M_UTILS_H__ +#error The helper functions require that m_utils.h be included in the project. Please include that file if you want to use the helper functions. If you don''t want to use the functions just define FOLDERS_NO_HELPER_FUNCTIONS. +#endif +//#include "../../../include/newpluginapi.h" + +__inline static HANDLE FoldersRegisterCustomPath(const char *section, const char *name, const char *defaultPath) +{ + FOLDERSDATA fd = {0}; + if (!ServiceExists(MS_FOLDERS_REGISTER_PATH)) return 0; + fd.cbSize = sizeof(FOLDERSDATA); + strncpy(fd.szSection, section, FOLDERS_NAME_MAX_SIZE); + fd.szSection[FOLDERS_NAME_MAX_SIZE - 1] = '\0'; + strncpy(fd.szName, name, FOLDERS_NAME_MAX_SIZE); + fd.szName[FOLDERS_NAME_MAX_SIZE - 1] = '\0'; + fd.szFormat = defaultPath; + return (HANDLE) CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &fd); +} + +__inline static HANDLE FoldersRegisterCustomPathW(const char *section, const char *name, const wchar_t *defaultPathW) +{ + FOLDERSDATA fd = {0}; + if (!ServiceExists(MS_FOLDERS_REGISTER_PATH)) return 0; + fd.cbSize = sizeof(FOLDERSDATA); + strncpy(fd.szSection, section, FOLDERS_NAME_MAX_SIZE); + fd.szSection[FOLDERS_NAME_MAX_SIZE - 1] = '\0'; //make sure it's NULL terminated + strncpy(fd.szName, name, FOLDERS_NAME_MAX_SIZE); + fd.szName[FOLDERS_NAME_MAX_SIZE - 1] = '\0'; //make sure it's NULL terminated + fd.szFormatW = defaultPathW; + fd.flags = FF_UNICODE; + return (HANDLE) CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &fd); +} + +__inline static INT_PTR FoldersGetCustomPath(HANDLE hFolderEntry, char *path, const int size, const char *notFound) +{ + FOLDERSGETDATA fgd = {0}; + INT_PTR res; + fgd.cbSize = sizeof(FOLDERSGETDATA); + fgd.nMaxPathSize = size; + fgd.szPath = path; + res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd); + if (res) + { + char buffer[MAX_PATH]; + CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM) notFound, (LPARAM) buffer); + mir_snprintf(path, size, "%s", buffer); + } + + return res; +} + +__inline static int FoldersGetCustomPathW(HANDLE hFolderEntry, wchar_t *pathW, const int count, const wchar_t *notFoundW) +{ + FOLDERSGETDATA fgd = {0}; + INT_PTR res; + fgd.cbSize = sizeof(FOLDERSGETDATA); + fgd.nMaxPathSize = count; + fgd.szPathW = pathW; + res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd); + if (res) + { + wcsncpy(pathW, notFoundW, count); + pathW[count - 1] = '\0'; + } + + return res; +} + +__inline static INT_PTR FoldersGetCustomPathEx(HANDLE hFolderEntry, char *path, const int size, char *notFound, char *fileName) +{ + FOLDERSGETDATA fgd = {0}; + INT_PTR res; + fgd.cbSize = sizeof(FOLDERSGETDATA); + fgd.nMaxPathSize = size; + fgd.szPath = path; + res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd); + if (res) + { + char buffer[MAX_PATH]; + CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM) notFound, (LPARAM) buffer); + mir_snprintf(path, size, "%s", buffer); + } + if (strlen(path) > 0) + { + strcat(path, "\\"); + } + else{ + path[0] = '\0'; + } + + if (fileName) + { + strcat(path, fileName); + } + + return res; +} + +__inline static INT_PTR FoldersGetCustomPathExW(HANDLE hFolderEntry, wchar_t *pathW, const int count, wchar_t *notFoundW, wchar_t *fileNameW) +{ + FOLDERSGETDATA fgd = {0}; + INT_PTR res; + fgd.cbSize = sizeof(FOLDERSGETDATA); + fgd.nMaxPathSize = count; + fgd.szPathW = pathW; + res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd); + if (res) + { + wcsncpy(pathW, notFoundW, count); + pathW[count - 1] = '\0'; + } + + if (wcslen(pathW) > 0) + { + wcscat(pathW, L"\\"); + } + else{ + pathW[0] = L'\0'; + } + + if (fileNameW) + { + wcscat(pathW, fileNameW); + } + + return res; +} + +# ifdef _UNICODE +# define FoldersGetCustomPathT FoldersGetCustomPathW +# define FoldersGetCustomPathExT FoldersGetCustomPathExW +# define FoldersRegisterCustomPathT FoldersRegisterCustomPathW +#else +# define FoldersGetCustomPathT FoldersGetCustomPath +# define FoldersGetCustomPathExT FoldersGetCustomPath +# define FoldersRegisterCustomPathT FoldersRegisterCustomPath +#endif + +#endif + +#endif //M_CUSTOM_FOLDERS_H diff --git a/protocols/MSN/SDK/m_metacontacts.h b/protocols/MSN/SDK/m_metacontacts.h new file mode 100644 index 0000000000..9f348bd2c6 --- /dev/null +++ b/protocols/MSN/SDK/m_metacontacts.h @@ -0,0 +1,166 @@ +/* + +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. +Copyright © 2004 Scott Ellis (www.scottellis.com.au mail@scottellis.com.au) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef M_METACONTACTS_H__ +#define M_METACONTACTS_H__ 1 + +#ifndef MIID_METACONTACTS +#define MIID_METACONTACTS {0xc0325019, 0xc1a7, 0x40f5, { 0x83, 0x65, 0x4f, 0x46, 0xbe, 0x21, 0x86, 0x3e}} +#endif + +//get the handle for a contact's parent metacontact +//wParam=(HANDLE)hSubContact +//lParam=0 +//returns a handle to the parent metacontact, or null if this contact is not a subcontact +#define MS_MC_GETMETACONTACT "MetaContacts/GetMeta" + +//gets the handle for the default contact +//wParam=(HANDLE)hMetaContact +//lParam=0 +//returns a handle to the default contact, or null on failure +#define MS_MC_GETDEFAULTCONTACT "MetaContacts/GetDefault" + +//gets the contact number for the default contact +//wParam=(HANDLE)hMetaContact +//lParam=0 +//returns a DWORD contact number, or -1 on failure +#define MS_MC_GETDEFAULTCONTACTNUM "MetaContacts/GetDefaultNum" + +//gets the handle for the 'most online' contact +//wParam=(HANDLE)hMetaContact +//lParam=0 +//returns a handle to the 'most online' contact +#define MS_MC_GETMOSTONLINECONTACT "MetaContacts/GetMostOnline" + +//gets the number of subcontacts for a metacontact +//wParam=(HANDLE)hMetaContact +//lParam=0 +//returns a DWORD representing the number of subcontacts for the given metacontact +#define MS_MC_GETNUMCONTACTS "MetaContacts/GetNumContacts" + +//gets the handle of a subcontact, using the subcontact's number +//wParam=(HANDLE)hMetaContact +//lParam=(DWORD)contact number +//returns a handle to the specified subcontact +#define MS_MC_GETSUBCONTACT "MetaContacts/GetSubContact" + +//sets the default contact, using the subcontact's contact number +//wParam=(HANDLE)hMetaContact +//lParam=(DWORD)contact number +//returns 0 on success +#define MS_MC_SETDEFAULTCONTACTNUM "MetaContacts/SetDefault" + +//sets the default contact, using the subcontact's handle +//wParam=(HANDLE)hMetaContact +//lParam=(HANDLE)hSubcontact +//returns 0 on success +#define MS_MC_SETDEFAULTCONTACT "MetaContacts/SetDefaultByHandle" + +//forces the metacontact to send using a specific subcontact, using the subcontact's contact number +//wParam=(HANDLE)hMetaContact +//lParam=(DWORD)contact number +//returns 0 on success +#define MS_MC_FORCESENDCONTACTNUM "MetaContacts/ForceSendContact" + +//forces the metacontact to send using a specific subcontact, using the subcontact's handle +//wParam=(HANDLE)hMetaContact +//lParam=(HANDLE)hSubcontact +//returns 0 on success (will fail if 'force default' is in effect) +#define MS_MC_FORCESENDCONTACT "MetaContacts/ForceSendContactByHandle" + +//'unforces' the metacontact to send using a specific subcontact +//wParam=(HANDLE)hMetaContact +//lParam=0 +//returns 0 on success (will fail if 'force default' is in effect) +#define MS_MC_UNFORCESENDCONTACT "MetaContacts/UnforceSendContact" + +//'forces' or 'unforces' (i.e. toggles) the metacontact to send using it's default contact +// overrides (and clears) 'force send' above, and will even force use of offline contacts +// will send ME_MC_FORCESEND or ME_MC_UNFORCESEND event +//wParam=(HANDLE)hMetaContact +//lParam=0 +//returns 1(true) or 0(false) representing new state of 'force default' +#define MS_MC_FORCEDEFAULT "MetaContacts/ForceSendDefault" + +// method to get state of 'force' for a metacontact +// wParam=(HANDLE)hMetaContact +// lParam= (DWORD)&contact_number or NULL +// +// if lparam supplied, the contact_number of the contatct 'in force' will be copied to the address it points to, +// or if none is in force, the value (DWORD)-1 will be copied +// (v0.8.0.8+ returns 1 if 'force default' is true with *lParam == default contact number, else returns 0 with *lParam as above) +#define MS_MC_GETFORCESTATE "MetaContacts/GetForceState" + +// fired when a metacontact's default contact changes (fired upon creation of metacontact also, when default is initially set) +// wParam=(HANDLE)hMetaContact +// lParam=(HANDLE)hDefaultContact +#define ME_MC_DEFAULTTCHANGED "MetaContacts/DefaultChanged" + +// fired when a metacontact's subcontacts change (fired upon creation of metacontact, when contacts are added or removed, and when +// contacts are reordered) - a signal to re-read metacontact data +// wParam=(HANDLE)hMetaContact +// lParam=0 +#define ME_MC_SUBCONTACTSCHANGED "MetaContacts/SubcontactsChanged" + +// fired when a metacontact is forced to send using a specific subcontact +// wParam=(HANDLE)hMetaContact +// lParam=(HANDLE)hForceContact +#define ME_MC_FORCESEND "MetaContacts/ForceSend" + +// fired when a metacontact is 'unforced' to send using a specific subcontact +// wParam=(HANDLE)hMetaContact +// lParam=0 +#define ME_MC_UNFORCESEND "MetaContacts/UnforceSend" + +// method to get protocol name - used to be sure you're dealing with a "real" metacontacts plugin :) +// wParam=lParam=0 +#define MS_MC_GETPROTOCOLNAME "MetaContacts/GetProtoName" + + +// added 0.9.5.0 (22/3/05) +// wParam=(HANDLE)hContact +// lParam=0 +// convert a given contact into a metacontact +#define MS_MC_CONVERTTOMETA "MetaContacts/ConvertToMetacontact" + +// added 0.9.5.0 (22/3/05) +// wParam=(HANDLE)hContact +// lParam=(HANDLE)hMeta +// add an existing contact to a metacontact +#define MS_MC_ADDTOMETA "MetaContacts/AddToMetacontact" + +// added 0.9.5.0 (22/3/05) +// wParam=0 +// lParam=(HANDLE)hContact +// remove a contact from a metacontact +#define MS_MC_REMOVEFROMMETA "MetaContacts/RemoveFromMetacontact" + + +// added 0.9.13.2 (6/10/05) +// wParam=(BOOL)disable +// lParam=0 +// enable/disable the 'hidden group hack' - for clists that support subcontact hiding using 'IsSubcontact' setting +// should be called once in the clist 'onmodulesloaded' event handler (which, since it's loaded after the db, will be called +// before the metacontact onmodulesloaded handler where the subcontact hiding is usually done) +#define MS_MC_DISABLEHIDDENGROUP "MetaContacts/DisableHiddenGroup" + +#endif diff --git a/protocols/MSN/SDK/m_proto_listeningto.h b/protocols/MSN/SDK/m_proto_listeningto.h new file mode 100644 index 0000000000..53e1184961 --- /dev/null +++ b/protocols/MSN/SDK/m_proto_listeningto.h @@ -0,0 +1,144 @@ +/* + +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright 2000-2006 Miranda ICQ/IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +//this module was created in v0.6.0.0 + +#ifndef M_PROTO_LISTENINGTO_H__ +#define M_PROTO_LISTENINGTO_H__ 1 + + +// Protocol Services ///////////////////////////////////////////////////////////////// + +// This is the services a protocol have to support to support listening info + +typedef struct { + int cbSize; + + union { + char* pszType; // Media type: Music, Video, etc... + TCHAR* ptszType; + }; + union { + char* pszArtist; // Artist name + TCHAR* ptszArtist; + }; + union { + char* pszAlbum; // Algum name + TCHAR* ptszAlbum; + }; + union { + char* pszTitle; // Song name + TCHAR* ptszTitle; + }; + union { + char* pszTrack; // Track number + TCHAR* ptszTrack; + }; + union { + char* pszYear; // Song year + TCHAR* ptszYear; + }; + union { + char* pszGenre; // Song genre + TCHAR* ptszGenre; + }; + union { + char* pszLength; // Song length + TCHAR* ptszLength; + }; + union { + char* pszPlayer; // Player name + TCHAR* ptszPlayer; + }; + + DWORD dwFlags; + +} LISTENINGTOINFO; + +#define LTI_UNICODE 1 + +#ifdef UNICODE + #define LTI_TCHAR LTI_UNICODE +#else + #define LTI_TCHAR 0 +#endif + +// Set the listening info for the protocol. +// Pass NULL to remove it. +// wParam = NULL +// lParam = LISTENINGTOINFO * +#define PS_SET_LISTENINGTO "/SetListeningTo" + +// Get the listening info for the protocol +// wParam = NULL +// lParam = LISTENINGTOINFO * +// The strings inside the struct need to be free using miranda free. +#define PS_GET_LISTENINGTO "/GetListeningTo" + +// Also the protocol have to save a string with the text the other user is (probabily) +// seeing under the main db key: /ListeningTo + +// For a contact, the protocol should store the listening info as an string inside +// the contact db key: /ListeningTo + + +// ListeningTo configuration plugin ////////////////////////////////////////////////// + +// One plugin can be used to set some options relative to the listening to information. +// But protocols should not assume this plugin exists. If it does not exist, protocols +// have to decide what default to use. +// This plugin have to support the following services: + +// Get the text format the user wants him / his contacts to see. Some strings represents +// the text information: +// %artist%, %album%, %title%, %track%, %year%, %genre%, %length%, %player%, %type% +// This service is optional +// wParam = TCHAR* - default text for this protocol +// lParam = 0 +// Returns a TCHAR* containg the user setting. This need to be free using miranda free. +#define MS_LISTENINGTO_GETTEXTFORMAT "ListeningTo/GetTextFormat" + +// Get the text the user wants him / his contacts to see, parsed with the info sent to +// this service. Uses the same variables as the above service to the default text. +// wParam = TCHAR* - default text for this protocol +// lParam = LISTENINGTOINFO * +// Returns a TCHAR* containg the parsed text. This need to be free using miranda free. +#define MS_LISTENINGTO_GETPARSEDTEXT "ListeningTo/GetParsedText" + +// Get if the contact options about how to show the music info should be overriten or +// not. +// wParam = NULL +// lParam = hContact +// Returns a BOOL +#define MS_LISTENINGTO_OVERRIDECONTACTOPTION "ListeningTo/OverrideContactOption" + +// Get the text to show if some info of the contact is empty. +// wParam = NULL +// lParam = NULL +// Returns a TCHAR *. Don't free +#define MS_LISTENINGTO_GETUNKNOWNTEXT "ListeningTo/GetUnknownText" + + +#endif // M_PROTO_LISTENINGTO_H__ + + diff --git a/protocols/MSN/SDK/m_smileyadd.h b/protocols/MSN/SDK/m_smileyadd.h new file mode 100644 index 0000000000..bae3890c7b --- /dev/null +++ b/protocols/MSN/SDK/m_smileyadd.h @@ -0,0 +1,252 @@ +/* +Miranda SmileyAdd Plugin +Copyright (C) 2005 - 2009 Boris Krasnovskiy +Copyright (C) 2003 - 2004 Rein-Peter de Boer + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include + +#define SAFLRE_INSERTEMF 2 // insert smiley as EMF into RichEdit, otherwise bitmap inserted + // this flag allows "true" transparency +#define SAFLRE_OUTGOING 4 // Parsing outgoing message +#define SAFLRE_NOCUSTOM 8 // Do not use custom smileys + +typedef struct +{ + unsigned cbSize; //size of the structure + HWND hwndRichEditControl; //handle to the rich edit control + CHARRANGE* rangeToReplace; //same meaning as for normal Richedit use (NULL = replaceall) + const char* Protocolname; //protocol to use... if you have defined a protocol, u can + //use your own protocol name. SmileyAdd will automatically + //select the smileypack that is defined for your protocol. + //Or, use "Standard" for standard smiley set. Or "ICQ", "MSN" + //if you prefer those icons. + //If not found or NULL, "Standard" will be used + unsigned flags; //Flags (SAFLRE_*) that define the behaivior + BOOL disableRedraw; //Parameter have been depricated, have no effect on operation + HANDLE hContact; //Contact handle +} SMADD_RICHEDIT3; + +//Replace smileys in a rich edit control... +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) (SMADD_RICHEDIT3*) &smre; //pointer to SMADD_RICHEDIT3 +//return: TRUE if API succeeded (all parameters were valid) , FALSE if not. +#define MS_SMILEYADD_REPLACESMILEYS "SmileyAdd/ReplaceSmileys" + + +typedef struct +{ + unsigned cbSize; //size of the structure + char* Protocolname; //protocol to use... if you have defined a protocol, you can + //use your own protocol name. Smiley add will automatically + //select the smileypack that is defined for your protocol. + //Or, use "Standard" for standard smiley set. Or "ICQ", "MSN" + //if you prefer those icons. + //If not found or NULL: "Standard" will be used + int xPosition; //Postition to place the selectwindow + int yPosition; // " + int Direction; //Direction (i.e. size upwards/downwards/etc) of the window 0, 1, 2, 3 + + HWND hwndTarget; //Window, where to send the message when smiley is selected. + UINT targetMessage; //Target message, to be sent. + LPARAM targetWParam; //Target WParam to be sent (LParam will be char* to select smiley) + //see the example file. + HWND hwndParent; //Parent window for smiley dialog + HANDLE hContact; //Contact handle +} SMADD_SHOWSEL3; + +//Show smiley selection window +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) (SMADD_SHOWSEL3*) &smre; //pointer to SMADD_SHOWSEL3 +//return: TRUE if API succeeded (all parameters were valid) , FALSE if not. +#define MS_SMILEYADD_SHOWSELECTION "SmileyAdd/ShowSmileySelection" + + +typedef struct +{ + unsigned cbSize; //size of the structure + char* Protocolname; // " " + HICON ButtonIcon; //RETURN VALUE: this is filled with the icon handle + //of the smiley that can be used on the button + //if used with GETINFO2 handle must be destroyed by user! + //NULL if the buttonicon is not defined... + int NumberOfVisibleSmileys; //Number of visible smileys defined. + int NumberOfSmileys; //Number of total smileys defined + HANDLE hContact; //Contact handle +} SMADD_INFO2; + +//get button smiley icon +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) (SMADD_INFO2*) &smgi; //pointer to SMADD_INFO2 +//return: TRUE if API succeeded (all parameters were valid) , FALSE if not. +#define MS_SMILEYADD_GETINFO2 "SmileyAdd/GetInfo2" + +// Event notifies that SmileyAdd options have changed +// Message dialogs usually need to redraw it's content on reception of this event +//wParam = Contact handle which options have changed, NULL if global options changed +//lParam = (LPARAM) 0; not used +#define ME_SMILEYADD_OPTIONSCHANGED "SmileyAdd/OptionsChanged" + +#define SAFL_PATH 1 // provide smiley file path, icon otherwise +#define SAFL_UNICODE 2 // string fields in OPTIONSDIALOGPAGE are WCHAR* +#define SAFL_OUTGOING 4 // Parsing outgoing message +#define SAFL_NOCUSTOM 8 // Do not use custom smileys + +#if defined _UNICODE || defined UNICODE + #define SAFL_TCHAR SAFL_UNICODE +#else + #define SAFL_TCHAR 0 +#endif + +typedef struct +{ + unsigned cbSize; //size of the structure + const char* Protocolname; //protocol to use... if you have defined a protocol, u can + //use your own protocol name. Smiley add wil automatically + //select the smileypack that is defined for your protocol. + //Or, use "Standard" for standard smiley set. Or "ICQ", "MSN" + //if you prefer those icons. + //If not found or NULL: "Standard" will be used + union { + TCHAR* str; //String to parse + char* astr; + wchar_t* wstr; + }; + unsigned flag; //One of the SAFL_ flags specifies parsing requirements + //This parameter should be filled by the user + + unsigned numSmileys; //Number of Smileys found, this parameter filled by SmileyAdd + unsigned oflag; //One of the SAFL_ flags specifies content of the parse results + //this parameter filled by SmileyAdd + HANDLE hContact; //Contact handle +} SMADD_BATCHPARSE2; + +typedef struct +{ + unsigned startChar; //Starting smiley character + //Because of iterative nature of the API caller should set this + //parameter to correct value + unsigned size; //Number of characters in smiley (0 if not found) + //Because of iterative nature of the API caller should set this + //parameter to correct value + union { + const TCHAR* filepath; + const char* afilepath; + const wchar_t* wfilepath; + HICON hIcon; //User responsible for destroying icon handle + }; +} SMADD_BATCHPARSERES; + +//find all smileys in text, API parses the provided text and returns all smileys found +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) (SMADD_BATCHPARSE2*) &smgp; //pointer to SMADD_BATCHPARSE2 +//function returns pointer to array SMADD_BATCHPARSERES records for each smiley found +//if no smileys found NULL is returned +//if non NULL value returned pointer must be freed with MS_SMILEYADD_BATCHFREE API +#define MS_SMILEYADD_BATCHPARSE "SmileyAdd/BatchParse" + +//Free memory allocated by MS_SMILEYADD_BATCHPARSE +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) (SMADD_BATCHPARSERES*) &smgp; //pointer to SMADD_BATCHPARSERES +#define MS_SMILEYADD_BATCHFREE "SmileyAdd/BatchFree" + +typedef struct +{ + unsigned cbSize; //size of the structure + char* name; //smiley category name for reference + char* dispname; //smiley category name for display +} SMADD_REGCAT; + +//Register smiley category +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) (SMADD_REGCAT*) &smgp; pointer to SMADD_REGCAT +#define MS_SMILEYADD_REGISTERCATEGORY "SmileyAdd/RegisterCategory" + +//Register smiley category +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) Pointer to protocol name or NULL for all; +#define MS_SMILEYADD_RELOAD "SmileyAdd/Reload" + +#ifndef MIID_SMILEY +// {E03C71B2-6DEE-467e-A4F0-DD516745876A} +#define MIID_SMILEY { 0xe03c71b2, 0x6dee, 0x467e, { 0xa4, 0xf0, 0xdd, 0x51, 0x67, 0x45, 0x87, 0x6a } } +#endif + +/** + NM_FIREVIEWCHANGE is WM_NOTIFY Message for notify parent of host window about smiley are going to be repaint + + The proposed action is next: Owner of RichEdit windows received NM_FIREVIEWCHANGE through WM_NOTIFY + twice first time before painting|invalidating (FVCN_PREFIRE) and second time - after (FVCN_POSTFIRE). + The Owner window may change any values of received FVCNDATA_NMHDR structure in order to raise needed action. + For example it may substitute FVCA_INVALIDATE to FVCA_CUSTOMDRAW event to force painting on self offscreen context. + + It can be: + FVCA_CUSTOMDRAW - in this case you need to provide valid HDC to draw on and valid RECT of smiley + FVCA_INVALIDATE - to invalidate specified rect of window + FVCA_NONE - skip any action. But be aware - animation will be stopped till next repainting of smiley. + FVCA_SENDVIEWCHANGE - to notify richedit ole about object changed. Be aware Richedit will fully reconstruct itself + + Another point is moment of received smiley rect - it is only valid if FVCA_DRAW is initially set, + and it is PROBABLY valid if FVCA_INVALIDATE is set. And it most probably invalid in case of FVCA_SENDVIEWCHANGE. + The smiley position is relative last full paint HDC. Usually it is relative to top-left corner of host + richedit (NOT it client area) in windows coordinates. + +*/ + +// Type of Event one of +#define FVCN_PREFIRE 1 +#define FVCN_POSTFIRE 2 + +// Action of event are going to be done +#define FVCA_NONE 0 +#define FVCA_DRAW 1 // do not modify hdc in case of _DRAW, Use _CUSTOMDRAW +#define FVCA_CUSTOMDRAW 2 +//#define FVCA_INVALIDATE 3 (not supported) +//#define FVCA_SENDVIEWCHANGE 4 (not supported) +#define FVCA_SKIPDRAW 5 + +// Extended NMHDR structure for WM_NOTIFY +typedef struct +{ + //NMHDR structure + HWND hwndFrom; // Window of smiley host + UINT idFrom; // ignored + UINT code; // NM_FIREVIEWCHANGE + + size_t cbSize; + BYTE bEvent; // FVCN_ value - pre- or post- painting + BYTE bAction; // FVCA_ keys + HDC hDC; // Canvas to draw on + RECT rcRect; // Valid/should be in case of FVCA_DRAW + COLORREF clrBackground; // color to fill background if fTransparent is not set + BOOL fTransparent; // if need to fill back color (not supported) + LPARAM lParam; // used by host window PreFire and PostFire event +} FVCNDATA_NMHDR; + +// Code of WM_NOTIFY message (code) +#define NM_FIREVIEWCHANGE NM_FIRST+1; + +typedef struct +{ + unsigned cbSize; // size of the structure + HANDLE hContact; + int type; // 0 - directory, 1 - file; + TCHAR* path; // smiley category name for reference +} SMADD_CONT; + +//Loads all smileys for the contact +//wParam = (WPARAM) 0; not used +//lParam = (LPARAM) (SMADD_CONT*) &dir; // pointer to directory to load smiley from +#define MS_SMILEYADD_LOADCONTACTSMILEYS "SmileyAdd/LoadContactSmileys" diff --git a/protocols/MSN/SDK/netfw.h b/protocols/MSN/SDK/netfw.h new file mode 100644 index 0000000000..a767129740 --- /dev/null +++ b/protocols/MSN/SDK/netfw.h @@ -0,0 +1,3770 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 6.00.0366 */ +/* Compiler settings for netfw.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#if defined(_MSC_VER) +#pragma warning( disable: 4049 ) /* more than 64k source lines */ +#endif + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __netfw_h__ +#define __netfw_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __INetFwRemoteAdminSettings_FWD_DEFINED__ +#define __INetFwRemoteAdminSettings_FWD_DEFINED__ +typedef interface INetFwRemoteAdminSettings INetFwRemoteAdminSettings; +#endif /* __INetFwRemoteAdminSettings_FWD_DEFINED__ */ + + +#ifndef __INetFwIcmpSettings_FWD_DEFINED__ +#define __INetFwIcmpSettings_FWD_DEFINED__ +typedef interface INetFwIcmpSettings INetFwIcmpSettings; +#endif /* __INetFwIcmpSettings_FWD_DEFINED__ */ + + +#ifndef __INetFwOpenPort_FWD_DEFINED__ +#define __INetFwOpenPort_FWD_DEFINED__ +typedef interface INetFwOpenPort INetFwOpenPort; +#endif /* __INetFwOpenPort_FWD_DEFINED__ */ + + +#ifndef __INetFwOpenPorts_FWD_DEFINED__ +#define __INetFwOpenPorts_FWD_DEFINED__ +typedef interface INetFwOpenPorts INetFwOpenPorts; +#endif /* __INetFwOpenPorts_FWD_DEFINED__ */ + + +#ifndef __INetFwService_FWD_DEFINED__ +#define __INetFwService_FWD_DEFINED__ +typedef interface INetFwService INetFwService; +#endif /* __INetFwService_FWD_DEFINED__ */ + + +#ifndef __INetFwServices_FWD_DEFINED__ +#define __INetFwServices_FWD_DEFINED__ +typedef interface INetFwServices INetFwServices; +#endif /* __INetFwServices_FWD_DEFINED__ */ + + +#ifndef __INetFwAuthorizedApplication_FWD_DEFINED__ +#define __INetFwAuthorizedApplication_FWD_DEFINED__ +typedef interface INetFwAuthorizedApplication INetFwAuthorizedApplication; +#endif /* __INetFwAuthorizedApplication_FWD_DEFINED__ */ + + +#ifndef __INetFwAuthorizedApplications_FWD_DEFINED__ +#define __INetFwAuthorizedApplications_FWD_DEFINED__ +typedef interface INetFwAuthorizedApplications INetFwAuthorizedApplications; +#endif /* __INetFwAuthorizedApplications_FWD_DEFINED__ */ + + +#ifndef __INetFwProfile_FWD_DEFINED__ +#define __INetFwProfile_FWD_DEFINED__ +typedef interface INetFwProfile INetFwProfile; +#endif /* __INetFwProfile_FWD_DEFINED__ */ + + +#ifndef __INetFwPolicy_FWD_DEFINED__ +#define __INetFwPolicy_FWD_DEFINED__ +typedef interface INetFwPolicy INetFwPolicy; +#endif /* __INetFwPolicy_FWD_DEFINED__ */ + + +#ifndef __INetFwMgr_FWD_DEFINED__ +#define __INetFwMgr_FWD_DEFINED__ +typedef interface INetFwMgr INetFwMgr; +#endif /* __INetFwMgr_FWD_DEFINED__ */ + + +#ifndef __INetFwRemoteAdminSettings_FWD_DEFINED__ +#define __INetFwRemoteAdminSettings_FWD_DEFINED__ +typedef interface INetFwRemoteAdminSettings INetFwRemoteAdminSettings; +#endif /* __INetFwRemoteAdminSettings_FWD_DEFINED__ */ + + +#ifndef __INetFwIcmpSettings_FWD_DEFINED__ +#define __INetFwIcmpSettings_FWD_DEFINED__ +typedef interface INetFwIcmpSettings INetFwIcmpSettings; +#endif /* __INetFwIcmpSettings_FWD_DEFINED__ */ + + +#ifndef __INetFwOpenPort_FWD_DEFINED__ +#define __INetFwOpenPort_FWD_DEFINED__ +typedef interface INetFwOpenPort INetFwOpenPort; +#endif /* __INetFwOpenPort_FWD_DEFINED__ */ + + +#ifndef __INetFwOpenPorts_FWD_DEFINED__ +#define __INetFwOpenPorts_FWD_DEFINED__ +typedef interface INetFwOpenPorts INetFwOpenPorts; +#endif /* __INetFwOpenPorts_FWD_DEFINED__ */ + + +#ifndef __INetFwService_FWD_DEFINED__ +#define __INetFwService_FWD_DEFINED__ +typedef interface INetFwService INetFwService; +#endif /* __INetFwService_FWD_DEFINED__ */ + + +#ifndef __INetFwServices_FWD_DEFINED__ +#define __INetFwServices_FWD_DEFINED__ +typedef interface INetFwServices INetFwServices; +#endif /* __INetFwServices_FWD_DEFINED__ */ + + +#ifndef __INetFwAuthorizedApplication_FWD_DEFINED__ +#define __INetFwAuthorizedApplication_FWD_DEFINED__ +typedef interface INetFwAuthorizedApplication INetFwAuthorizedApplication; +#endif /* __INetFwAuthorizedApplication_FWD_DEFINED__ */ + + +#ifndef __INetFwAuthorizedApplications_FWD_DEFINED__ +#define __INetFwAuthorizedApplications_FWD_DEFINED__ +typedef interface INetFwAuthorizedApplications INetFwAuthorizedApplications; +#endif /* __INetFwAuthorizedApplications_FWD_DEFINED__ */ + + +#ifndef __INetFwProfile_FWD_DEFINED__ +#define __INetFwProfile_FWD_DEFINED__ +typedef interface INetFwProfile INetFwProfile; +#endif /* __INetFwProfile_FWD_DEFINED__ */ + + +#ifndef __INetFwPolicy_FWD_DEFINED__ +#define __INetFwPolicy_FWD_DEFINED__ +typedef interface INetFwPolicy INetFwPolicy; +#endif /* __INetFwPolicy_FWD_DEFINED__ */ + + +#ifndef __INetFwMgr_FWD_DEFINED__ +#define __INetFwMgr_FWD_DEFINED__ +typedef interface INetFwMgr INetFwMgr; +#endif /* __INetFwMgr_FWD_DEFINED__ */ + + +#ifndef __NetFwOpenPort_FWD_DEFINED__ +#define __NetFwOpenPort_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class NetFwOpenPort NetFwOpenPort; +#else +typedef struct NetFwOpenPort NetFwOpenPort; +#endif /* __cplusplus */ + +#endif /* __NetFwOpenPort_FWD_DEFINED__ */ + + +#ifndef __NetFwAuthorizedApplication_FWD_DEFINED__ +#define __NetFwAuthorizedApplication_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class NetFwAuthorizedApplication NetFwAuthorizedApplication; +#else +typedef struct NetFwAuthorizedApplication NetFwAuthorizedApplication; +#endif /* __cplusplus */ + +#endif /* __NetFwAuthorizedApplication_FWD_DEFINED__ */ + + +#ifndef __NetFwMgr_FWD_DEFINED__ +#define __NetFwMgr_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class NetFwMgr NetFwMgr; +#else +typedef struct NetFwMgr NetFwMgr; +#endif /* __cplusplus */ + +#endif /* __NetFwMgr_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "icftypes.h" +#include "oaidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +#ifndef __INetFwRemoteAdminSettings_INTERFACE_DEFINED__ +#define __INetFwRemoteAdminSettings_INTERFACE_DEFINED__ + +/* interface INetFwRemoteAdminSettings */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwRemoteAdminSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D4BECDDF-6F73-4A83-B832-9C66874CD20E") + INetFwRemoteAdminSettings : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_IpVersion( + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IpVersion( + /* [in] */ NET_FW_IP_VERSION ipVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Scope( + /* [retval][out] */ NET_FW_SCOPE *scope) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Scope( + /* [in] */ NET_FW_SCOPE scope) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RemoteAddresses( + /* [retval][out] */ BSTR *remoteAddrs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RemoteAddresses( + /* [in] */ BSTR remoteAddrs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Enabled( + /* [retval][out] */ VARIANT_BOOL *enabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Enabled( + /* [in] */ VARIANT_BOOL enabled) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwRemoteAdminSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwRemoteAdminSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwRemoteAdminSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwRemoteAdminSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwRemoteAdminSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwRemoteAdminSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwRemoteAdminSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwRemoteAdminSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IpVersion )( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IpVersion )( + INetFwRemoteAdminSettings * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Scope )( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Scope )( + INetFwRemoteAdminSettings * This, + /* [in] */ NET_FW_SCOPE scope); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RemoteAddresses )( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ BSTR *remoteAddrs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RemoteAddresses )( + INetFwRemoteAdminSettings * This, + /* [in] */ BSTR remoteAddrs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )( + INetFwRemoteAdminSettings * This, + /* [in] */ VARIANT_BOOL enabled); + + END_INTERFACE + } INetFwRemoteAdminSettingsVtbl; + + interface INetFwRemoteAdminSettings + { + CONST_VTBL struct INetFwRemoteAdminSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwRemoteAdminSettings_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwRemoteAdminSettings_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwRemoteAdminSettings_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwRemoteAdminSettings_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwRemoteAdminSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwRemoteAdminSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwRemoteAdminSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwRemoteAdminSettings_get_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> get_IpVersion(This,ipVersion) + +#define INetFwRemoteAdminSettings_put_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> put_IpVersion(This,ipVersion) + +#define INetFwRemoteAdminSettings_get_Scope(This,scope) \ + (This)->lpVtbl -> get_Scope(This,scope) + +#define INetFwRemoteAdminSettings_put_Scope(This,scope) \ + (This)->lpVtbl -> put_Scope(This,scope) + +#define INetFwRemoteAdminSettings_get_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> get_RemoteAddresses(This,remoteAddrs) + +#define INetFwRemoteAdminSettings_put_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> put_RemoteAddresses(This,remoteAddrs) + +#define INetFwRemoteAdminSettings_get_Enabled(This,enabled) \ + (This)->lpVtbl -> get_Enabled(This,enabled) + +#define INetFwRemoteAdminSettings_put_Enabled(This,enabled) \ + (This)->lpVtbl -> put_Enabled(This,enabled) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_get_IpVersion_Proxy( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + +void __RPC_STUB INetFwRemoteAdminSettings_get_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_put_IpVersion_Proxy( + INetFwRemoteAdminSettings * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + +void __RPC_STUB INetFwRemoteAdminSettings_put_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_get_Scope_Proxy( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + +void __RPC_STUB INetFwRemoteAdminSettings_get_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_put_Scope_Proxy( + INetFwRemoteAdminSettings * This, + /* [in] */ NET_FW_SCOPE scope); + + +void __RPC_STUB INetFwRemoteAdminSettings_put_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_get_RemoteAddresses_Proxy( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ BSTR *remoteAddrs); + + +void __RPC_STUB INetFwRemoteAdminSettings_get_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_put_RemoteAddresses_Proxy( + INetFwRemoteAdminSettings * This, + /* [in] */ BSTR remoteAddrs); + + +void __RPC_STUB INetFwRemoteAdminSettings_put_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_get_Enabled_Proxy( + INetFwRemoteAdminSettings * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + +void __RPC_STUB INetFwRemoteAdminSettings_get_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwRemoteAdminSettings_put_Enabled_Proxy( + INetFwRemoteAdminSettings * This, + /* [in] */ VARIANT_BOOL enabled); + + +void __RPC_STUB INetFwRemoteAdminSettings_put_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwRemoteAdminSettings_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwIcmpSettings_INTERFACE_DEFINED__ +#define __INetFwIcmpSettings_INTERFACE_DEFINED__ + +/* interface INetFwIcmpSettings */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwIcmpSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A6207B2E-7CDD-426A-951E-5E1CBC5AFEAD") + INetFwIcmpSettings : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowOutboundDestinationUnreachable( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowOutboundDestinationUnreachable( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowRedirect( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowRedirect( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowInboundEchoRequest( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowInboundEchoRequest( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowOutboundTimeExceeded( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowOutboundTimeExceeded( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowOutboundParameterProblem( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowOutboundParameterProblem( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowOutboundSourceQuench( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowOutboundSourceQuench( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowInboundRouterRequest( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowInboundRouterRequest( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowInboundTimestampRequest( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowInboundTimestampRequest( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowInboundMaskRequest( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowInboundMaskRequest( + /* [in] */ VARIANT_BOOL allow) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowOutboundPacketTooBig( + /* [retval][out] */ VARIANT_BOOL *allow) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowOutboundPacketTooBig( + /* [in] */ VARIANT_BOOL allow) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwIcmpSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwIcmpSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwIcmpSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwIcmpSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwIcmpSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwIcmpSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwIcmpSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwIcmpSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowOutboundDestinationUnreachable )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowOutboundDestinationUnreachable )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowRedirect )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowRedirect )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowInboundEchoRequest )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowInboundEchoRequest )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowOutboundTimeExceeded )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowOutboundTimeExceeded )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowOutboundParameterProblem )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowOutboundParameterProblem )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowOutboundSourceQuench )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowOutboundSourceQuench )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowInboundRouterRequest )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowInboundRouterRequest )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowInboundTimestampRequest )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowInboundTimestampRequest )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowInboundMaskRequest )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowInboundMaskRequest )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowOutboundPacketTooBig )( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowOutboundPacketTooBig )( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + END_INTERFACE + } INetFwIcmpSettingsVtbl; + + interface INetFwIcmpSettings + { + CONST_VTBL struct INetFwIcmpSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwIcmpSettings_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwIcmpSettings_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwIcmpSettings_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwIcmpSettings_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwIcmpSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwIcmpSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwIcmpSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwIcmpSettings_get_AllowOutboundDestinationUnreachable(This,allow) \ + (This)->lpVtbl -> get_AllowOutboundDestinationUnreachable(This,allow) + +#define INetFwIcmpSettings_put_AllowOutboundDestinationUnreachable(This,allow) \ + (This)->lpVtbl -> put_AllowOutboundDestinationUnreachable(This,allow) + +#define INetFwIcmpSettings_get_AllowRedirect(This,allow) \ + (This)->lpVtbl -> get_AllowRedirect(This,allow) + +#define INetFwIcmpSettings_put_AllowRedirect(This,allow) \ + (This)->lpVtbl -> put_AllowRedirect(This,allow) + +#define INetFwIcmpSettings_get_AllowInboundEchoRequest(This,allow) \ + (This)->lpVtbl -> get_AllowInboundEchoRequest(This,allow) + +#define INetFwIcmpSettings_put_AllowInboundEchoRequest(This,allow) \ + (This)->lpVtbl -> put_AllowInboundEchoRequest(This,allow) + +#define INetFwIcmpSettings_get_AllowOutboundTimeExceeded(This,allow) \ + (This)->lpVtbl -> get_AllowOutboundTimeExceeded(This,allow) + +#define INetFwIcmpSettings_put_AllowOutboundTimeExceeded(This,allow) \ + (This)->lpVtbl -> put_AllowOutboundTimeExceeded(This,allow) + +#define INetFwIcmpSettings_get_AllowOutboundParameterProblem(This,allow) \ + (This)->lpVtbl -> get_AllowOutboundParameterProblem(This,allow) + +#define INetFwIcmpSettings_put_AllowOutboundParameterProblem(This,allow) \ + (This)->lpVtbl -> put_AllowOutboundParameterProblem(This,allow) + +#define INetFwIcmpSettings_get_AllowOutboundSourceQuench(This,allow) \ + (This)->lpVtbl -> get_AllowOutboundSourceQuench(This,allow) + +#define INetFwIcmpSettings_put_AllowOutboundSourceQuench(This,allow) \ + (This)->lpVtbl -> put_AllowOutboundSourceQuench(This,allow) + +#define INetFwIcmpSettings_get_AllowInboundRouterRequest(This,allow) \ + (This)->lpVtbl -> get_AllowInboundRouterRequest(This,allow) + +#define INetFwIcmpSettings_put_AllowInboundRouterRequest(This,allow) \ + (This)->lpVtbl -> put_AllowInboundRouterRequest(This,allow) + +#define INetFwIcmpSettings_get_AllowInboundTimestampRequest(This,allow) \ + (This)->lpVtbl -> get_AllowInboundTimestampRequest(This,allow) + +#define INetFwIcmpSettings_put_AllowInboundTimestampRequest(This,allow) \ + (This)->lpVtbl -> put_AllowInboundTimestampRequest(This,allow) + +#define INetFwIcmpSettings_get_AllowInboundMaskRequest(This,allow) \ + (This)->lpVtbl -> get_AllowInboundMaskRequest(This,allow) + +#define INetFwIcmpSettings_put_AllowInboundMaskRequest(This,allow) \ + (This)->lpVtbl -> put_AllowInboundMaskRequest(This,allow) + +#define INetFwIcmpSettings_get_AllowOutboundPacketTooBig(This,allow) \ + (This)->lpVtbl -> get_AllowOutboundPacketTooBig(This,allow) + +#define INetFwIcmpSettings_put_AllowOutboundPacketTooBig(This,allow) \ + (This)->lpVtbl -> put_AllowOutboundPacketTooBig(This,allow) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowOutboundDestinationUnreachable_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowOutboundDestinationUnreachable_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowOutboundDestinationUnreachable_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowOutboundDestinationUnreachable_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowRedirect_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowRedirect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowRedirect_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowRedirect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowInboundEchoRequest_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowInboundEchoRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowInboundEchoRequest_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowInboundEchoRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowOutboundTimeExceeded_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowOutboundTimeExceeded_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowOutboundTimeExceeded_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowOutboundTimeExceeded_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowOutboundParameterProblem_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowOutboundParameterProblem_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowOutboundParameterProblem_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowOutboundParameterProblem_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowOutboundSourceQuench_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowOutboundSourceQuench_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowOutboundSourceQuench_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowOutboundSourceQuench_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowInboundRouterRequest_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowInboundRouterRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowInboundRouterRequest_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowInboundRouterRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowInboundTimestampRequest_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowInboundTimestampRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowInboundTimestampRequest_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowInboundTimestampRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowInboundMaskRequest_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowInboundMaskRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowInboundMaskRequest_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowInboundMaskRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_get_AllowOutboundPacketTooBig_Proxy( + INetFwIcmpSettings * This, + /* [retval][out] */ VARIANT_BOOL *allow); + + +void __RPC_STUB INetFwIcmpSettings_get_AllowOutboundPacketTooBig_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwIcmpSettings_put_AllowOutboundPacketTooBig_Proxy( + INetFwIcmpSettings * This, + /* [in] */ VARIANT_BOOL allow); + + +void __RPC_STUB INetFwIcmpSettings_put_AllowOutboundPacketTooBig_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwIcmpSettings_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwOpenPort_INTERFACE_DEFINED__ +#define __INetFwOpenPort_INTERFACE_DEFINED__ + +/* interface INetFwOpenPort */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwOpenPort; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E0483BA0-47FF-4D9C-A6D6-7741D0B195F7") + INetFwOpenPort : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Name( + /* [retval][out] */ BSTR *name) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Name( + /* [in] */ BSTR name) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_IpVersion( + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IpVersion( + /* [in] */ NET_FW_IP_VERSION ipVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Protocol( + /* [retval][out] */ NET_FW_IP_PROTOCOL *ipProtocol) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Protocol( + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Port( + /* [retval][out] */ LONG *portNumber) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Port( + /* [in] */ LONG portNumber) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Scope( + /* [retval][out] */ NET_FW_SCOPE *scope) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Scope( + /* [in] */ NET_FW_SCOPE scope) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RemoteAddresses( + /* [retval][out] */ BSTR *remoteAddrs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RemoteAddresses( + /* [in] */ BSTR remoteAddrs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Enabled( + /* [retval][out] */ VARIANT_BOOL *enabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Enabled( + /* [in] */ VARIANT_BOOL enabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BuiltIn( + /* [retval][out] */ VARIANT_BOOL *builtIn) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwOpenPortVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwOpenPort * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwOpenPort * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwOpenPort * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwOpenPort * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwOpenPort * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwOpenPort * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwOpenPort * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( + INetFwOpenPort * This, + /* [retval][out] */ BSTR *name); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Name )( + INetFwOpenPort * This, + /* [in] */ BSTR name); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IpVersion )( + INetFwOpenPort * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IpVersion )( + INetFwOpenPort * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Protocol )( + INetFwOpenPort * This, + /* [retval][out] */ NET_FW_IP_PROTOCOL *ipProtocol); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Protocol )( + INetFwOpenPort * This, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Port )( + INetFwOpenPort * This, + /* [retval][out] */ LONG *portNumber); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Port )( + INetFwOpenPort * This, + /* [in] */ LONG portNumber); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Scope )( + INetFwOpenPort * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Scope )( + INetFwOpenPort * This, + /* [in] */ NET_FW_SCOPE scope); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RemoteAddresses )( + INetFwOpenPort * This, + /* [retval][out] */ BSTR *remoteAddrs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RemoteAddresses )( + INetFwOpenPort * This, + /* [in] */ BSTR remoteAddrs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )( + INetFwOpenPort * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )( + INetFwOpenPort * This, + /* [in] */ VARIANT_BOOL enabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BuiltIn )( + INetFwOpenPort * This, + /* [retval][out] */ VARIANT_BOOL *builtIn); + + END_INTERFACE + } INetFwOpenPortVtbl; + + interface INetFwOpenPort + { + CONST_VTBL struct INetFwOpenPortVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwOpenPort_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwOpenPort_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwOpenPort_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwOpenPort_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwOpenPort_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwOpenPort_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwOpenPort_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwOpenPort_get_Name(This,name) \ + (This)->lpVtbl -> get_Name(This,name) + +#define INetFwOpenPort_put_Name(This,name) \ + (This)->lpVtbl -> put_Name(This,name) + +#define INetFwOpenPort_get_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> get_IpVersion(This,ipVersion) + +#define INetFwOpenPort_put_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> put_IpVersion(This,ipVersion) + +#define INetFwOpenPort_get_Protocol(This,ipProtocol) \ + (This)->lpVtbl -> get_Protocol(This,ipProtocol) + +#define INetFwOpenPort_put_Protocol(This,ipProtocol) \ + (This)->lpVtbl -> put_Protocol(This,ipProtocol) + +#define INetFwOpenPort_get_Port(This,portNumber) \ + (This)->lpVtbl -> get_Port(This,portNumber) + +#define INetFwOpenPort_put_Port(This,portNumber) \ + (This)->lpVtbl -> put_Port(This,portNumber) + +#define INetFwOpenPort_get_Scope(This,scope) \ + (This)->lpVtbl -> get_Scope(This,scope) + +#define INetFwOpenPort_put_Scope(This,scope) \ + (This)->lpVtbl -> put_Scope(This,scope) + +#define INetFwOpenPort_get_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> get_RemoteAddresses(This,remoteAddrs) + +#define INetFwOpenPort_put_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> put_RemoteAddresses(This,remoteAddrs) + +#define INetFwOpenPort_get_Enabled(This,enabled) \ + (This)->lpVtbl -> get_Enabled(This,enabled) + +#define INetFwOpenPort_put_Enabled(This,enabled) \ + (This)->lpVtbl -> put_Enabled(This,enabled) + +#define INetFwOpenPort_get_BuiltIn(This,builtIn) \ + (This)->lpVtbl -> get_BuiltIn(This,builtIn) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_Name_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ BSTR *name); + + +void __RPC_STUB INetFwOpenPort_get_Name_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_put_Name_Proxy( + INetFwOpenPort * This, + /* [in] */ BSTR name); + + +void __RPC_STUB INetFwOpenPort_put_Name_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_IpVersion_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + +void __RPC_STUB INetFwOpenPort_get_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_put_IpVersion_Proxy( + INetFwOpenPort * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + +void __RPC_STUB INetFwOpenPort_put_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_Protocol_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ NET_FW_IP_PROTOCOL *ipProtocol); + + +void __RPC_STUB INetFwOpenPort_get_Protocol_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_put_Protocol_Proxy( + INetFwOpenPort * This, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol); + + +void __RPC_STUB INetFwOpenPort_put_Protocol_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_Port_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ LONG *portNumber); + + +void __RPC_STUB INetFwOpenPort_get_Port_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_put_Port_Proxy( + INetFwOpenPort * This, + /* [in] */ LONG portNumber); + + +void __RPC_STUB INetFwOpenPort_put_Port_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_Scope_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + +void __RPC_STUB INetFwOpenPort_get_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_put_Scope_Proxy( + INetFwOpenPort * This, + /* [in] */ NET_FW_SCOPE scope); + + +void __RPC_STUB INetFwOpenPort_put_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_RemoteAddresses_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ BSTR *remoteAddrs); + + +void __RPC_STUB INetFwOpenPort_get_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_put_RemoteAddresses_Proxy( + INetFwOpenPort * This, + /* [in] */ BSTR remoteAddrs); + + +void __RPC_STUB INetFwOpenPort_put_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_Enabled_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + +void __RPC_STUB INetFwOpenPort_get_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_put_Enabled_Proxy( + INetFwOpenPort * This, + /* [in] */ VARIANT_BOOL enabled); + + +void __RPC_STUB INetFwOpenPort_put_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPort_get_BuiltIn_Proxy( + INetFwOpenPort * This, + /* [retval][out] */ VARIANT_BOOL *builtIn); + + +void __RPC_STUB INetFwOpenPort_get_BuiltIn_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwOpenPort_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwOpenPorts_INTERFACE_DEFINED__ +#define __INetFwOpenPorts_INTERFACE_DEFINED__ + +/* interface INetFwOpenPorts */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwOpenPorts; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C0E9D7FA-E07E-430A-B19A-090CE82D92E2") + INetFwOpenPorts : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ long *count) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Add( + /* [in] */ INetFwOpenPort *port) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Remove( + /* [in] */ LONG portNumber, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ LONG portNumber, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol, + /* [retval][out] */ INetFwOpenPort **openPort) = 0; + + virtual /* [restricted][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **newEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwOpenPortsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwOpenPorts * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwOpenPorts * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwOpenPorts * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwOpenPorts * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwOpenPorts * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwOpenPorts * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwOpenPorts * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + INetFwOpenPorts * This, + /* [retval][out] */ long *count); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Add )( + INetFwOpenPorts * This, + /* [in] */ INetFwOpenPort *port); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( + INetFwOpenPorts * This, + /* [in] */ LONG portNumber, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + INetFwOpenPorts * This, + /* [in] */ LONG portNumber, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol, + /* [retval][out] */ INetFwOpenPort **openPort); + + /* [restricted][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + INetFwOpenPorts * This, + /* [retval][out] */ IUnknown **newEnum); + + END_INTERFACE + } INetFwOpenPortsVtbl; + + interface INetFwOpenPorts + { + CONST_VTBL struct INetFwOpenPortsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwOpenPorts_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwOpenPorts_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwOpenPorts_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwOpenPorts_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwOpenPorts_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwOpenPorts_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwOpenPorts_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwOpenPorts_get_Count(This,count) \ + (This)->lpVtbl -> get_Count(This,count) + +#define INetFwOpenPorts_Add(This,port) \ + (This)->lpVtbl -> Add(This,port) + +#define INetFwOpenPorts_Remove(This,portNumber,ipProtocol) \ + (This)->lpVtbl -> Remove(This,portNumber,ipProtocol) + +#define INetFwOpenPorts_Item(This,portNumber,ipProtocol,openPort) \ + (This)->lpVtbl -> Item(This,portNumber,ipProtocol,openPort) + +#define INetFwOpenPorts_get__NewEnum(This,newEnum) \ + (This)->lpVtbl -> get__NewEnum(This,newEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPorts_get_Count_Proxy( + INetFwOpenPorts * This, + /* [retval][out] */ long *count); + + +void __RPC_STUB INetFwOpenPorts_get_Count_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPorts_Add_Proxy( + INetFwOpenPorts * This, + /* [in] */ INetFwOpenPort *port); + + +void __RPC_STUB INetFwOpenPorts_Add_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPorts_Remove_Proxy( + INetFwOpenPorts * This, + /* [in] */ LONG portNumber, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol); + + +void __RPC_STUB INetFwOpenPorts_Remove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPorts_Item_Proxy( + INetFwOpenPorts * This, + /* [in] */ LONG portNumber, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol, + /* [retval][out] */ INetFwOpenPort **openPort); + + +void __RPC_STUB INetFwOpenPorts_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][propget][id] */ HRESULT STDMETHODCALLTYPE INetFwOpenPorts_get__NewEnum_Proxy( + INetFwOpenPorts * This, + /* [retval][out] */ IUnknown **newEnum); + + +void __RPC_STUB INetFwOpenPorts_get__NewEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwOpenPorts_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwService_INTERFACE_DEFINED__ +#define __INetFwService_INTERFACE_DEFINED__ + +/* interface INetFwService */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwService; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("79FD57C8-908E-4A36-9888-D5B3F0A444CF") + INetFwService : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Name( + /* [retval][out] */ BSTR *name) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Type( + /* [retval][out] */ NET_FW_SERVICE_TYPE *type) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Customized( + /* [retval][out] */ VARIANT_BOOL *customized) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_IpVersion( + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IpVersion( + /* [in] */ NET_FW_IP_VERSION ipVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Scope( + /* [retval][out] */ NET_FW_SCOPE *scope) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Scope( + /* [in] */ NET_FW_SCOPE scope) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RemoteAddresses( + /* [retval][out] */ BSTR *remoteAddrs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RemoteAddresses( + /* [in] */ BSTR remoteAddrs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Enabled( + /* [retval][out] */ VARIANT_BOOL *enabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Enabled( + /* [in] */ VARIANT_BOOL enabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_GloballyOpenPorts( + /* [retval][out] */ INetFwOpenPorts **openPorts) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwServiceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwService * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwService * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwService * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwService * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwService * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwService * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwService * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( + INetFwService * This, + /* [retval][out] */ BSTR *name); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + INetFwService * This, + /* [retval][out] */ NET_FW_SERVICE_TYPE *type); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Customized )( + INetFwService * This, + /* [retval][out] */ VARIANT_BOOL *customized); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IpVersion )( + INetFwService * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IpVersion )( + INetFwService * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Scope )( + INetFwService * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Scope )( + INetFwService * This, + /* [in] */ NET_FW_SCOPE scope); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RemoteAddresses )( + INetFwService * This, + /* [retval][out] */ BSTR *remoteAddrs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RemoteAddresses )( + INetFwService * This, + /* [in] */ BSTR remoteAddrs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )( + INetFwService * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )( + INetFwService * This, + /* [in] */ VARIANT_BOOL enabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GloballyOpenPorts )( + INetFwService * This, + /* [retval][out] */ INetFwOpenPorts **openPorts); + + END_INTERFACE + } INetFwServiceVtbl; + + interface INetFwService + { + CONST_VTBL struct INetFwServiceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwService_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwService_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwService_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwService_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwService_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwService_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwService_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwService_get_Name(This,name) \ + (This)->lpVtbl -> get_Name(This,name) + +#define INetFwService_get_Type(This,type) \ + (This)->lpVtbl -> get_Type(This,type) + +#define INetFwService_get_Customized(This,customized) \ + (This)->lpVtbl -> get_Customized(This,customized) + +#define INetFwService_get_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> get_IpVersion(This,ipVersion) + +#define INetFwService_put_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> put_IpVersion(This,ipVersion) + +#define INetFwService_get_Scope(This,scope) \ + (This)->lpVtbl -> get_Scope(This,scope) + +#define INetFwService_put_Scope(This,scope) \ + (This)->lpVtbl -> put_Scope(This,scope) + +#define INetFwService_get_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> get_RemoteAddresses(This,remoteAddrs) + +#define INetFwService_put_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> put_RemoteAddresses(This,remoteAddrs) + +#define INetFwService_get_Enabled(This,enabled) \ + (This)->lpVtbl -> get_Enabled(This,enabled) + +#define INetFwService_put_Enabled(This,enabled) \ + (This)->lpVtbl -> put_Enabled(This,enabled) + +#define INetFwService_get_GloballyOpenPorts(This,openPorts) \ + (This)->lpVtbl -> get_GloballyOpenPorts(This,openPorts) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_Name_Proxy( + INetFwService * This, + /* [retval][out] */ BSTR *name); + + +void __RPC_STUB INetFwService_get_Name_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_Type_Proxy( + INetFwService * This, + /* [retval][out] */ NET_FW_SERVICE_TYPE *type); + + +void __RPC_STUB INetFwService_get_Type_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_Customized_Proxy( + INetFwService * This, + /* [retval][out] */ VARIANT_BOOL *customized); + + +void __RPC_STUB INetFwService_get_Customized_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_IpVersion_Proxy( + INetFwService * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + +void __RPC_STUB INetFwService_get_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwService_put_IpVersion_Proxy( + INetFwService * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + +void __RPC_STUB INetFwService_put_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_Scope_Proxy( + INetFwService * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + +void __RPC_STUB INetFwService_get_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwService_put_Scope_Proxy( + INetFwService * This, + /* [in] */ NET_FW_SCOPE scope); + + +void __RPC_STUB INetFwService_put_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_RemoteAddresses_Proxy( + INetFwService * This, + /* [retval][out] */ BSTR *remoteAddrs); + + +void __RPC_STUB INetFwService_get_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwService_put_RemoteAddresses_Proxy( + INetFwService * This, + /* [in] */ BSTR remoteAddrs); + + +void __RPC_STUB INetFwService_put_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_Enabled_Proxy( + INetFwService * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + +void __RPC_STUB INetFwService_get_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwService_put_Enabled_Proxy( + INetFwService * This, + /* [in] */ VARIANT_BOOL enabled); + + +void __RPC_STUB INetFwService_put_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwService_get_GloballyOpenPorts_Proxy( + INetFwService * This, + /* [retval][out] */ INetFwOpenPorts **openPorts); + + +void __RPC_STUB INetFwService_get_GloballyOpenPorts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwService_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwServices_INTERFACE_DEFINED__ +#define __INetFwServices_INTERFACE_DEFINED__ + +/* interface INetFwServices */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwServices; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("79649BB4-903E-421B-94C9-79848E79F6EE") + INetFwServices : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ long *count) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ NET_FW_SERVICE_TYPE svcType, + /* [retval][out] */ INetFwService **service) = 0; + + virtual /* [restricted][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **newEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwServicesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwServices * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwServices * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwServices * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwServices * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwServices * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwServices * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwServices * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + INetFwServices * This, + /* [retval][out] */ long *count); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + INetFwServices * This, + /* [in] */ NET_FW_SERVICE_TYPE svcType, + /* [retval][out] */ INetFwService **service); + + /* [restricted][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + INetFwServices * This, + /* [retval][out] */ IUnknown **newEnum); + + END_INTERFACE + } INetFwServicesVtbl; + + interface INetFwServices + { + CONST_VTBL struct INetFwServicesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwServices_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwServices_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwServices_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwServices_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwServices_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwServices_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwServices_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwServices_get_Count(This,count) \ + (This)->lpVtbl -> get_Count(This,count) + +#define INetFwServices_Item(This,svcType,service) \ + (This)->lpVtbl -> Item(This,svcType,service) + +#define INetFwServices_get__NewEnum(This,newEnum) \ + (This)->lpVtbl -> get__NewEnum(This,newEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwServices_get_Count_Proxy( + INetFwServices * This, + /* [retval][out] */ long *count); + + +void __RPC_STUB INetFwServices_get_Count_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwServices_Item_Proxy( + INetFwServices * This, + /* [in] */ NET_FW_SERVICE_TYPE svcType, + /* [retval][out] */ INetFwService **service); + + +void __RPC_STUB INetFwServices_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][propget][id] */ HRESULT STDMETHODCALLTYPE INetFwServices_get__NewEnum_Proxy( + INetFwServices * This, + /* [retval][out] */ IUnknown **newEnum); + + +void __RPC_STUB INetFwServices_get__NewEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwServices_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwAuthorizedApplication_INTERFACE_DEFINED__ +#define __INetFwAuthorizedApplication_INTERFACE_DEFINED__ + +/* interface INetFwAuthorizedApplication */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwAuthorizedApplication; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B5E64FFA-C2C5-444E-A301-FB5E00018050") + INetFwAuthorizedApplication : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Name( + /* [retval][out] */ BSTR *name) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Name( + /* [in] */ BSTR name) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ProcessImageFileName( + /* [retval][out] */ BSTR *imageFileName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ProcessImageFileName( + /* [in] */ BSTR imageFileName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_IpVersion( + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IpVersion( + /* [in] */ NET_FW_IP_VERSION ipVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Scope( + /* [retval][out] */ NET_FW_SCOPE *scope) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Scope( + /* [in] */ NET_FW_SCOPE scope) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RemoteAddresses( + /* [retval][out] */ BSTR *remoteAddrs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RemoteAddresses( + /* [in] */ BSTR remoteAddrs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Enabled( + /* [retval][out] */ VARIANT_BOOL *enabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Enabled( + /* [in] */ VARIANT_BOOL enabled) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwAuthorizedApplicationVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwAuthorizedApplication * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwAuthorizedApplication * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwAuthorizedApplication * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwAuthorizedApplication * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwAuthorizedApplication * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwAuthorizedApplication * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwAuthorizedApplication * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( + INetFwAuthorizedApplication * This, + /* [retval][out] */ BSTR *name); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Name )( + INetFwAuthorizedApplication * This, + /* [in] */ BSTR name); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ProcessImageFileName )( + INetFwAuthorizedApplication * This, + /* [retval][out] */ BSTR *imageFileName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ProcessImageFileName )( + INetFwAuthorizedApplication * This, + /* [in] */ BSTR imageFileName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IpVersion )( + INetFwAuthorizedApplication * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IpVersion )( + INetFwAuthorizedApplication * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Scope )( + INetFwAuthorizedApplication * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Scope )( + INetFwAuthorizedApplication * This, + /* [in] */ NET_FW_SCOPE scope); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RemoteAddresses )( + INetFwAuthorizedApplication * This, + /* [retval][out] */ BSTR *remoteAddrs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RemoteAddresses )( + INetFwAuthorizedApplication * This, + /* [in] */ BSTR remoteAddrs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )( + INetFwAuthorizedApplication * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )( + INetFwAuthorizedApplication * This, + /* [in] */ VARIANT_BOOL enabled); + + END_INTERFACE + } INetFwAuthorizedApplicationVtbl; + + interface INetFwAuthorizedApplication + { + CONST_VTBL struct INetFwAuthorizedApplicationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwAuthorizedApplication_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwAuthorizedApplication_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwAuthorizedApplication_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwAuthorizedApplication_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwAuthorizedApplication_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwAuthorizedApplication_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwAuthorizedApplication_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwAuthorizedApplication_get_Name(This,name) \ + (This)->lpVtbl -> get_Name(This,name) + +#define INetFwAuthorizedApplication_put_Name(This,name) \ + (This)->lpVtbl -> put_Name(This,name) + +#define INetFwAuthorizedApplication_get_ProcessImageFileName(This,imageFileName) \ + (This)->lpVtbl -> get_ProcessImageFileName(This,imageFileName) + +#define INetFwAuthorizedApplication_put_ProcessImageFileName(This,imageFileName) \ + (This)->lpVtbl -> put_ProcessImageFileName(This,imageFileName) + +#define INetFwAuthorizedApplication_get_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> get_IpVersion(This,ipVersion) + +#define INetFwAuthorizedApplication_put_IpVersion(This,ipVersion) \ + (This)->lpVtbl -> put_IpVersion(This,ipVersion) + +#define INetFwAuthorizedApplication_get_Scope(This,scope) \ + (This)->lpVtbl -> get_Scope(This,scope) + +#define INetFwAuthorizedApplication_put_Scope(This,scope) \ + (This)->lpVtbl -> put_Scope(This,scope) + +#define INetFwAuthorizedApplication_get_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> get_RemoteAddresses(This,remoteAddrs) + +#define INetFwAuthorizedApplication_put_RemoteAddresses(This,remoteAddrs) \ + (This)->lpVtbl -> put_RemoteAddresses(This,remoteAddrs) + +#define INetFwAuthorizedApplication_get_Enabled(This,enabled) \ + (This)->lpVtbl -> get_Enabled(This,enabled) + +#define INetFwAuthorizedApplication_put_Enabled(This,enabled) \ + (This)->lpVtbl -> put_Enabled(This,enabled) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_get_Name_Proxy( + INetFwAuthorizedApplication * This, + /* [retval][out] */ BSTR *name); + + +void __RPC_STUB INetFwAuthorizedApplication_get_Name_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_put_Name_Proxy( + INetFwAuthorizedApplication * This, + /* [in] */ BSTR name); + + +void __RPC_STUB INetFwAuthorizedApplication_put_Name_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_get_ProcessImageFileName_Proxy( + INetFwAuthorizedApplication * This, + /* [retval][out] */ BSTR *imageFileName); + + +void __RPC_STUB INetFwAuthorizedApplication_get_ProcessImageFileName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_put_ProcessImageFileName_Proxy( + INetFwAuthorizedApplication * This, + /* [in] */ BSTR imageFileName); + + +void __RPC_STUB INetFwAuthorizedApplication_put_ProcessImageFileName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_get_IpVersion_Proxy( + INetFwAuthorizedApplication * This, + /* [retval][out] */ NET_FW_IP_VERSION *ipVersion); + + +void __RPC_STUB INetFwAuthorizedApplication_get_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_put_IpVersion_Proxy( + INetFwAuthorizedApplication * This, + /* [in] */ NET_FW_IP_VERSION ipVersion); + + +void __RPC_STUB INetFwAuthorizedApplication_put_IpVersion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_get_Scope_Proxy( + INetFwAuthorizedApplication * This, + /* [retval][out] */ NET_FW_SCOPE *scope); + + +void __RPC_STUB INetFwAuthorizedApplication_get_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_put_Scope_Proxy( + INetFwAuthorizedApplication * This, + /* [in] */ NET_FW_SCOPE scope); + + +void __RPC_STUB INetFwAuthorizedApplication_put_Scope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_get_RemoteAddresses_Proxy( + INetFwAuthorizedApplication * This, + /* [retval][out] */ BSTR *remoteAddrs); + + +void __RPC_STUB INetFwAuthorizedApplication_get_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_put_RemoteAddresses_Proxy( + INetFwAuthorizedApplication * This, + /* [in] */ BSTR remoteAddrs); + + +void __RPC_STUB INetFwAuthorizedApplication_put_RemoteAddresses_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_get_Enabled_Proxy( + INetFwAuthorizedApplication * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + +void __RPC_STUB INetFwAuthorizedApplication_get_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplication_put_Enabled_Proxy( + INetFwAuthorizedApplication * This, + /* [in] */ VARIANT_BOOL enabled); + + +void __RPC_STUB INetFwAuthorizedApplication_put_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwAuthorizedApplication_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwAuthorizedApplications_INTERFACE_DEFINED__ +#define __INetFwAuthorizedApplications_INTERFACE_DEFINED__ + +/* interface INetFwAuthorizedApplications */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwAuthorizedApplications; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("644EFD52-CCF9-486C-97A2-39F352570B30") + INetFwAuthorizedApplications : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ long *count) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Add( + /* [in] */ INetFwAuthorizedApplication *app) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Remove( + /* [in] */ BSTR imageFileName) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ BSTR imageFileName, + /* [retval][out] */ INetFwAuthorizedApplication **app) = 0; + + virtual /* [restricted][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **newEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwAuthorizedApplicationsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwAuthorizedApplications * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwAuthorizedApplications * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwAuthorizedApplications * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwAuthorizedApplications * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwAuthorizedApplications * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwAuthorizedApplications * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwAuthorizedApplications * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + INetFwAuthorizedApplications * This, + /* [retval][out] */ long *count); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Add )( + INetFwAuthorizedApplications * This, + /* [in] */ INetFwAuthorizedApplication *app); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( + INetFwAuthorizedApplications * This, + /* [in] */ BSTR imageFileName); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + INetFwAuthorizedApplications * This, + /* [in] */ BSTR imageFileName, + /* [retval][out] */ INetFwAuthorizedApplication **app); + + /* [restricted][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + INetFwAuthorizedApplications * This, + /* [retval][out] */ IUnknown **newEnum); + + END_INTERFACE + } INetFwAuthorizedApplicationsVtbl; + + interface INetFwAuthorizedApplications + { + CONST_VTBL struct INetFwAuthorizedApplicationsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwAuthorizedApplications_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwAuthorizedApplications_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwAuthorizedApplications_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwAuthorizedApplications_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwAuthorizedApplications_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwAuthorizedApplications_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwAuthorizedApplications_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwAuthorizedApplications_get_Count(This,count) \ + (This)->lpVtbl -> get_Count(This,count) + +#define INetFwAuthorizedApplications_Add(This,app) \ + (This)->lpVtbl -> Add(This,app) + +#define INetFwAuthorizedApplications_Remove(This,imageFileName) \ + (This)->lpVtbl -> Remove(This,imageFileName) + +#define INetFwAuthorizedApplications_Item(This,imageFileName,app) \ + (This)->lpVtbl -> Item(This,imageFileName,app) + +#define INetFwAuthorizedApplications_get__NewEnum(This,newEnum) \ + (This)->lpVtbl -> get__NewEnum(This,newEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplications_get_Count_Proxy( + INetFwAuthorizedApplications * This, + /* [retval][out] */ long *count); + + +void __RPC_STUB INetFwAuthorizedApplications_get_Count_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplications_Add_Proxy( + INetFwAuthorizedApplications * This, + /* [in] */ INetFwAuthorizedApplication *app); + + +void __RPC_STUB INetFwAuthorizedApplications_Add_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplications_Remove_Proxy( + INetFwAuthorizedApplications * This, + /* [in] */ BSTR imageFileName); + + +void __RPC_STUB INetFwAuthorizedApplications_Remove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplications_Item_Proxy( + INetFwAuthorizedApplications * This, + /* [in] */ BSTR imageFileName, + /* [retval][out] */ INetFwAuthorizedApplication **app); + + +void __RPC_STUB INetFwAuthorizedApplications_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][propget][id] */ HRESULT STDMETHODCALLTYPE INetFwAuthorizedApplications_get__NewEnum_Proxy( + INetFwAuthorizedApplications * This, + /* [retval][out] */ IUnknown **newEnum); + + +void __RPC_STUB INetFwAuthorizedApplications_get__NewEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwAuthorizedApplications_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwProfile_INTERFACE_DEFINED__ +#define __INetFwProfile_INTERFACE_DEFINED__ + +/* interface INetFwProfile */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwProfile; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("174A0DDA-E9F9-449D-993B-21AB667CA456") + INetFwProfile : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Type( + /* [retval][out] */ NET_FW_PROFILE_TYPE *type) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FirewallEnabled( + /* [retval][out] */ VARIANT_BOOL *enabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FirewallEnabled( + /* [in] */ VARIANT_BOOL enabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ExceptionsNotAllowed( + /* [retval][out] */ VARIANT_BOOL *notAllowed) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ExceptionsNotAllowed( + /* [in] */ VARIANT_BOOL notAllowed) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NotificationsDisabled( + /* [retval][out] */ VARIANT_BOOL *disabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NotificationsDisabled( + /* [in] */ VARIANT_BOOL disabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_UnicastResponsesToMulticastBroadcastDisabled( + /* [retval][out] */ VARIANT_BOOL *disabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_UnicastResponsesToMulticastBroadcastDisabled( + /* [in] */ VARIANT_BOOL disabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RemoteAdminSettings( + /* [retval][out] */ INetFwRemoteAdminSettings **remoteAdminSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_IcmpSettings( + /* [retval][out] */ INetFwIcmpSettings **icmpSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_GloballyOpenPorts( + /* [retval][out] */ INetFwOpenPorts **openPorts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Services( + /* [retval][out] */ INetFwServices **services) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AuthorizedApplications( + /* [retval][out] */ INetFwAuthorizedApplications **apps) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwProfileVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwProfile * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwProfile * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwProfile * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwProfile * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwProfile * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwProfile * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwProfile * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + INetFwProfile * This, + /* [retval][out] */ NET_FW_PROFILE_TYPE *type); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FirewallEnabled )( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FirewallEnabled )( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL enabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExceptionsNotAllowed )( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *notAllowed); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ExceptionsNotAllowed )( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL notAllowed); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotificationsDisabled )( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *disabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotificationsDisabled )( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL disabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UnicastResponsesToMulticastBroadcastDisabled )( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *disabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UnicastResponsesToMulticastBroadcastDisabled )( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL disabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RemoteAdminSettings )( + INetFwProfile * This, + /* [retval][out] */ INetFwRemoteAdminSettings **remoteAdminSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IcmpSettings )( + INetFwProfile * This, + /* [retval][out] */ INetFwIcmpSettings **icmpSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GloballyOpenPorts )( + INetFwProfile * This, + /* [retval][out] */ INetFwOpenPorts **openPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Services )( + INetFwProfile * This, + /* [retval][out] */ INetFwServices **services); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AuthorizedApplications )( + INetFwProfile * This, + /* [retval][out] */ INetFwAuthorizedApplications **apps); + + END_INTERFACE + } INetFwProfileVtbl; + + interface INetFwProfile + { + CONST_VTBL struct INetFwProfileVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwProfile_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwProfile_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwProfile_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwProfile_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwProfile_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwProfile_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwProfile_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwProfile_get_Type(This,type) \ + (This)->lpVtbl -> get_Type(This,type) + +#define INetFwProfile_get_FirewallEnabled(This,enabled) \ + (This)->lpVtbl -> get_FirewallEnabled(This,enabled) + +#define INetFwProfile_put_FirewallEnabled(This,enabled) \ + (This)->lpVtbl -> put_FirewallEnabled(This,enabled) + +#define INetFwProfile_get_ExceptionsNotAllowed(This,notAllowed) \ + (This)->lpVtbl -> get_ExceptionsNotAllowed(This,notAllowed) + +#define INetFwProfile_put_ExceptionsNotAllowed(This,notAllowed) \ + (This)->lpVtbl -> put_ExceptionsNotAllowed(This,notAllowed) + +#define INetFwProfile_get_NotificationsDisabled(This,disabled) \ + (This)->lpVtbl -> get_NotificationsDisabled(This,disabled) + +#define INetFwProfile_put_NotificationsDisabled(This,disabled) \ + (This)->lpVtbl -> put_NotificationsDisabled(This,disabled) + +#define INetFwProfile_get_UnicastResponsesToMulticastBroadcastDisabled(This,disabled) \ + (This)->lpVtbl -> get_UnicastResponsesToMulticastBroadcastDisabled(This,disabled) + +#define INetFwProfile_put_UnicastResponsesToMulticastBroadcastDisabled(This,disabled) \ + (This)->lpVtbl -> put_UnicastResponsesToMulticastBroadcastDisabled(This,disabled) + +#define INetFwProfile_get_RemoteAdminSettings(This,remoteAdminSettings) \ + (This)->lpVtbl -> get_RemoteAdminSettings(This,remoteAdminSettings) + +#define INetFwProfile_get_IcmpSettings(This,icmpSettings) \ + (This)->lpVtbl -> get_IcmpSettings(This,icmpSettings) + +#define INetFwProfile_get_GloballyOpenPorts(This,openPorts) \ + (This)->lpVtbl -> get_GloballyOpenPorts(This,openPorts) + +#define INetFwProfile_get_Services(This,services) \ + (This)->lpVtbl -> get_Services(This,services) + +#define INetFwProfile_get_AuthorizedApplications(This,apps) \ + (This)->lpVtbl -> get_AuthorizedApplications(This,apps) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_Type_Proxy( + INetFwProfile * This, + /* [retval][out] */ NET_FW_PROFILE_TYPE *type); + + +void __RPC_STUB INetFwProfile_get_Type_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_FirewallEnabled_Proxy( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *enabled); + + +void __RPC_STUB INetFwProfile_get_FirewallEnabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_put_FirewallEnabled_Proxy( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL enabled); + + +void __RPC_STUB INetFwProfile_put_FirewallEnabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_ExceptionsNotAllowed_Proxy( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *notAllowed); + + +void __RPC_STUB INetFwProfile_get_ExceptionsNotAllowed_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_put_ExceptionsNotAllowed_Proxy( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL notAllowed); + + +void __RPC_STUB INetFwProfile_put_ExceptionsNotAllowed_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_NotificationsDisabled_Proxy( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *disabled); + + +void __RPC_STUB INetFwProfile_get_NotificationsDisabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_put_NotificationsDisabled_Proxy( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL disabled); + + +void __RPC_STUB INetFwProfile_put_NotificationsDisabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_UnicastResponsesToMulticastBroadcastDisabled_Proxy( + INetFwProfile * This, + /* [retval][out] */ VARIANT_BOOL *disabled); + + +void __RPC_STUB INetFwProfile_get_UnicastResponsesToMulticastBroadcastDisabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_put_UnicastResponsesToMulticastBroadcastDisabled_Proxy( + INetFwProfile * This, + /* [in] */ VARIANT_BOOL disabled); + + +void __RPC_STUB INetFwProfile_put_UnicastResponsesToMulticastBroadcastDisabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_RemoteAdminSettings_Proxy( + INetFwProfile * This, + /* [retval][out] */ INetFwRemoteAdminSettings **remoteAdminSettings); + + +void __RPC_STUB INetFwProfile_get_RemoteAdminSettings_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_IcmpSettings_Proxy( + INetFwProfile * This, + /* [retval][out] */ INetFwIcmpSettings **icmpSettings); + + +void __RPC_STUB INetFwProfile_get_IcmpSettings_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_GloballyOpenPorts_Proxy( + INetFwProfile * This, + /* [retval][out] */ INetFwOpenPorts **openPorts); + + +void __RPC_STUB INetFwProfile_get_GloballyOpenPorts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_Services_Proxy( + INetFwProfile * This, + /* [retval][out] */ INetFwServices **services); + + +void __RPC_STUB INetFwProfile_get_Services_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwProfile_get_AuthorizedApplications_Proxy( + INetFwProfile * This, + /* [retval][out] */ INetFwAuthorizedApplications **apps); + + +void __RPC_STUB INetFwProfile_get_AuthorizedApplications_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwProfile_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwPolicy_INTERFACE_DEFINED__ +#define __INetFwPolicy_INTERFACE_DEFINED__ + +/* interface INetFwPolicy */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwPolicy; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D46D2478-9AC9-4008-9DC7-5563CE5536CC") + INetFwPolicy : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentProfile( + /* [retval][out] */ INetFwProfile **profile) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE GetProfileByType( + /* [in] */ NET_FW_PROFILE_TYPE profileType, + /* [retval][out] */ INetFwProfile **profile) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwPolicyVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwPolicy * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwPolicy * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwPolicy * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwPolicy * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwPolicy * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwPolicy * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwPolicy * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentProfile )( + INetFwPolicy * This, + /* [retval][out] */ INetFwProfile **profile); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetProfileByType )( + INetFwPolicy * This, + /* [in] */ NET_FW_PROFILE_TYPE profileType, + /* [retval][out] */ INetFwProfile **profile); + + END_INTERFACE + } INetFwPolicyVtbl; + + interface INetFwPolicy + { + CONST_VTBL struct INetFwPolicyVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwPolicy_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwPolicy_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwPolicy_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwPolicy_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwPolicy_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwPolicy_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwPolicy_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwPolicy_get_CurrentProfile(This,profile) \ + (This)->lpVtbl -> get_CurrentProfile(This,profile) + +#define INetFwPolicy_GetProfileByType(This,profileType,profile) \ + (This)->lpVtbl -> GetProfileByType(This,profileType,profile) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwPolicy_get_CurrentProfile_Proxy( + INetFwPolicy * This, + /* [retval][out] */ INetFwProfile **profile); + + +void __RPC_STUB INetFwPolicy_get_CurrentProfile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwPolicy_GetProfileByType_Proxy( + INetFwPolicy * This, + /* [in] */ NET_FW_PROFILE_TYPE profileType, + /* [retval][out] */ INetFwProfile **profile); + + +void __RPC_STUB INetFwPolicy_GetProfileByType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwPolicy_INTERFACE_DEFINED__ */ + + +#ifndef __INetFwMgr_INTERFACE_DEFINED__ +#define __INetFwMgr_INTERFACE_DEFINED__ + +/* interface INetFwMgr */ +/* [dual][uuid][object] */ + + +EXTERN_C const IID IID_INetFwMgr; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F7898AF5-CAC4-4632-A2EC-DA06E5111AF2") + INetFwMgr : public IDispatch + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LocalPolicy( + /* [retval][out] */ INetFwPolicy **localPolicy) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentProfileType( + /* [retval][out] */ NET_FW_PROFILE_TYPE *profileType) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE RestoreDefaults( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE IsPortAllowed( + /* [in] */ BSTR imageFileName, + /* [in] */ NET_FW_IP_VERSION ipVersion, + /* [in] */ LONG portNumber, + /* [in] */ BSTR localAddress, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol, + /* [out] */ VARIANT *allowed, + /* [out] */ VARIANT *restricted) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE IsIcmpTypeAllowed( + /* [in] */ NET_FW_IP_VERSION ipVersion, + /* [in] */ BSTR localAddress, + /* [in] */ BYTE type, + /* [out] */ VARIANT *allowed, + /* [out] */ VARIANT *restricted) = 0; + + }; + +#else /* C style interface */ + + typedef struct INetFwMgrVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + INetFwMgr * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + INetFwMgr * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + INetFwMgr * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + INetFwMgr * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + INetFwMgr * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + INetFwMgr * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + INetFwMgr * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LocalPolicy )( + INetFwMgr * This, + /* [retval][out] */ INetFwPolicy **localPolicy); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentProfileType )( + INetFwMgr * This, + /* [retval][out] */ NET_FW_PROFILE_TYPE *profileType); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RestoreDefaults )( + INetFwMgr * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *IsPortAllowed )( + INetFwMgr * This, + /* [in] */ BSTR imageFileName, + /* [in] */ NET_FW_IP_VERSION ipVersion, + /* [in] */ LONG portNumber, + /* [in] */ BSTR localAddress, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol, + /* [out] */ VARIANT *allowed, + /* [out] */ VARIANT *restricted); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *IsIcmpTypeAllowed )( + INetFwMgr * This, + /* [in] */ NET_FW_IP_VERSION ipVersion, + /* [in] */ BSTR localAddress, + /* [in] */ BYTE type, + /* [out] */ VARIANT *allowed, + /* [out] */ VARIANT *restricted); + + END_INTERFACE + } INetFwMgrVtbl; + + interface INetFwMgr + { + CONST_VTBL struct INetFwMgrVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define INetFwMgr_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define INetFwMgr_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define INetFwMgr_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define INetFwMgr_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define INetFwMgr_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define INetFwMgr_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define INetFwMgr_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define INetFwMgr_get_LocalPolicy(This,localPolicy) \ + (This)->lpVtbl -> get_LocalPolicy(This,localPolicy) + +#define INetFwMgr_get_CurrentProfileType(This,profileType) \ + (This)->lpVtbl -> get_CurrentProfileType(This,profileType) + +#define INetFwMgr_RestoreDefaults(This) \ + (This)->lpVtbl -> RestoreDefaults(This) + +#define INetFwMgr_IsPortAllowed(This,imageFileName,ipVersion,portNumber,localAddress,ipProtocol,allowed,restricted) \ + (This)->lpVtbl -> IsPortAllowed(This,imageFileName,ipVersion,portNumber,localAddress,ipProtocol,allowed,restricted) + +#define INetFwMgr_IsIcmpTypeAllowed(This,ipVersion,localAddress,type,allowed,restricted) \ + (This)->lpVtbl -> IsIcmpTypeAllowed(This,ipVersion,localAddress,type,allowed,restricted) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwMgr_get_LocalPolicy_Proxy( + INetFwMgr * This, + /* [retval][out] */ INetFwPolicy **localPolicy); + + +void __RPC_STUB INetFwMgr_get_LocalPolicy_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE INetFwMgr_get_CurrentProfileType_Proxy( + INetFwMgr * This, + /* [retval][out] */ NET_FW_PROFILE_TYPE *profileType); + + +void __RPC_STUB INetFwMgr_get_CurrentProfileType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwMgr_RestoreDefaults_Proxy( + INetFwMgr * This); + + +void __RPC_STUB INetFwMgr_RestoreDefaults_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwMgr_IsPortAllowed_Proxy( + INetFwMgr * This, + /* [in] */ BSTR imageFileName, + /* [in] */ NET_FW_IP_VERSION ipVersion, + /* [in] */ LONG portNumber, + /* [in] */ BSTR localAddress, + /* [in] */ NET_FW_IP_PROTOCOL ipProtocol, + /* [out] */ VARIANT *allowed, + /* [out] */ VARIANT *restricted); + + +void __RPC_STUB INetFwMgr_IsPortAllowed_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE INetFwMgr_IsIcmpTypeAllowed_Proxy( + INetFwMgr * This, + /* [in] */ NET_FW_IP_VERSION ipVersion, + /* [in] */ BSTR localAddress, + /* [in] */ BYTE type, + /* [out] */ VARIANT *allowed, + /* [out] */ VARIANT *restricted); + + +void __RPC_STUB INetFwMgr_IsIcmpTypeAllowed_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __INetFwMgr_INTERFACE_DEFINED__ */ + + + +#ifndef __NetFwPublicTypeLib_LIBRARY_DEFINED__ +#define __NetFwPublicTypeLib_LIBRARY_DEFINED__ + +/* library NetFwPublicTypeLib */ +/* [version][uuid] */ + + + + + + + + + + + + + +EXTERN_C const IID LIBID_NetFwPublicTypeLib; + +EXTERN_C const CLSID CLSID_NetFwOpenPort; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0CA545C6-37AD-4A6C-BF92-9F7610067EF5") +NetFwOpenPort; +#endif + +EXTERN_C const CLSID CLSID_NetFwAuthorizedApplication; + +#ifdef __cplusplus + +class DECLSPEC_UUID("EC9846B3-2762-4A6B-A214-6ACB603462D2") +NetFwAuthorizedApplication; +#endif + +EXTERN_C const CLSID CLSID_NetFwMgr; + +#ifdef __cplusplus + +class DECLSPEC_UUID("304CE942-6E39-40D8-943A-B913C40C9CD4") +NetFwMgr; +#endif +#endif /* __NetFwPublicTypeLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); +unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); +void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); + +unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); +void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/protocols/MSN/des.c b/protocols/MSN/des.c new file mode 100644 index 0000000000..12d59914cd --- /dev/null +++ b/protocols/MSN/des.c @@ -0,0 +1,639 @@ +/* + * FIPS-46-3 compliant Triple-DES implementation + * + * Copyright (C) 2006-2007 Christophe Devine + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License, version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +/* + * DES, on which TDES is based, was originally designed by IBM in + * 1974 and adopted as a standard by NIST (formerly NBS). + * + * http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf + */ + + +#ifndef __GNUC__ +#pragma hdrstop +#endif + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif + +#include + +#include "des.h" + +/* + * 32-bit integer manipulation macros (big endian) + */ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ +{ \ + (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ + | ( (unsigned long) (b)[(i) + 1] << 16 ) \ + | ( (unsigned long) (b)[(i) + 2] << 8 ) \ + | ( (unsigned long) (b)[(i) + 3] ); \ +} +#endif +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) + 3] = (unsigned char) ( (n) ); \ +} +#endif + +/* + * Expanded DES S-boxes + */ +static const unsigned long SB1[64] = +{ + 0x01010400, 0x00000000, 0x00010000, 0x01010404, + 0x01010004, 0x00010404, 0x00000004, 0x00010000, + 0x00000400, 0x01010400, 0x01010404, 0x00000400, + 0x01000404, 0x01010004, 0x01000000, 0x00000004, + 0x00000404, 0x01000400, 0x01000400, 0x00010400, + 0x00010400, 0x01010000, 0x01010000, 0x01000404, + 0x00010004, 0x01000004, 0x01000004, 0x00010004, + 0x00000000, 0x00000404, 0x00010404, 0x01000000, + 0x00010000, 0x01010404, 0x00000004, 0x01010000, + 0x01010400, 0x01000000, 0x01000000, 0x00000400, + 0x01010004, 0x00010000, 0x00010400, 0x01000004, + 0x00000400, 0x00000004, 0x01000404, 0x00010404, + 0x01010404, 0x00010004, 0x01010000, 0x01000404, + 0x01000004, 0x00000404, 0x00010404, 0x01010400, + 0x00000404, 0x01000400, 0x01000400, 0x00000000, + 0x00010004, 0x00010400, 0x00000000, 0x01010004 +}; + +static const unsigned long SB2[64] = +{ + 0x80108020, 0x80008000, 0x00008000, 0x00108020, + 0x00100000, 0x00000020, 0x80100020, 0x80008020, + 0x80000020, 0x80108020, 0x80108000, 0x80000000, + 0x80008000, 0x00100000, 0x00000020, 0x80100020, + 0x00108000, 0x00100020, 0x80008020, 0x00000000, + 0x80000000, 0x00008000, 0x00108020, 0x80100000, + 0x00100020, 0x80000020, 0x00000000, 0x00108000, + 0x00008020, 0x80108000, 0x80100000, 0x00008020, + 0x00000000, 0x00108020, 0x80100020, 0x00100000, + 0x80008020, 0x80100000, 0x80108000, 0x00008000, + 0x80100000, 0x80008000, 0x00000020, 0x80108020, + 0x00108020, 0x00000020, 0x00008000, 0x80000000, + 0x00008020, 0x80108000, 0x00100000, 0x80000020, + 0x00100020, 0x80008020, 0x80000020, 0x00100020, + 0x00108000, 0x00000000, 0x80008000, 0x00008020, + 0x80000000, 0x80100020, 0x80108020, 0x00108000 +}; + +static const unsigned long SB3[64] = +{ + 0x00000208, 0x08020200, 0x00000000, 0x08020008, + 0x08000200, 0x00000000, 0x00020208, 0x08000200, + 0x00020008, 0x08000008, 0x08000008, 0x00020000, + 0x08020208, 0x00020008, 0x08020000, 0x00000208, + 0x08000000, 0x00000008, 0x08020200, 0x00000200, + 0x00020200, 0x08020000, 0x08020008, 0x00020208, + 0x08000208, 0x00020200, 0x00020000, 0x08000208, + 0x00000008, 0x08020208, 0x00000200, 0x08000000, + 0x08020200, 0x08000000, 0x00020008, 0x00000208, + 0x00020000, 0x08020200, 0x08000200, 0x00000000, + 0x00000200, 0x00020008, 0x08020208, 0x08000200, + 0x08000008, 0x00000200, 0x00000000, 0x08020008, + 0x08000208, 0x00020000, 0x08000000, 0x08020208, + 0x00000008, 0x00020208, 0x00020200, 0x08000008, + 0x08020000, 0x08000208, 0x00000208, 0x08020000, + 0x00020208, 0x00000008, 0x08020008, 0x00020200 +}; + +static const unsigned long SB4[64] = +{ + 0x00802001, 0x00002081, 0x00002081, 0x00000080, + 0x00802080, 0x00800081, 0x00800001, 0x00002001, + 0x00000000, 0x00802000, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00800080, 0x00800001, + 0x00000001, 0x00002000, 0x00800000, 0x00802001, + 0x00000080, 0x00800000, 0x00002001, 0x00002080, + 0x00800081, 0x00000001, 0x00002080, 0x00800080, + 0x00002000, 0x00802080, 0x00802081, 0x00000081, + 0x00800080, 0x00800001, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00000000, 0x00802000, + 0x00002080, 0x00800080, 0x00800081, 0x00000001, + 0x00802001, 0x00002081, 0x00002081, 0x00000080, + 0x00802081, 0x00000081, 0x00000001, 0x00002000, + 0x00800001, 0x00002001, 0x00802080, 0x00800081, + 0x00002001, 0x00002080, 0x00800000, 0x00802001, + 0x00000080, 0x00800000, 0x00002000, 0x00802080 +}; + +static const unsigned long SB5[64] = +{ + 0x00000100, 0x02080100, 0x02080000, 0x42000100, + 0x00080000, 0x00000100, 0x40000000, 0x02080000, + 0x40080100, 0x00080000, 0x02000100, 0x40080100, + 0x42000100, 0x42080000, 0x00080100, 0x40000000, + 0x02000000, 0x40080000, 0x40080000, 0x00000000, + 0x40000100, 0x42080100, 0x42080100, 0x02000100, + 0x42080000, 0x40000100, 0x00000000, 0x42000000, + 0x02080100, 0x02000000, 0x42000000, 0x00080100, + 0x00080000, 0x42000100, 0x00000100, 0x02000000, + 0x40000000, 0x02080000, 0x42000100, 0x40080100, + 0x02000100, 0x40000000, 0x42080000, 0x02080100, + 0x40080100, 0x00000100, 0x02000000, 0x42080000, + 0x42080100, 0x00080100, 0x42000000, 0x42080100, + 0x02080000, 0x00000000, 0x40080000, 0x42000000, + 0x00080100, 0x02000100, 0x40000100, 0x00080000, + 0x00000000, 0x40080000, 0x02080100, 0x40000100 +}; + +static const unsigned long SB6[64] = +{ + 0x20000010, 0x20400000, 0x00004000, 0x20404010, + 0x20400000, 0x00000010, 0x20404010, 0x00400000, + 0x20004000, 0x00404010, 0x00400000, 0x20000010, + 0x00400010, 0x20004000, 0x20000000, 0x00004010, + 0x00000000, 0x00400010, 0x20004010, 0x00004000, + 0x00404000, 0x20004010, 0x00000010, 0x20400010, + 0x20400010, 0x00000000, 0x00404010, 0x20404000, + 0x00004010, 0x00404000, 0x20404000, 0x20000000, + 0x20004000, 0x00000010, 0x20400010, 0x00404000, + 0x20404010, 0x00400000, 0x00004010, 0x20000010, + 0x00400000, 0x20004000, 0x20000000, 0x00004010, + 0x20000010, 0x20404010, 0x00404000, 0x20400000, + 0x00404010, 0x20404000, 0x00000000, 0x20400010, + 0x00000010, 0x00004000, 0x20400000, 0x00404010, + 0x00004000, 0x00400010, 0x20004010, 0x00000000, + 0x20404000, 0x20000000, 0x00400010, 0x20004010 +}; + +static const unsigned long SB7[64] = +{ + 0x00200000, 0x04200002, 0x04000802, 0x00000000, + 0x00000800, 0x04000802, 0x00200802, 0x04200800, + 0x04200802, 0x00200000, 0x00000000, 0x04000002, + 0x00000002, 0x04000000, 0x04200002, 0x00000802, + 0x04000800, 0x00200802, 0x00200002, 0x04000800, + 0x04000002, 0x04200000, 0x04200800, 0x00200002, + 0x04200000, 0x00000800, 0x00000802, 0x04200802, + 0x00200800, 0x00000002, 0x04000000, 0x00200800, + 0x04000000, 0x00200800, 0x00200000, 0x04000802, + 0x04000802, 0x04200002, 0x04200002, 0x00000002, + 0x00200002, 0x04000000, 0x04000800, 0x00200000, + 0x04200800, 0x00000802, 0x00200802, 0x04200800, + 0x00000802, 0x04000002, 0x04200802, 0x04200000, + 0x00200800, 0x00000000, 0x00000002, 0x04200802, + 0x00000000, 0x00200802, 0x04200000, 0x00000800, + 0x04000002, 0x04000800, 0x00000800, 0x00200002 +}; + +static const unsigned long SB8[64] = +{ + 0x10001040, 0x00001000, 0x00040000, 0x10041040, + 0x10000000, 0x10001040, 0x00000040, 0x10000000, + 0x00040040, 0x10040000, 0x10041040, 0x00041000, + 0x10041000, 0x00041040, 0x00001000, 0x00000040, + 0x10040000, 0x10000040, 0x10001000, 0x00001040, + 0x00041000, 0x00040040, 0x10040040, 0x10041000, + 0x00001040, 0x00000000, 0x00000000, 0x10040040, + 0x10000040, 0x10001000, 0x00041040, 0x00040000, + 0x00041040, 0x00040000, 0x10041000, 0x00001000, + 0x00000040, 0x10040040, 0x00001000, 0x00041040, + 0x10001000, 0x00000040, 0x10000040, 0x10040000, + 0x10040040, 0x10000000, 0x00040000, 0x10001040, + 0x00000000, 0x10041040, 0x00040040, 0x10000040, + 0x10040000, 0x10001000, 0x10001040, 0x00000000, + 0x10041040, 0x00041000, 0x00041000, 0x00001040, + 0x00001040, 0x00040040, 0x10000000, 0x10041000 +}; + +/* + * PC1: left and right halves bit-swap + */ +static const unsigned long LHs[16] = +{ + 0x00000000, 0x00000001, 0x00000100, 0x00000101, + 0x00010000, 0x00010001, 0x00010100, 0x00010101, + 0x01000000, 0x01000001, 0x01000100, 0x01000101, + 0x01010000, 0x01010001, 0x01010100, 0x01010101 +}; + +static const unsigned long RHs[16] = +{ + 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, +}; + +/* + * Initial Permutation macro + */ +#define DES_IP(X,Y) \ +{ \ + T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \ + T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \ + T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \ + T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \ + Y = ((Y << 1) | (Y >> 31)) & 0xFFFFFFFF; \ + T = (X ^ Y) & 0xAAAAAAAA; Y ^= T; X ^= T; \ + X = ((X << 1) | (X >> 31)) & 0xFFFFFFFF; \ +} + +/* + * Final Permutation macro + */ +#define DES_FP(X,Y) \ +{ \ + X = ((X << 31) | (X >> 1)) & 0xFFFFFFFF; \ + T = (X ^ Y) & 0xAAAAAAAA; X ^= T; Y ^= T; \ + Y = ((Y << 31) | (Y >> 1)) & 0xFFFFFFFF; \ + T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \ + T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \ + T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \ + T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \ +} + +/* + * DES round macro + */ +#define DES_ROUND(X,Y) \ +{ \ + T = *SK++ ^ X; \ + Y ^= SB8[ (T ) & 0x3F ] ^ \ + SB6[ (T >> 8) & 0x3F ] ^ \ + SB4[ (T >> 16) & 0x3F ] ^ \ + SB2[ (T >> 24) & 0x3F ]; \ + \ + T = *SK++ ^ ((X << 28) | (X >> 4)); \ + Y ^= SB7[ (T ) & 0x3F ] ^ \ + SB5[ (T >> 8) & 0x3F ] ^ \ + SB3[ (T >> 16) & 0x3F ] ^ \ + SB1[ (T >> 24) & 0x3F ]; \ +} + +static void des_main_ks( unsigned long SK[32], unsigned char key[8] ) +{ + int i; + unsigned long X, Y, T; + + GET_UINT32_BE( X, key, 0 ); + GET_UINT32_BE( Y, key, 4 ); + + /* + * Permuted Choice 1 + */ + T = ((Y >> 4) ^ X) & 0x0F0F0F0F; X ^= T; Y ^= (T << 4); + T = ((Y ) ^ X) & 0x10101010; X ^= T; Y ^= (T ); + + X = (LHs[ (X ) & 0xF] << 3) | (LHs[ (X >> 8) & 0xF ] << 2) + | (LHs[ (X >> 16) & 0xF] << 1) | (LHs[ (X >> 24) & 0xF ] ) + | (LHs[ (X >> 5) & 0xF] << 7) | (LHs[ (X >> 13) & 0xF ] << 6) + | (LHs[ (X >> 21) & 0xF] << 5) | (LHs[ (X >> 29) & 0xF ] << 4); + + Y = (RHs[ (Y >> 1) & 0xF] << 3) | (RHs[ (Y >> 9) & 0xF ] << 2) + | (RHs[ (Y >> 17) & 0xF] << 1) | (RHs[ (Y >> 25) & 0xF ] ) + | (RHs[ (Y >> 4) & 0xF] << 7) | (RHs[ (Y >> 12) & 0xF ] << 6) + | (RHs[ (Y >> 20) & 0xF] << 5) | (RHs[ (Y >> 28) & 0xF ] << 4); + + X &= 0x0FFFFFFF; + Y &= 0x0FFFFFFF; + + /* + * calculate subkeys + */ + for( i = 0; i < 16; i++ ) + { + if( i < 2 || i == 8 || i == 15 ) + { + X = ((X << 1) | (X >> 27)) & 0x0FFFFFFF; + Y = ((Y << 1) | (Y >> 27)) & 0x0FFFFFFF; + } + else + { + X = ((X << 2) | (X >> 26)) & 0x0FFFFFFF; + Y = ((Y << 2) | (Y >> 26)) & 0x0FFFFFFF; + } + + *SK++ = ((X << 4) & 0x24000000) | ((X << 28) & 0x10000000) + | ((X << 14) & 0x08000000) | ((X << 18) & 0x02080000) + | ((X << 6) & 0x01000000) | ((X << 9) & 0x00200000) + | ((X >> 1) & 0x00100000) | ((X << 10) & 0x00040000) + | ((X << 2) & 0x00020000) | ((X >> 10) & 0x00010000) + | ((Y >> 13) & 0x00002000) | ((Y >> 4) & 0x00001000) + | ((Y << 6) & 0x00000800) | ((Y >> 1) & 0x00000400) + | ((Y >> 14) & 0x00000200) | ((Y ) & 0x00000100) + | ((Y >> 5) & 0x00000020) | ((Y >> 10) & 0x00000010) + | ((Y >> 3) & 0x00000008) | ((Y >> 18) & 0x00000004) + | ((Y >> 26) & 0x00000002) | ((Y >> 24) & 0x00000001); + + *SK++ = ((X << 15) & 0x20000000) | ((X << 17) & 0x10000000) + | ((X << 10) & 0x08000000) | ((X << 22) & 0x04000000) + | ((X >> 2) & 0x02000000) | ((X << 1) & 0x01000000) + | ((X << 16) & 0x00200000) | ((X << 11) & 0x00100000) + | ((X << 3) & 0x00080000) | ((X >> 6) & 0x00040000) + | ((X << 15) & 0x00020000) | ((X >> 4) & 0x00010000) + | ((Y >> 2) & 0x00002000) | ((Y << 8) & 0x00001000) + | ((Y >> 14) & 0x00000808) | ((Y >> 9) & 0x00000400) + | ((Y ) & 0x00000200) | ((Y << 7) & 0x00000100) + | ((Y >> 7) & 0x00000020) | ((Y >> 3) & 0x00000011) + | ((Y << 2) & 0x00000004) | ((Y >> 21) & 0x00000002); + } +} + +/* + * DES key schedule (56-bit) + */ +void des_set_key( des_context *ctx, unsigned char key[8] ) +{ + int i; + + des_main_ks( ctx->esk, key ); + + for( i = 0; i < 32; i += 2 ) + { + ctx->dsk[i ] = ctx->esk[30 - i]; + ctx->dsk[i + 1] = ctx->esk[31 - i]; + } +} + +static void des_crypt( unsigned long SK[32], + unsigned char input[8], + unsigned char output[8] ) +{ + unsigned long X, Y, T; + + GET_UINT32_BE( X, input, 0 ); + GET_UINT32_BE( Y, input, 4 ); + + DES_IP( X, Y ); + + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + + DES_FP( Y, X ); + + PUT_UINT32_BE( Y, output, 0 ); + PUT_UINT32_BE( X, output, 4 ); +} + +/* + * DES block encryption (ECB mode) + */ +void des_encrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des_crypt( ctx->esk, input, output ); +} + +/* + * DES block decryption (ECB mode) + */ +void des_decrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des_crypt( ctx->dsk, input, output ); +} + +/* + * DES-CBC buffer encryption + */ +void des_cbc_encrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + + while( len > 0 ) + { + for( i = 0; i < 8; i++ ) + output[i] = input[i] ^ iv[i]; + + des_crypt( ctx->esk, output, output ); + memcpy( iv, output, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} + +/* + * DES-CBC buffer decryption + */ +void des_cbc_decrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + unsigned char temp[8]; + + while( len > 0 ) + { + memcpy( temp, input, 8 ); + des_crypt( ctx->dsk, input, output ); + + for( i = 0; i < 8; i++ ) + output[i] = output[i] ^ iv[i]; + + memcpy( iv, temp, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} + +/* + * Triple-DES key schedule (112-bit) + */ +void des3_set_2keys( des3_context *ctx, unsigned char key[16] ) +{ + int i; + + des_main_ks( ctx->esk , key ); + des_main_ks( ctx->dsk + 32, key + 8 ); + + for( i = 0; i < 32; i += 2 ) + { + ctx->dsk[i ] = ctx->esk[30 - i]; + ctx->dsk[i + 1] = ctx->esk[31 - i]; + + ctx->esk[i + 32] = ctx->dsk[62 - i]; + ctx->esk[i + 33] = ctx->dsk[63 - i]; + + ctx->esk[i + 64] = ctx->esk[ i]; + ctx->esk[i + 65] = ctx->esk[ 1 + i]; + + ctx->dsk[i + 64] = ctx->dsk[ i]; + ctx->dsk[i + 65] = ctx->dsk[ 1 + i]; + } +} + +/* + * Triple-DES key schedule (168-bit) + */ +void des3_set_3keys( des3_context *ctx, unsigned char key[24] ) +{ + int i; + + des_main_ks( ctx->esk , key ); + des_main_ks( ctx->dsk + 32, key + 8 ); + des_main_ks( ctx->esk + 64, key + 16 ); + + for( i = 0; i < 32; i += 2 ) + { + ctx->dsk[i ] = ctx->esk[94 - i]; + ctx->dsk[i + 1] = ctx->esk[95 - i]; + + ctx->esk[i + 32] = ctx->dsk[62 - i]; + ctx->esk[i + 33] = ctx->dsk[63 - i]; + + ctx->dsk[i + 64] = ctx->esk[30 - i]; + ctx->dsk[i + 65] = ctx->esk[31 - i]; + } +} + +static void des3_crypt( unsigned long SK[96], + unsigned char input[8], + unsigned char output[8] ) +{ + unsigned long X, Y, T; + + GET_UINT32_BE( X, input, 0 ); + GET_UINT32_BE( Y, input, 4 ); + + DES_IP( X, Y ); + + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + + DES_FP( Y, X ); + + PUT_UINT32_BE( Y, output, 0 ); + PUT_UINT32_BE( X, output, 4 ); +} + +/* + * Triple-DES block encryption (ECB mode) + */ +void des3_encrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des3_crypt( ctx->esk, input, output ); +} + +/* + * Triple-DES block decryption (ECB mode) + */ +void des3_decrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des3_crypt( ctx->dsk, input, output ); +} + +/* + * 3DES-CBC buffer encryption + */ +void des3_cbc_encrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + + while( len > 0 ) + { + for( i = 0; i < 8; i++ ) + output[i] = input[i] ^ iv[i]; + + des3_crypt( ctx->esk, output, output ); + memcpy( iv, output, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} + +/* + * 3DES-CBC buffer decryption + */ +void des3_cbc_decrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + unsigned char temp[8]; + + while( len > 0 ) + { + memcpy( temp, input, 8 ); + des3_crypt( ctx->dsk, input, output ); + + for( i = 0; i < 8; i++ ) + output[i] = output[i] ^ iv[i]; + + memcpy( iv, temp, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} diff --git a/protocols/MSN/des.h b/protocols/MSN/des.h new file mode 100644 index 0000000000..e1fc923fad --- /dev/null +++ b/protocols/MSN/des.h @@ -0,0 +1,170 @@ +/** + * \file des.h + */ +#ifndef _DES_H +#define _DES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief DES context structure + */ +typedef struct +{ + unsigned long esk[32]; /*!< DES encryption subkeys */ + unsigned long dsk[32]; /*!< DES decryption subkeys */ +} +des_context; + +/** + * \brief Triple-DES context structure + */ +typedef struct +{ + unsigned long esk[96]; /*!< Triple-DES encryption subkeys */ + unsigned long dsk[96]; /*!< Triple-DES decryption subkeys */ +} +des3_context; + +/** + * \brief DES key schedule (56-bit) + * + * \param ctx DES context to be initialized + * \param key 8-byte secret key + */ +void des_set_key( des_context *ctx, unsigned char key[8] ); + +/** + * \brief DES block encryption (ECB mode) + * + * \param ctx DES context + * \param input plaintext block + * \param output ciphertext block + */ +void des_encrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief DES block decryption (ECB mode) + * + * \param ctx DES context + * \param input ciphertext block + * \param output plaintext block + */ +void des_decrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief DES-CBC buffer encryption + * + * \param ctx DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the plaintext + * \param output buffer holding the ciphertext + * \param len length of the data to be encrypted + */ +void des_cbc_encrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/** + * \brief DES-CBC buffer decryption + * + * \param ctx DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the ciphertext + * \param output buffer holding the plaintext + * \param len length of the data to be decrypted + */ +void des_cbc_decrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/** + * \brief Triple-DES key schedule (112-bit) + * + * \param ctx 3DES context to be initialized + * \param key 16-byte secret key + */ +void des3_set_2keys( des3_context *ctx, unsigned char key[16] ); + +/** + * \brief Triple-DES key schedule (168-bit) + * + * \param ctx 3DES context to be initialized + * \param key 24-byte secret key + */ +void des3_set_3keys( des3_context *ctx, unsigned char key[24] ); + +/** + * \brief Triple-DES block encryption (ECB mode) + * + * \param ctx 3DES context + * \param input plaintext block + * \param output ciphertext block + */ +void des3_encrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief Triple-DES block decryption (ECB mode) + * + * \param ctx 3DES context + * \param input ciphertext block + * \param output plaintext block + */ +void des3_decrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief 3DES-CBC buffer encryption + * + * \param ctx 3DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the plaintext + * \param output buffer holding the ciphertext + * \param len length of the data to be encrypted + */ +void des3_cbc_encrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/** + * \brief 3DES-CBC buffer decryption + * + * \param ctx 3DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the ciphertext + * \param output buffer holding the plaintext + * \param len length of the data to be decrypted + */ +void des3_cbc_decrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/* + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int des_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* des.h */ diff --git a/protocols/MSN/ezxml.c b/protocols/MSN/ezxml.c new file mode 100644 index 0000000000..a910c1e905 --- /dev/null +++ b/protocols/MSN/ezxml.c @@ -0,0 +1,967 @@ +/* ezxml.c + * + * Copyright 2004-2006 Aaron Voisine + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#if defined(_DEBUG) && !defined(__GNUC__) + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include +#include +#include + +#include "ezxml.h" + +#ifndef SIZE_MAX +#define SIZE_MAX UINT_MAX +#endif + +#define EZXML_WS "\t\r\n " // whitespace +#define EZXML_ERRL 128 // maximum error string length + +typedef struct ezxml_root *ezxml_root_t; +struct ezxml_root { // additional data for the root tag + struct ezxml xml; // is a super-struct built on top of ezxml struct + ezxml_t cur; // current xml tree insertion point + char *m; // original xml string + size_t len; // length of allocated memory for mmap, -1 for malloc + char *u; // UTF-8 conversion of string if original was UTF-16 + char *s; // start of work area + char *e; // end of work area + char **ent; // general entities (ampersand sequences) + char ***attr; // default attributes + char ***pi; // processing instructions + short standalone; // non-zero if + char err[EZXML_ERRL]; // error string +}; + +char *EZXML_NIL[] = { NULL }; // empty, null terminated array of strings + +// returns the first child tag with the given name or NULL if not found +ezxml_t ezxml_child(ezxml_t xml, const char *name) +{ + xml = (xml) ? xml->child : NULL; + while (xml && strcmp(name, xml->name)) xml = xml->sibling; + return xml; +} + +// returns the Nth tag with the same name in the same subsection or NULL if not +// found +ezxml_t ezxml_idx(ezxml_t xml, int idx) +{ + for (; xml && idx; idx--) xml = xml->next; + return xml; +} + +// returns the value of the requested tag attribute or NULL if not found +const char *ezxml_attr(ezxml_t xml, const char *attr) +{ + int i = 0, j = 1; + ezxml_root_t root = (ezxml_root_t)xml; + + if (! xml || ! xml->attr) return NULL; + while (xml->attr[i] && strcmp(attr, xml->attr[i])) i += 2; + if (xml->attr[i]) return xml->attr[i + 1]; // found attribute + + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag + for (i = 0; root->attr[i] && strcmp(xml->name, root->attr[i][0]); i++); + if (! root->attr[i]) return NULL; // no matching default attributes + while (root->attr[i][j] && strcmp(attr, root->attr[i][j])) j += 3; + return (root->attr[i][j]) ? root->attr[i][j + 1] : NULL; // found default +} + +// same as ezxml_get but takes an already initialized va_list +ezxml_t ezxml_vget(ezxml_t xml, va_list ap) +{ + char *name = va_arg(ap, char *); + int idx = -1; + + if (name && *name) { + idx = va_arg(ap, int); + xml = ezxml_child(xml, name); + } + return (idx < 0) ? xml : ezxml_vget(ezxml_idx(xml, idx), ap); +} + +// Traverses the xml tree to retrieve a specific subtag. Takes a variable +// length list of tag names and indexes. The argument list must be terminated +// by either an index of -1 or an empty string tag name. Example: +// title = ezxml_get(library, "shelf", 0, "book", 2, "title", -1); +// This retrieves the title of the 3rd book on the 1st shelf of library. +// Returns NULL if not found. +ezxml_t ezxml_get(ezxml_t xml, ...) +{ + va_list ap; + ezxml_t r; + + va_start(ap, xml); + r = ezxml_vget(xml, ap); + va_end(ap); + return r; +} + +// returns a null terminated array of processing instructions for the given +// target +const char **ezxml_pi(ezxml_t xml, const char *target) +{ + ezxml_root_t root = (ezxml_root_t)xml; + int i = 0; + + if (! root) return (const char **)EZXML_NIL; + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target + return (const char **)((root->pi[i]) ? root->pi[i] + 1 : EZXML_NIL); +} + +// set an error string and return root +ezxml_t ezxml_err(ezxml_root_t root, char *s, const char *err, ...) +{ + va_list ap; + int line = 1; + char *t, fmt[EZXML_ERRL]; + + for (t = root->s; t < s; t++) if (*t == '\n') line++; + _snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err); + + va_start(ap, err); + _vsnprintf(root->err, EZXML_ERRL, fmt, ap); + va_end(ap); + + return &root->xml; +} + +// Recursively decodes entity and character references and normalizes new lines +// ent is a null terminated array of alternating entity names and values. set t +// to '&' for general entity decoding, '%' for parameter entity decoding, 'c' +// for cdata sections, ' ' for attribute normalization, or '*' for non-cdata +// attribute normalization. Returns s, or if the decoded string is longer than +// s, returns a malloced string that must be freed. +char *ezxml_decode(char *s, char **ent, char t) +{ + char *e, *r = s, *m = s; + long b, c, d, l; +/* + for (; *s; s++) { // normalize line endings + while (*s == '\r') { + *(s++) = '\n'; + if (*s == '\n') memmove(s, (s + 1), strlen(s)); + } + } +*/ + for (s = r; ; ) { + while (*s && *s != '&' && (*s != '%' || t != '%') && (*s & 0x80 || !isspace(*s))) s++; + + if (! *s) break; + else if (t != 'c' && ! strncmp(s, "&#", 2)) { // character reference + if (s[2] == 'x') c = strtol(s + 3, &e, 16); // base 16 + else c = strtol(s + 2, &e, 10); // base 10 + if (! c || *e != ';') { s++; continue; } // not a character ref + + if (c < 0x80) *(s++) = (char)c; // US-ASCII subset + else { // multi-byte UTF-8 sequence + for (b = 0, d = c; d; d /= 2) b++; // number of bits in c + b = (b - 2) / 5; // number of bytes in payload + *(s++) = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head + while (b) *(s++) = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload + } + + memmove(s, strchr(s, ';') + 1, strlen(strchr(s, ';'))); + } + else if ((*s == '&' && (t == '&' || t == ' ' || t == '*')) || + (*s == '%' && t == '%')) { // entity reference + for (b = 0; ent[b] && strncmp(s + 1, ent[b], strlen(ent[b])); + b += 2); // find entity in entity list + + if (ent[b++]) { // found a match + if ((c = (long)strlen(ent[b])) - 1 > (e = strchr(s, ';')) - s) { + l = (d = (long)(s - r)) + c + (long)strlen(e); // new length + r = (r == m) ? strcpy(malloc(l), r) : realloc(r, l); + e = strchr((s = r + d), ';'); // fix up pointers + } + + memmove(s + c, e + 1, strlen(e)); // shift rest of string + strncpy(s, ent[b], c); // copy in replacement text + } + else s++; // not a known entity + } + else if ((t == ' ' || t == '*') && isspace(*s)) *(s++) = ' '; + else s++; // no decoding needed + } + + if (t == '*') { // normalize spaces for non-cdata attributes + for (s = r; *s; s++) { + if ((l = (long)strspn(s, " "))) memmove(s, s + l, strlen(s + l) + 1); + while (*s && *s != ' ') s++; + } + if (--s >= r && *s == ' ') *s = '\0'; // trim any trailing space + } + return r; +} + +// called when parser finds start of new tag +void ezxml_open_tag(ezxml_root_t root, char *name, char **attr) +{ + ezxml_t xml = root->cur; + + if (xml->name) xml = ezxml_add_child(xml, name, strlen(xml->txt)); + else xml->name = name; // first open tag + + xml->attr = attr; + root->cur = xml; // update tag insertion point +} + +// called when parser finds character content between open and closing tag +void ezxml_char_content(ezxml_root_t root, char *s, size_t len, char t) +{ + ezxml_t xml = root->cur; + char *m = s; + size_t l; + + if (! xml || ! xml->name || ! len) return; // sanity check + + s[len] = '\0'; // null terminate text (calling functions anticipate this) + len = strlen(s = ezxml_decode(s, root->ent, t)) + 1; + + if (! *(xml->txt)) xml->txt = s; // initial character content + else { // allocate our own memory and make a copy + xml->txt = (xml->flags & EZXML_TXTM) // allocate some space + ? realloc(xml->txt, (l = strlen(xml->txt)) + len) + : strcpy(malloc((l = strlen(xml->txt)) + len), xml->txt); + strcpy(xml->txt + l, s); // add new char content + if (s != m) free(s); // free s if it was malloced by ezxml_decode() + } + + if (xml->txt != m) ezxml_set_flag(xml, EZXML_TXTM); +} + +// called when parser finds closing tag +ezxml_t ezxml_close_tag(ezxml_root_t root, char *name, char *s) +{ + if (! root->cur || ! root->cur->name || strcmp(name, root->cur->name)) + return ezxml_err(root, s, "unexpected closing tag ", name); + + root->cur = root->cur->parent; + return NULL; +} + +// checks for circular entity references, returns non-zero if no circular +// references are found, zero otherwise +int ezxml_ent_ok(char *name, char *s, char **ent) +{ + int i; + + for (; ; s++) { + while (*s && *s != '&') s++; // find next entity reference + if (! *s) return 1; + if (! strncmp(s + 1, name, strlen(name))) return 0; // circular ref. + for (i = 0; ent[i] && strncmp(ent[i], s + 1, strlen(ent[i])); i += 2); + if (ent[i] && ! ezxml_ent_ok(name, ent[i + 1], ent)) return 0; + } +} + +// called when the parser finds a processing instruction +void ezxml_proc_inst(ezxml_root_t root, char *s, size_t len) +{ + int i = 0, j = 1; + char *target = s; + + s[len] = '\0'; // null terminate instruction + if (*(s += strcspn(s, EZXML_WS))) { + *s = '\0'; // null terminate target + s += strspn(s + 1, EZXML_WS) + 1; // skip whitespace after target + } + + if (! strcmp(target, "xml")) { // + if ((s = strstr(s, "standalone")) && ! strncmp(s + strspn(s + 10, + EZXML_WS "='\"") + 10, "yes", 3)) root->standalone = 1; + return; + } + + if (! root->pi[0]) *(root->pi = malloc(sizeof(char **))) = NULL; //first pi + + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target + if (! root->pi[i]) { // new target + root->pi = realloc(root->pi, sizeof(char **) * (i + 2)); + root->pi[i] = malloc(sizeof(char *) * 3); + root->pi[i][0] = target; + root->pi[i][1] = (char *)(root->pi[i + 1] = NULL); // terminate pi list + root->pi[i][2] = _strdup(""); // empty document position list + } + + while (root->pi[i][j]) j++; // find end of instruction list for this target + root->pi[i] = realloc(root->pi[i], sizeof(char *) * (j + 3)); + root->pi[i][j + 2] = realloc(root->pi[i][j + 1], j + 1); + strcpy(root->pi[i][j + 2] + j - 1, (root->xml.name) ? ">" : "<"); + root->pi[i][j + 1] = NULL; // null terminate pi list for this target + root->pi[i][j] = s; // set instruction +} + +// called when the parser finds an internal doctype subset +short ezxml_internal_dtd(ezxml_root_t root, char *s, size_t len) +{ + char q, *c, *t, *n = NULL, *v, **ent, **pe; + int i, j; + + pe = memcpy(malloc(sizeof(EZXML_NIL)), EZXML_NIL, sizeof(EZXML_NIL)); + + for (s[len] = '\0'; s; ) { + while (*s && *s != '<' && *s != '%') s++; // find next declaration + + if (! *s) break; + else if (! strncmp(s, "'); + continue; + } + + for (i = 0, ent = (*c == '%') ? pe : root->ent; ent[i]; i++); + ent = realloc(ent, (i + 3) * sizeof(char *)); // space for next ent + if (*c == '%') pe = ent; + else root->ent = ent; + + *(++s) = '\0'; // null terminate name + if ((s = strchr(v, q))) *(s++) = '\0'; // null terminate value + ent[i + 1] = ezxml_decode(v, pe, '%'); // set value + ent[i + 2] = NULL; // null terminate entity list + if (! ezxml_ent_ok(n, ent[i + 1], ent)) { // circular reference + if (ent[i + 1] != v) free(ent[i + 1]); + ezxml_err(root, v, "circular entity declaration &%s", n); + break; + } + else ent[i] = n; // set entity name + } + else if (! strncmp(s, "")) == '>') continue; + else *s = '\0'; // null terminate tag name + for (i = 0; root->attr[i] && strcmp(n, root->attr[i][0]); i++); + + while (*(n = s + 1 + strspn(s + 1, EZXML_WS)) && *n != '>') { + if (*(s = n + strcspn(n, EZXML_WS))) *s = '\0'; // attr name + else { ezxml_err(root, t, "malformed ") - 1; + if (*c == ' ') continue; // cdata is default, nothing to do + v = NULL; + } + else if ((*s == '"' || *s == '\'') && // default value + (s = strchr(v = s + 1, *s))) *s = '\0'; + else { ezxml_err(root, t, "malformed attr[i]) { // new tag name + root->attr = (! i) ? malloc(2 * sizeof(char **)) + : realloc(root->attr, + (i + 2) * sizeof(char **)); + root->attr[i] = malloc(2 * sizeof(char *)); + root->attr[i][0] = t; // set tag name + root->attr[i][1] = (char *)(root->attr[i + 1] = NULL); + } + + for (j = 1; root->attr[i][j]; j += 3); // find end of list + root->attr[i] = realloc(root->attr[i], + (j + 4) * sizeof(char *)); + + root->attr[i][j + 3] = NULL; // null terminate list + root->attr[i][j + 2] = c; // is it cdata? + root->attr[i][j + 1] = (v) ? ezxml_decode(v, root->ent, *c) + : NULL; + root->attr[i][j] = n; // attribute name + } + } + else if (! strncmp(s, ""); // comments + else if (! strncmp(s, ""))) + ezxml_proc_inst(root, c, s++ - c); + } + else if (*s == '<') s = strchr(s, '>'); // skip other declarations + else if (*(s++) == '%' && ! root->standalone) break; + } + + free(pe); + return ! *root->err; +} + +// Converts a UTF-16 string to UTF-8. Returns a new string that must be freed +// or NULL if no conversion was needed. +char *ezxml_str2utf8(char **s, size_t *len) +{ + char *u; + size_t l = 0, sl, max = *len; + long c, d; + int b, be = (**s == '\xFE') ? 1 : (**s == '\xFF') ? 0 : -1; + + if (be == -1) return NULL; // not UTF-16 + + u = malloc(max); + for (sl = 2; sl < *len - 1; sl += 2) { + c = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) //UTF-16BE + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); //UTF-16LE + if (c >= 0xD800 && c <= 0xDFFF && (sl += 2) < *len - 1) { // high-half + d = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); + c = (((c & 0x3FF) << 10) | (d & 0x3FF)) + 0x10000; + } + + while (l + 6 > max) u = realloc(u, max += EZXML_BUFSIZE); + if (c < 0x80) u[l++] = (char)c; // US-ASCII subset + else { // multi-byte UTF-8 sequence + for (b = 0, d = c; d; d /= 2) b++; // bits in c + b = (b - 2) / 5; // bytes in payload + u[l++] = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head + while (b) u[l++] = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload + } + } + return *s = realloc(u, *len = l); +} + +// frees a tag attribute list +void ezxml_free_attr(char **attr) { + int i = 0; + char *m; + + if (! attr || attr == EZXML_NIL) return; // nothing to free + while (attr[i]) i += 2; // find end of attribute list + m = attr[i + 1]; // list of which names and values are malloced + for (i = 0; m[i]; i++) { + if (m[i] & EZXML_NAMEM) free(attr[i * 2]); + if (m[i] & EZXML_TXTM) free(attr[(i * 2) + 1]); + } + free(m); + free(attr); +} + +// parse the given xml string and return an ezxml structure +ezxml_t ezxml_parse_str(char *s, size_t len) +{ + ezxml_root_t root = (ezxml_root_t)ezxml_new(NULL); + char q, e, *d, **attr, **a = NULL; // initialize a to avoid compile warning + int l, i, j; + + root->m = s; + if (! len) return ezxml_err(root, NULL, "root tag missing"); + root->u = ezxml_str2utf8(&s, &len); // convert utf-16 to utf-8 + root->e = (root->s = s) + len; // record start and end of work area + + e = s[len - 1]; // save end char + s[len - 1] = '\0'; // turn end char into null terminator + + while (*s && *s != '<') s++; // find first tag + if (! *s) return ezxml_err(root, s, "root tag missing"); + + for (; ; ) { + attr = (char **)EZXML_NIL; + d = ++s; + + if (isalpha(*s) || *s == '_' || *s == ':' || *s < '\0') { // new tag + if (! root->cur) + return ezxml_err(root, d, "markup outside of root element"); + + s += strcspn(s, EZXML_WS "/>"); + while (isspace(*s)) *(s++) = '\0'; // null terminate tag name + + if (*s && *s != '/' && *s != '>') // find tag in default attr list + for (i = 0; (a = root->attr[i]) && strcmp(a[0], d); i++); + + for (l = 0; *s && *s != '/' && *s != '>'; l += 2) { // new attrib + attr = (l) ? realloc(attr, (l + 4) * sizeof(char *)) + : malloc(4 * sizeof(char *)); // allocate space + attr[l + 3] = (l) ? realloc(attr[l + 1], (l / 2) + 2) + : malloc(2); // mem for list of maloced vals + strcpy(attr[l + 3] + (l / 2), " "); // value is not malloced + attr[l + 2] = NULL; // null terminate list + attr[l + 1] = ""; // temporary attribute value + attr[l] = s; // set attribute name + + s += strcspn(s, EZXML_WS "=/>"); + if (*s == '=' || isspace(*s)) { + *(s++) = '\0'; // null terminate tag attribute name + q = *(s += strspn(s, EZXML_WS "=")); + if (q == '"' || q == '\'') { // attribute value + attr[l + 1] = ++s; + while (*s && *s != q) s++; + if (*s) *(s++) = '\0'; // null terminate attribute val + else { + ezxml_free_attr(attr); + return ezxml_err(root, d, "missing %c", q); + } + + for (j = 1; a && a[j] && strcmp(a[j], attr[l]); j +=3); + attr[l + 1] = ezxml_decode(attr[l + 1], root->ent, + (char)((a && a[j]) ? *a[j + 2] : ' ')); + if (attr[l + 1] < d || attr[l + 1] > s) + attr[l + 3][l / 2] = EZXML_TXTM; // value malloced + } + } + while (isspace(*s)) s++; + } + + if (*s == '/') { // self closing tag + *(s++) = '\0'; + if ((*s && *s != '>') || (! *s && e != '>')) { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + ezxml_open_tag(root, d, attr); + ezxml_close_tag(root, d, s); + } + else if ((q = *s) == '>' || (! *s && e == '>')) { // open tag + *s = '\0'; // temporarily null terminate tag name + ezxml_open_tag(root, d, attr); + *s = q; + } + else { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + } + else if (*s == '/') { // close tag + s += strcspn(d = s + 1, EZXML_WS ">") + 1; + if (! (q = *s) && e != '>') return ezxml_err(root, d, "missing >"); + *s = '\0'; // temporarily null terminate tag name + if (ezxml_close_tag(root, d, s)) return &root->xml; + if (isspace(*s = q)) s += strspn(s, EZXML_WS); + } + else if (! strncmp(s, "!--", 3)) { // xml comment + if (! (s = strstr(s + 3, "--")) || (*(s += 2) != '>' && *s) || + (! *s && e != '>')) return ezxml_err(root, d, "unclosed