Annotation of mstools/samples/rpc/rpcread.me, revision 1.1.1.1

1.1       root        1: More Information about Microsoft RPC version 1.0 
                      2: ____________________________________________________________
                      3: 
                      4: This document contains important information about Microsoft RPC version 
                      5: 1.0 that is not included in the Microsoft RPC Programmer's Guide and 
                      6: Reference or in help.
                      7: 
                      8: Using Notepad to View This Document
                      9: 
                     10: To move through this document, press PAGE UP and PAGE DOWN or click the 
                     11: arrows at the top and bottom of the scroll bar along the right side of 
                     12: the window.
                     13: 
                     14: To print this document, choose the Print command from the File menu.
                     15: 
                     16: For help on using Notepad, press F1.
                     17: 
                     18: ____________________________________________________________
                     19: 
                     20: Introduction
                     21: 
                     22: Microsoft RPC version 1.0 is a toolkit for developing network-aware 
                     23: distributed applications in C/C++. The RPC toolkit includes:
                     24: 
                     25:     o  MIDL compilers for Microsoft Windows NT and MS-DOS
                     26: 
                     27:     o  C/C++ language header files (.H) and run-time libraries
                     28:        (.LIB and .DLL) for Microsoft Windows NT, Microsoft
                     29:        Windows, and MS-DOS
                     30: 
                     31:     o  Sample programs for Microsoft Windows NT, Microsoft
                     32:        Windows, Microsoft Windows for Workgroups, and MS-DOS
                     33: 
                     34:     o  RPC reference Help files and PostScript(TM) files
                     35: 
                     36: The Microsoft Windows NT SDK contains the Microsoft Windows NT and 
                     37: Microsoft Windows 3.x/MS-DOS versions of the RPC SDK.
                     38: 
                     39: Installation
                     40: 
                     41: The Microsoft Windows NT SDK installs the components of the Microsoft 
                     42: Windows NT RPC SDK as part of its standard installation. No additional 
                     43: installation is required.
                     44: 
                     45: To develop client-side distributed applications for MS-DOS, Microsoft 
                     46: Windows 3.x, and Windows for Workgroups version 3.1, you must install 
                     47: the Microsoft Windows 3.x/MS-DOS version of the RPC toolkit. Cross-
                     48: compilation of Windows 3.x and MS-DOS clients on Windows NT requires a 
                     49: 16-bit C compiler in the Microsoft Windows NT environment. This 
                     50: development environment is not installed during RPC SDK setup. The 
                     51: Microsoft RPC SDK for MS-DOS and Microsoft Windows requires:
                     52: 
                     53:     o  Microsoft C/C++ version 7.0
                     54: 
                     55:     o  DOS protected-mode interface (DPMI) server that
                     56:        supports version 0.9 or later of the DPMI specification and
                     57:        the MS-DOS extensions to the DPMI (Microsoft Windows or
                     58:        Windows for Workgroups versions 3.1)
                     59: 
                     60:     o  Either Microsoft Windows for Workgroups version 3.1 or
                     61:        Microsoft LAN Manager version 2.1 with NetBEUI, Named Pipes,
                     62:        or TCP/IP
                     63: 
                     64: To install the Microsoft Windows and MS-DOS version of the RPC toolkit, 
                     65: run the Setup program in the directory MSTOOLS\ RPC_DOS\NSETUP. To start 
                     66: the Setup program, choose the Run command from the File menu in the 
                     67: Microsoft Windows 3.x Program Manager 
                     68: 
                     69: When you install the RPC SDK in a directory different from the directory 
                     70: you used for Microsoft C/C++ version 7.0, you must set the environment 
                     71: variables INCLUDE, LIB, and PATH to point to the directories that 
                     72: contain the RPC header files, libraries, and DLLs and binaries, 
                     73: respectively. When you install the RPC SDK in the same directory as the 
                     74: directory you used for Microsoft C/C++ version 7.0, these environment 
                     75: variables are already set by the C/C++ version 7.0 installation program.
                     76: 
                     77: RPC Documentation
                     78: 
                     79: The following Microsoft RPC version 1.0 reference materials are 
                     80: available in published book form and in PostScript file format:
                     81: 
                     82:      Microsoft RPC Programmer's Guide and Reference
                     83:            Part I: Programmer's Guide
                     84:            Part II: Run-time API Reference
                     85:            Part III: MIDL Language Reference
                     86: 
                     87: Use the PostScript files to print individual chapters of the 
                     88: documentation on your PostScript printer.
                     89: 
                     90: The following run-time and MIDL reference Help files are available on 
                     91: line:
                     92: 
                     93: RPC10WH.HLP    WinHelp run-time API reference 
                     94: RPC10QH.HLP    QuickHelp run-time API reference 
                     95: MIDL10WH.HLP   WinHelp MIDL reference 
                     96: MIDL10QH.HLP   QuickHelp MIDL reference
                     97: 
                     98: RPC sample-program source files are available in the directory 
                     99: MSTOOLS\SAMPLES\RPC. MS-DOS and Microsoft Windows versions of some 
                    100: samples are available when you install the MS-DOS and Microsoft Windows 
                    101: 3.x version of the RPC SDK. You must compile the client samples on the 
                    102: client computer. The file MSTOOLS\SAMPLES\RPC\README.TXT describes each 
                    103: sample.
                    104: 
                    105: ____________________________________________________________
                    106: 
                    107: Contents
                    108: 
                    109: These release notes contain additional information on the following 
                    110: topics:
                    111: 
                    112: 1.0  DCE interoperability issues
                    113: 
                    114: 2.0  Gateway required for DCE NSI API interoperability
                    115: 
                    116: 3.0  Using Microsoft RPC with Microsoft Windows for Workgroups
                    117: 
                    118: 4.0  Packing and alignment considerations
                    119: 
                    120: 5.0  MIDL switch "-env generic" not supported
                    121: 
                    122: 6.0  C stub source code causes compilation warnings
                    123: 
                    124: 7.0  Updated command line help for the MIDL compiler
                    125: 
                    126: 8.0  Creating installation disks for your application
                    127: 
                    128: 9.0  Running the locator and endpoint mapper
                    129: 
                    130: 10.0 Updating RPC registry entries for new NetBIOS configurations
                    131: 
                    132: 11.0 Support for multiple locators
                    133: 
                    134: 12.0 NetBIOS requires larger MS-DOS application stack
                    135: 
                    136: 13.0 Using the new C _stdcall calling convention with RPC
                    137: 
                    138: 14.0 RpcWinSetYieldInfo not supported for Win32 applications
                    139: 
                    140: 15.0  Uuidgen utility provided for Microsoft Windows NT
                    141: 
                    142: 16.0  Use NULL security descriptor with RpcUseAllProtseqs
                    143: 
                    144: 17.0  Leading zeroes in version numbers do not create unique values
                    145: 
                    146: 18.0  Const initialization 
                    147: 
                    148: 19.0  Include three header files in your distributed applications
                    149: 
                    150: 20.0  Context handle issues
                    151: 
                    152: 21.0  Only one error_status_t parameter allowed
                    153: 
                    154: 22.0  Unsized arrays issues
                    155: 
                    156: 23.0  Separate in, out parameters to avoid memory orphaning
                    157: 
                    158: 24.0  Small model application development not supported
                    159: 
                    160: 25.0  Single process cannot be client, server using NetBIOS
                    161: 
                    162: 26.0  Escape sequences not correct in the generated header files
                    163: 
                    164: 27.0  Ncalrpc transport issues
                    165: 
                    166: 28.0  RpcNsBindingExport requires non-null interface parameter
                    167: 
                    168: 29.0  Configuring RPC name service for LAN Manager networks
                    169: 
                    170: 30.0  Length_is applied to pointer causes error
                    171: ____________________________________________________________
                    172: 
                    173: 1.0 DCE interoperability issues
                    174: 
                    175: The Microsoft RPC endpoint mapper and run-time libraries are compatible 
                    176: with the DCE endpoint mapper interface.
                    177: 
                    178: When you use the DCE Cell Directory Service, you must use a gateway to 
                    179: the DCE server (see release note 2.0).
                    180: 
                    181: Full pointers (pointers associated with the attribute [ptr]) are not 
                    182: completely implemented in Microsoft RPC version 1.0. To allow 
                    183: portability of DCE applications, the MIDL compiler treats full pointers 
                    184: as unique pointers, which means that aliasing is not supported. The use 
                    185: of full pointers that cause aliasing can lead to undefined results.
                    186: 
                    187: DCE host names are case-sensitive. Specify the hostname exactly as it 
                    188: appears or the client will not be able to locate the host server.
                    189: 
                    190: In DCE-compatibility mode, the MIDL compiler provided with this beta 
                    191: release of Microsoft RPC version 1.0 incorrectly accepts handles in 
                    192: positions other than the first parameter. The MIDL compiler in DCE-
                    193: compatibility mode incorrectly does not accept BOOLEAN as a switch type.
                    194: 
                    195: This beta release does not support the name service environment variable 
                    196: RPC_DEFAULT_ENTRY_NAME, but it does provide an alternate method to 
                    197: specify the default syntax. Microsoft RPC configuration settings are 
                    198: available in the Microsoft Windows NT registry and in the MS-DOS and 
                    199: Microsoft Windows 3.x file RPCREG.DAT. To change the default syntax, set 
                    200: the registry entry SOFTWARE\Microsoft\Rpc\NameService\DefaultSyntax.
                    201: 
                    202: Other differences between the Microsoft and DCE implementations are 
                    203: documented in the RPC Programmer's Guide and Reference.
                    204: 
                    205: 2.0 Gateway required for DCE NSI API interoperability
                    206: 
                    207: When using Microsoft RPC version 1.0 for Microsoft Windows in an OSF DCE 
                    208: environment, the DCE Cell Directory Service (CDS) is used as the RPC 
                    209: name service. However, the OSF has not yet released a specification of 
                    210: the protocol used to access the CDS. To allow interoperation between DCE 
                    211: computers and RPC client applications that call RPC name service API 
                    212: functions, you must use a gateway to the DCE CDS.
                    213: 
                    214: To help you develop such a gateway, the Microsoft RPC SDK provides an 
                    215: interface for a gateway protocol in the files SAMPLES\NS\CDS\NSICLT.IDL, 
                    216: NSSVR.IDL, and NSICOM.IDL, and provides the client-side implementation 
                    217: of this gateway protocol in RPCNS.DLL. One such implementation of the 
                    218: server side gateway is currently available in the Digital Equipment 
                    219: Corporation DCE Starter Kit.
                    220: 
                    221: To use the gateway so that your RPC application can interoperate with 
                    222: DCE RPC applications:
                    223: 
                    224: 1) Verify that the gateway is started on the DCE host
                    225: 
                    226: 2) Verify that the client is running the TCP/IP transport
                    227: 
                    228: 3) (Microsoft Windows NT only) Set the registry entry 
                    229: Software\Microsoft\Rpc\NameService\ServerNetworkAddress to a string of 
                    230: the form "<ip address of gateway 1>; <ip address of gateway 2>...", 
                    231: where <ip address of gateway n> is the ip address of the nth gateway in 
                    232: the list.
                    233: 
                    234: 4) Set the following registry entries under Software\ 
                    235: Microsoft\Rpc\NameService to the following values:
                    236: 
                    237: Entry            Value
                    238: 
                    239: Protocol         ncacn_ip_tcp 
                    240: NetworkAddress   <ip addr gateway 1>; <ip addr gateway 2>...
                    241: Endpoint         <empty string>
                    242: 
                    243: To change registry entry settings on Microsoft Windows NT, use the 
                    244: REGEDIT utility. On MS-DOS and Microsoft Windows, edit the text file 
                    245: RPCREG.DAT.
                    246: 
                    247: 3.0  Using Microsoft RPC with Microsoft Windows for Workgroups
                    248: 
                    249: To successfully run Microsoft RPC distributed applications with 
                    250: Microsoft Windows for Workgroups version 3.1, you must use the Windows 
                    251: for Workgroups network services. Stop all real-mode network services 
                    252: before starting Windows for Workgroups. At the MS-DOS prompt, enter:
                    253: 
                    254:     net stop workstation /y
                    255:     win
                    256: 
                    257: 4.0  Packing and Alignment Considerations
                    258: 
                    259: You must use the same packing and alignment settings (/Zp switch) with 
                    260: both the C compiler and the MIDL compiler. Using different packing 
                    261: levels for each compiler causes undefined results. Default values are 
                    262: set for each target operating system. You can specify the /Zp switch to 
                    263: verify that the correct packing and alignment settings are used on both 
                    264: compilers.
                    265: 
                    266: For Microsoft Windows 3.x and MS-DOS-based distributed applications, use 
                    267: one of the following two methods:
                    268: 
                    269: a.  Compile using /Zp2 with both the MIDL and C compilers
                    270: 
                    271: b.  Compile using any /Zp level (use the same level for both the MIDL 
                    272: and C compilers; the level /Zp4 produces the most efficient marshalling 
                    273: code) and add the following code to the files RPC.H and RPCNDR.H:
                    274: 
                    275: #pragma pack(2)   /* at start of rpc.h and rpcndr.h */ 
                    276: ... 
                    277: #pragma pack ()   /* at end, restore default level */
                    278: 
                    279: 5.0  MIDL switch "-env generic" not supported
                    280: 
                    281: The MIDL compiler environment switch "-env generic" is not supported in 
                    282: this version. When your target operating system is the same as the 
                    283: development environment, you do not have to specify an environment 
                    284: switch; the default settings are correct. Otherwise, use the specific 
                    285: environment switch that corresponds to your target application 
                    286: environment: "-env win32", "-env win16", or "-env dos".
                    287: 
                    288: The MIDL compiler can generate C code for other platforms when you use 
                    289: these switches. However, to cross-compile the C code for other 
                    290: platforms, you must configure your C development environment. For 
                    291: example, to cross-compile MS-DOS applications on a Microsoft Windows NT 
                    292: computer, you must set up your computer to use a 16-bit C compiler, 
                    293: include the correct header files, and link with the appropriate 
                    294: libraries. A development environment that supports MS-DOS cross-
                    295: compilation is not provided during Microsoft Windows NT installation.
                    296: 
                    297: 6.0  C Stub Source Code Causes Compilation Warnings
                    298: 
                    299: The stub files generated by the MIDL compiler may generate warnings when 
                    300: they are compiled at compiler warning level 3 and higher. These warnings 
                    301: can generally be safely ignored.
                    302: 
                    303: Unsigned character string arguments generate "incompatible pointer 
                    304: assignment warnings" when you compile the stubs. The C run-time library 
                    305: functions use char * arguments rather than unsigned char * arguments. 
                    306: 
                    307: When your C compiler does not use the same default character sign as the 
                    308: MIDL compiler, use the MIDL compiler switch /char to generated explicit 
                    309: declarations in the generated file. For more information, see the Microsoft 
                    310: RPC Programmer's Guide and Reference.
                    311: 
                    312: Compiler warning messages about unreferenced local variables, mismatched 
                    313: comparisons between integral types, and mismatched pointer assignments 
                    314: in stubs can be safely ignored.
                    315: 
                    316: 7.0  Updated command line help
                    317: 
                    318: The updated help text for the MIDL compiler appears as follows:
                    319: 
                    320:                        -MIDL COMPILER OPTIONS-
                    321:                                 -MODE-
                    322: /ms_ext              Microsoft extensions mode
                    323: /app_config          Application configuration mode
                    324: /implicit_local      Assume non-remote data is [local]
                    325: 
                    326:                                -INPUT-
                    327: /acf filename        Specify the attribute configuration file
                    328: /I directory         Specify directory for import and include files
                    329: /import ms_ext       Support only used types; one file
                    330: /import ms_nt        Support only used types; multiple files
                    331: /import osf          Assume imported IDL files are compiled separately
                    332: /no_def_idir         Ignore the current and the INCLUDE directories
                    333: 
                    334:                        -OUTPUT FILE GENERATION-
                    335: /client all          Generate client stub and aux files
                    336: /client aux          Generate client auxiliary file only
                    337: /client none         Generate no client files
                    338: /client stub         Generate client stub file only
                    339: /out directory       Destination directory for output files
                    340: /server all          Generate server stub and aux files
                    341: /server aux          Generate server aux file only
                    342: /server none         Generate no server files
                    343: /server stub         Generate server stub file only
                    344: /syntax_check        Check syntax only; do not generate output files
                    345: /Zs                  Check syntax only; do not generate output files
                    346: 
                    347:                          -OUTPUT FILE NAMES-
                    348: /caux filename       Specify client auxiliary file name
                    349: /cstub filename      Specify client stub file name
                    350: /cswtch filename     Specify switch stub file name
                    351: /header filename     Specify header file name
                    352: /saux filename       Specify server auxiliary file name
                    353: /sstub filename      Specify server stub file name
                    354: 
                    355:                 -C COMPILER AND PREPROCESSOR OPTIONS-
                    356: /cpp_cmd  cmd_line   Specify name of C preprocessor
                    357: /cpp_opt  options    Specify additional C preprocessor options
                    358: /D name[=def]        Pass #define name, optional value to C preprocessor
                    359: /no_cpp              Turn off the C preprocessing option
                    360: /U name              Remove any previous definition (undefine)
                    361: 
                    362:                             -ENVIRONMENT-
                    363: /char signed         C compiler default char is signed
                    364: /char unsigned       C compiler default char is unsigned
                    365: /char ascii7         Char values limited to 0-127
                    366: /env dos             MS-DOS client
                    367: /env win16           Microsoft Windows 16-bit (Win 3.x)
                    368: /env win32           Microsoft Windows 32-bit (NT)
                    369: /env generic         Produce one header for all environments
                    370: 
                    371:                      -ERROR AND WARNING MESSAGES-
                    372: /error all           Check for all types of errors
                    373: /error allocation    Check for out of memory errors
                    374: /error enum          Check for errors converting long, short enum
                    375: /no_warn             Suppress compiler warning messages
                    376: /W{0|1|2|3|4}        Warning level 0-4 (default = 1)
                    377: /warn{0|1|2|3|4}     Warning level 0-4 (default = 1)
                    378: /WX                  Treat all warnings as errors
                    379: 
                    380:                             -OPTIMIZATION-
                    381: /pack {1|2|4|8}      Designate packing level of structures
                    382: /Zp{1|2|4|8}         Designate packing level of structures
                    383: 
                    384:                            -MISCELLANEOUS-
                    385: @response_file       Accept input from a response file
                    386: /?                   List MIDL compiler switch settings
                    387: /confirm             Display options without compiling MIDL source
                    388: /help                Display a list of MIDL compiler switches
                    389: /prefix "s1" "s2"    Replace default suffix "s1" with prefix "s2"
                    390: 
                    391: 8.0  Creating installation disks for your application
                    392: 
                    393: Your distributed application's installation program must set up the RPC 
                    394: runtime for users. Two batch files help you create RPC run-time 
                    395: installation disks that can accompany your distributed application. 
                    396: These batch files create installation disks that contain the Setup 
                    397: program and the Microsoft RPC run-time libraries, allowing you to 
                    398: distribute the Microsoft RPC run-time libraries with your distributed 
                    399: application. The following two batch files are provided:
                    400: 
                    401: wrundisk.bat  creates Microsoft Windows/MS-DOS run-time install disk
                    402: drundisk.bat  creates MS-DOS-only run-time install disk
                    403: 
                    404: 8.1 Creating installation disks for Microsoft Windows applications
                    405: 
                    406: Insert a formatted, blank floppy disk in the destination drive. Start 
                    407: the installation disk utility by typing "wrundisk" followed by the 
                    408: optional source and destination drive names. The wrundisk.bat file uses 
                    409: the following syntax:
                    410: 
                    411: wrundisk [source:[path] [dest:]]
                    412: 
                    413: where
                    414: 
                    415: source is a disk or directory that contains the compressed files that 
                    416: are provided in the Microsoft Windows NT SDK directory 
                    417: \mstools\rpc_dos\disk1.
                    418: 
                    419: dest is a drive name specifying the drive that contains the formatted, 
                    420: blank floppy disk.
                    421: 
                    422: For example,"wrundisk c:\nt\mstools\rpc_dos\disk1 a:" copies the 
                    423: compressed files to the floppy disk in the drive A.
                    424: 
                    425: Your application user can then insert the resulting installation disk in 
                    426: her computer's floppy drive and run its Setup from Microsoft Windows to 
                    427: install the RPC run-time libraries for Microsoft Windows and MS-DOS.
                    428: 
                    429: 8.2 Installation disks for MS-DOS Distributed Applications
                    430: 
                    431: The drundisk utility copies files from an installed RPC SDK. To ensure 
                    432: that all MS-DOS loadable transports are present on the run-time 
                    433: installation disk, you must select all loadable transports at the time 
                    434: you install the Microsoft RPC SDK.
                    435: 
                    436: Insert a formatted, blank floppy disk in the destination drive. Start 
                    437: the installation utility by typing "drundisk" followed by the optional 
                    438: source and destination drive names. The drundisk.bat file uses the 
                    439: following syntax:
                    440: 
                    441: drundisk [directory [dest:]]
                    442: 
                    443: where directory is the name of the directory that contains all loadable 
                    444: transport (.RPC) files and all name service dynamic link libraries.
                    445: 
                    446: For example, the command "drundisk c:\lanman.dos\netprog a:" copies the 
                    447: MS-DOS run-time libraries, the loadable transport files, and name 
                    448: service DLLs from the C hard drive to the floppy disk in drive A. Your 
                    449: application user can then use the Setup program on the run-time 
                    450: installation disk to install the RPC run-time libraries.
                    451: 
                    452: 9.0 Running the locator and endpoint mapper
                    453: 
                    454: In this release of Microsoft RPC version 1.0, the locator and endpoint 
                    455: mapper are not provided as services but as programs that you must start 
                    456: from the Microsoft Windows NT command line. The locator is the Microsoft 
                    457: implementation of the RPC name service independent API functions (NSI). 
                    458: The endpoint mapper allows the use of dynamic endpoints.
                    459: 
                    460: Start the locator using the following command syntax:
                    461: 
                    462: locator /noservice
                    463: 
                    464: Start the endpoint mapper on the RPC server using the following syntax:
                    465: 
                    466: rpcss noservice
                    467: 
                    468: Start the locator and endpoint mapper before starting the server 
                    469: application.
                    470: 
                    471: Note: These services are not complete in this beta release of Microsoft 
                    472: RPC version 1.0. The endpoint mapper does not support dynamic endpoints 
                    473: for the TCP/IP transport on MIPS computers and does not support dynamic 
                    474: endpoints for NetBIOS transports. The locator service does not start 
                    475: automatically in this beta release. In a LAN Manager network 
                    476: environment, you must start the locator service on the primary domain 
                    477: controller and on each RPC server. For more information about 
                    478: configuring the RPC Name Service, see release notes 2.0 and 29.0.
                    479: 
                    480: 10.0 Updating RPC registry entries for new NetBIOS configurations
                    481: 
                    482: The Microsoft RPC Setup program automatically maps protocol strings to 
                    483: NetBIOS lana numbers and writes these settings in the registry. These 
                    484: mappings work as long as you only have one network card and one network 
                    485: protocol. If this is not the case, or if you change your network 
                    486: configuration after installing Microsoft RPC, you must update the 
                    487: registry to indicate the new correspondences between protocol strings 
                    488: and NetBIOS lana numbers.
                    489: 
                    490: For Microsoft Windows NT, the mapping string appears in the registry 
                    491: tree under \Software\Microsoft\Rpc\NetBios. For MS-DOS, the mapping 
                    492: string appears in the registry file RPCREG.DAT.
                    493: 
                    494: The mapping string uses the following syntax:
                    495: 
                    496: ncacn_nb_<protocol><digit> = <lana_number>
                    497: 
                    498: where
                    499: 
                    500: <protocol> indicates the protocol type. For MS-DOS, the valid <protocol> 
                    501: value is "nb". For Microsoft Windows NT, valid <protocol> values are as 
                    502: follows:
                    503: 
                    504:      <protocol>   Protocol type
                    505: 
                    506:      xns          XNS
                    507:      nb           NetBEUI
                    508:      tcpip        TCP/IP
                    509: 
                    510: <digit> indicates a unique digit associated with each instance of a 
                    511: protocol. Use the value 0 for the first instance of a protocol and use 
                    512: the next consecutive digit for each additional instance of that 
                    513: protocol. For example, assign the value ncacn_nb_nb0 to the first 
                    514: NetBEUI entry; assign the value ncacn_nb_nb1 to the second NetBEUI 
                    515: entry.
                    516: 
                    517: <lana_number> indicates the NetBIOS lana number. A unique lana number is 
                    518: associated with each network adapter present in the computer. For LAN 
                    519: Manager networks, the lana numbers for each network card are available 
                    520: in the configuration files LANMAN.INI and PROTOCOL.INI. For more 
                    521: information about the lana number, see your network documentation.
                    522: 
                    523: For example, the following mapping string describes a configuration that 
                    524: uses the NetBEUI protocol over an adapter card that is assigned lana 
                    525: number 0:
                    526: 
                    527: ncacn_nb_nb0=0
                    528: 
                    529: When you install a second card that supports both XNS and NetBEUI 
                    530: protocols, the mapping strings appear as follows:
                    531: 
                    532: ncacn_nb_nb0=0 
                    533: ncacn_nb_nb1=1 
                    534: ncacn_nb_xns0=2
                    535: 
                    536: 11.0 Support for multiple locators
                    537: 
                    538: This release supports cooperation among multiple locators when the 
                    539: primary locator is an i386 computer. Each locator passes its request to 
                    540: the computer specified in the registry entry 
                    541: "SOFTWARE\Microsoft\Rpc\NameService\NetworkAddress". The default value 
                    542: for this registry entry specifies the primary domain controller as the 
                    543: primary locator.
                    544: 
                    545: For more information about the locator, see release notes 2.0 and 29.0.
                    546: 
                    547: 12.0 NetBIOS requires larger MS-DOS application stack
                    548: 
                    549: The NetBIOS transport provided with this release of Microsoft RPC 
                    550: version 1.0 for MS-DOS requires a 4K stack. You can set a 4K stack for 
                    551: your applications with the linker option "/stack:4096" or with the 
                    552: exehdr utility.
                    553: 
                    554: The link /stack option that sets the size of the stack to 4K is as 
                    555: follows: 
                    556: 
                    557:     link /stack:0x1000
                    558: 
                    559: The exehdr utility uses the following syntax: 
                    560: 
                    561:     exehdr /stack:0x1000 appname
                    562: 
                    563: where 
                    564: 
                    565:     appname is the name of your application. For example, to set the 
                    566: required NetBIOS stack size for the helloc.exe sample program, enter the 
                    567: command: 
                    568: 
                    569:     exehdr /stack:0x1000 helloc.exe
                    570: 
                    571: See your Microsoft C/C++ version 7.0 documentation for more information 
                    572: about these options.
                    573: 
                    574: 13.0  Using the new C _stdcall calling convention with RPC
                    575: 
                    576: Microsoft Win32 API functions (including the Microsoft RPC API 
                    577: functions) are defined using the C language keyword _stdcall. This 
                    578: keyword specifies a calling convention in which arguments are pushed 
                    579: onto the stack in the same order as the C language calling convention, 
                    580: but the called function (rather than the caller) pops the arguments.
                    581: 
                    582: Functions defined with _stdcall cannot use a variable number of 
                    583: arguments. The new C calling convention is also applied when you use the 
                    584: C compiler switch /Gz.
                    585: 
                    586: The old C language calling convention is specified using the C language 
                    587: keyword _cdecl or the C compiler switch /Gd.
                    588: 
                    589: When your application combines old C and new C calling conventions, you 
                    590: must take care to specify the correct function prototypes, C compiler 
                    591: switches, and linker options for these calling conventions.
                    592: 
                    593: This beta release of the Microsoft RPC MIDL compiler generates C code 
                    594: stub files that do not specify the _stdcall calling convention keyword 
                    595: (or macros that map to _stdcall). When you compile the server stubs with 
                    596: the old C calling convention, calls from the RPC server run-time library 
                    597: to the server stubs do not operate correctly.
                    598: 
                    599: A workaround is to specify the C compiler switch /Gz to select the 
                    600: _stdcall calling convention at compile time. Because the main() routine 
                    601: takes a variable number of arguments, it cannot be declared as _stdcall. 
                    602: You must explicitly declare main() as old C calling convention by using 
                    603: either the _cdecl keyword or the _CRTAPI1 macro. The RPC sample programs 
                    604: and makefiles demonstrate this workaround.
                    605: 
                    606: For more information about the _stdcall and _cdecl calling conventions, 
                    607: see the Microsoft C/C++ compiler documentation provided with Microsoft 
                    608: Windows NT.
                    609: 
                    610: 14.0 RpcWinSetYieldInfo not supported for Win32 applications, TCP/IP
                    611: 
                    612: The RPC API function RpcWinSetYieldInfo is provided for use with Win 3.x 
                    613: applications only. The ability to yield during RPC calls in the 
                    614: Microsoft Windows 3.x environment provides the following benefits:
                    615: 
                    616:     o  other Windows 3.x applications are not blocked during
                    617:        a lengthy remote procedure call
                    618: 
                    619:     o  the application that makes the remote call can
                    620:        continue to process messages such as WM_PAINT
                    621: 
                    622:     o  users can choose to cancel the remote call
                    623: 
                    624: The function RpcWinSetYieldInfo is not supported in the Win32 
                    625: environment in this release. The yield capability provided by this 
                    626: function is not as important in the Win32 environment as it is in the 
                    627: Windows 3.x environment. The Win32 preemptive multitasking environment 
                    628: lets you design your application to use multiple threads and allows your 
                    629: applications to run with other applications.
                    630: 
                    631: In this beta release, the function RpcWinSetYieldInfo has no effect when 
                    632: RPC calls are made over the TCP/IP transport.
                    633: 
                    634: 15.0  Uuidgen utility provided for Microsoft Windows NT
                    635: 
                    636: This release of the Microsoft RPC SDK includes a version of the uuidgen 
                    637: utility for Microsoft Windows NT. If the endpoint mapper has not been 
                    638: started, you must start the endpoint mapper before you start the uuidgen 
                    639: utility. To run uuidgen, enter:
                    640: 
                    641:     rpcss noservice
                    642:     uuidgen
                    643: 
                    644: After the endpoint mapper has been started once, you can start the 
                    645: uuidgen utility by entering "uuidgen." The "rpcss noservice" step is not 
                    646: required for the MS-DOS version of uuidgen.
                    647: 
                    648: 16.0  Use NULL security descriptor with RpcUseAllProtseqs
                    649: 
                    650: The RpcUseAllProtseqs security descriptor parameter must be set to NULL 
                    651: in this beta release of Microsoft RPC version 1.0. The NULL parameter 
                    652: indicates that the default ACL is applied.
                    653: 
                    654: In this beta release, you should not use the "system" account with the 
                    655: named pipe transport because this account has a default ACL.
                    656: 
                    657: 17.0  Leading zeroes in version numbers do not create unique values
                    658: 
                    659: The period between the major and minor numbers is a delimiter and does 
                    660: not represent a decimal point. For example, the version setting 1.11 
                    661: represents a major value of one and a minor value of eleven. Version 
                    662: 1.11 does not represent a value between 1.1 and 1.2. Version 1.11 
                    663: represents a value between 1.10 and 1.12. Do not use leading zeroes in 
                    664: the minor version value.
                    665: 
                    666: 18.0  Const initialization 
                    667: 
                    668: The MIDL compiler accepts void pointer initialization in some cases when 
                    669: it should report an error, as in the following:
                    670: 
                    671:     void * v = 1;
                    672: 
                    673: Although accepted by this release of the MIDL compiler, this 
                    674: initialization is not valid.
                    675: 
                    676: 19.0  Include three header files in your distributed applications
                    677: 
                    678: With this version of the Microsoft RPC SDK, your distributed application 
                    679: should include the following header files, in the following sequence:
                    680: 
                    681:     #include <RPC.H>
                    682:     #include <RPCNDR.H>
                    683:     #include "mystub.h"
                    684: 
                    685: where mystub.h is the stub file generated by the MIDL compiler.
                    686: 
                    687: 20.0  Context handle issues
                    688: 
                    689: An [in, out] context handle can be NULL on input only if another, 
                    690: explicit, handle is used as the binding handle. 
                    691: 
                    692: Context handles cannot be used as function return values, as in the 
                    693: following example:
                    694: 
                    695: [context_handle] long * MyFunc(...);
                    696: 
                    697: 21.0  Only one error_status_t parameter allowed
                    698: 
                    699: The Microsoft RPC implementation of the type error_status_t is 
                    700: equivalent to the DCE error_status_t associated with the attributes 
                    701: [fault_status, comm_status]. 
                    702: 
                    703: Unlike the DCE specification, which allows multiple parameters of type 
                    704: error_status_t, the MIDL compiler supports only one parameter of type 
                    705: error_status_t in each remote procedure.
                    706: 
                    707: 22.0  Unsized arrays issues
                    708: 
                    709: In this release of Microsoft RPC version 1.0, IDL files that feature 
                    710: unsized arrays with the size_is attributes can cause the MIDL compiler 
                    711: to generate C language stubs that contain errors. As a workaround for 
                    712: this software error, specify a maximum array size and use the length_is 
                    713: attribute.
                    714: 
                    715: 23.0  Separate in, out parameters to avoid memory orphaning
                    716: 
                    717: When your distributed application uses an [in, out, unique] pointer 
                    718: parameter, the server side of the application can change the value of 
                    719: the pointer parameter to NULL. When the server returns the NULL value to 
                    720: the client, memory referenced by the pointer before the remote procedure 
                    721: call is still present on the client side but is no longer accessible 
                    722: from that pointer. This memory is said to be "orphaned." 
                    723: 
                    724: Memory can also be orphaned even when the server returns a non-null 
                    725: value for the pointer parameter. For example, if the parameter points to 
                    726: a complex data structure such as a tree, the server side of the 
                    727: application can delete nodes of the tree without modifying the value of 
                    728: the pointer to the root node of the tree.
                    729: 
                    730: Repeated orphaning of memory on the client without freeing the unused 
                    731: memory can lead to a situation where the client runs out of available 
                    732: memory resources.  You can prevent such a client "memory leak" by 
                    733: maintaining pointers to the allocated memory. One method that maintains 
                    734: pointers to allocated memory on the client is to use separate [in] and 
                    735: [out, unique] parameters rather than a single [in, out, unique] 
                    736: parameter.
                    737: 
                    738: By using separate [in] and [out] parameters, you can force the 
                    739: distributed application to allocate memory on both the client and server 
                    740: each time the client application calls the remote procedure. The server 
                    741: stub allocates memory for [in] data when the client calls the remote 
                    742: procedure. The client stub allocates memory for [out] data during return 
                    743: from the remote procedure. 
                    744: 
                    745: This technique, like double-buffering, can use twice as much memory as 
                    746: needed for each data structure. To reduce memory use, your client 
                    747: application can free the memory associated with the [in] parameter after 
                    748: making the remote procedure call.
                    749: 
                    750: 24.0  Small model application development not supported
                    751: 
                    752: This beta release of Microsoft RPC version 1.0 for MS-DOS and Microsoft 
                    753: Windows 3.x supports development of large model applications only. The 
                    754: link libraries and dynamic link libraries supplied with this release are 
                    755: large-model libraries.
                    756: 
                    757: In this beta release, you cannot create small-model applications that 
                    758: use RPC.
                    759: 
                    760: 25.0  Single process cannot be client, server using NetBIOS
                    761: 
                    762: This beta release of Microsoft RPC version 1.0 does not support 
                    763: applications that use the NetBIOS transport and that are designed as a 
                    764: single process that makes calls to both the client and server run-time 
                    765: libraries.
                    766: 
                    767: 26.0  Escape sequences not correct in the generated header files
                    768: 
                    769: The MIDL compiler provided with this beta release of Microsoft RPC 
                    770: version 1.0 does not correctly produce escape sequences in generated C 
                    771: language header files.
                    772: 
                    773: Character constants that use hexadecimal notation in the IDL file 
                    774: incorrectly appear as null characters in the generated header file. For 
                    775: example, the IDL file statement:
                    776: 
                    777: const char HexNotationChar = '\x10';
                    778: 
                    779: generates the incorrect definition in the generated .H file:
                    780: 
                    781: #define HexNotationChar '\0'
                    782: 
                    783: Strings that contain the escaped double-quote character appear in the 
                    784: generated header file without the escape character. For example, the 
                    785: string "an escaped double quote\"" is incorrectly generated as the 
                    786: string "an escaped double quote"".
                    787: 
                    788: As a workaround, define escape sequences in a common header file that 
                    789: can be directly included by your application.
                    790: 
                    791: 27.0  Ncalrpc transport issues
                    792: 
                    793: In this beta release of Microsoft RPC version 1.0, client applications 
                    794: that use the protocol ncalrpc with implicit handles must include code to 
                    795: handle exceptions before the client can connect to the server. The 
                    796: number of exceptions raised during binding is related to the number of 
                    797: times a client has connected to the server. Exception 0x6E6 is raised. 
                    798: After handling this exception as many times as it is raised, the client 
                    799: can connect to the server.
                    800: 
                    801: The ncalrpc transport supplied in this beta release does not support 
                    802: callbacks and does not support buffers larger than 32K.
                    803: 
                    804: 28.0  RpcNsBindingExport requires a non-null interface parameter
                    805: 
                    806: In this release of Microsoft RPC version 1.0, the RPC API function 
                    807: RpcNsBindingExport requires a non-zero value for the parameter IfSpec. 
                    808: When you supply a NULL value for IfSpec, the function incorrectly 
                    809: returns the value RPC_S_NAME_SERVICE_UNAVAILABLE.
                    810: 
                    811: 29.0  Configuring RPC name service for LAN Manager networks
                    812: 
                    813: To run the locator service on LAN Manager networks, you must run a 
                    814: primary locator on a domain controller and you must run a locator on 
                    815: each computer that runs an RPC server. 
                    816: 
                    817: When the primary locator runs on the primary domain controller (PDC), no 
                    818: configuration is needed. The default registry settings assume that the 
                    819: primary locator runs on the PDC. 
                    820: 
                    821: When the primary locator runs on a computer other than the primary 
                    822: domain controller, change the registry entry 
                    823: SOFTWARE\Microsoft\Rpc\NameService\NetworkAddress to the names of the 
                    824: computers that run the locator service. Separate computer names with the 
                    825: semicolon character ";". 
                    826: 
                    827: The NameService registry entry NetworkAddress is used by clients during 
                    828: name service lookup operations. The NameService registry entry 
                    829: ServerNetworkAddress is used by servers during name service export 
                    830: operations.
                    831: 
                    832: For Microsoft Windows NT, use the regedit utility to change the registry 
                    833: entry. For MS-DOS and Microsoft Windows 3.1, use a text editor to change 
                    834: the entry name \Root\Software\Microsoft\Rpc\NameService\NetworkAddress 
                    835: in the file RPCREG.DAT.
                    836: 
                    837: For information about using the RPC name service with DCE host 
                    838: computers, see the instructions provided in release note 2.0, "Gateway 
                    839: required for DCE NSI API interoperability."
                    840: 
                    841: 30.0  Length_is applied to pointer causes error
                    842: 
                    843: The MIDL compiler supplied with this beta release of Microsoft RPC 
                    844: version 1.0 generates incorrect stub code for an IDL file that applies 
                    845: the length_is attribute to a pointer that represents an unsigned array. 
                    846: For example, in the following example, the data size is specified as 1 
                    847: rather than the value represented by the variable s:
                    848: 
                    849: void foo( [length_is(s)] long * pl, short s);
                    850: 
                    851: -----------------------------------------------------------
                    852: PostScript is a registered trademark of Adobe Systems, Inc.
                    853: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.