Annotation of mstools/info/rpcread.me, revision 1.1

1.1     ! root        1: More Information about Microsoft RPC version 1.0
        !             2: ____________________________________________________________
        !             3: 
        !             4: This document contains important information about Microsoft
        !             5: RPC version 1.0 that is not included in the Microsoft RPC
        !             6: Programmer's Guide and Reference or in online help.
        !             7: 
        !             8: Using Notepad to View This Document
        !             9: 
        !            10: To move through this document, press PAGE UP and PAGE DOWN
        !            11: or click the arrows at the top and bottom of the scroll bar
        !            12: along the right side of the window.
        !            13: 
        !            14: To print this document, choose the Print command from the
        !            15: File menu.
        !            16: 
        !            17: For Help on using Notepad, press F1.
        !            18: 
        !            19: ____________________________________________________________
        !            20: 
        !            21: Introduction
        !            22: 
        !            23: Microsoft RPC SDK version 1.0 is a toolkit for developing
        !            24: network-aware distributed applications in C/C++. The RPC 
        !            25: toolkit includes:
        !            26: 
        !            27:      MIDL compilers for Microsoft Windows NT and MS-DOS
        !            28:      C/C++ language header files and run-time libraries for
        !            29: Microsoft Windows NT, Microsoft Windows, and MS-DOS
        !            30:      Sample programs for Microsoft Windows NT, Microsoft
        !            31: Windows, and MS-DOS
        !            32:      RPC reference online help files and PostScript(TM)
        !            33: files
        !            34: 
        !            35: The Microsoft Windows NT SDK contains both the Microsoft 
        !            36: Windows NT and Microsoft Windows 3.x/MS-DOS versions of the 
        !            37: RPC SDK.
        !            38: 
        !            39: Installation
        !            40: 
        !            41: The Microsoft Windows NT SDK installs the components of the 
        !            42: Microsoft Windows NT RPC SDK as part of its standard 
        !            43: installation. No additional installation is required.
        !            44: 
        !            45: You must install the Microsoft Windows 3.x and MS-DOS 
        !            46: versions of the RPC toolkit. This software requires:
        !            47: 
        !            48:      Microsoft C/C++ version 7.0
        !            49:      DOS Protected Mode Interface (DPMI) server that 
        !            50: supports version 0.9 or later of the DPMI specification and 
        !            51: the MS-DOS extensions to the DPMI (or Microsoft Windows 3.1)
        !            52:      Microsoft LAN Manager version 2.1 with NetBEUI, Named
        !            53: Pipes, or TCP/IP
        !            54: 
        !            55: To install the Microsoft Windows and MS-DOS version of the
        !            56: RPC toolkit, run the Setup program that is available in the
        !            57: directory NT\MSTOOLS\RPC_DOS\NSETUP under Microsoft Windows 3.x.
        !            58: 
        !            59: The environment variables INCLUDE, LIB, and PATH should be
        !            60: set to point to the directories that contain the Microsoft
        !            61: C/C++ version 7.0 development tools. (The C/C++ version 7.0 
        !            62: installation program sets these environment variables.)
        !            63: 
        !            64: RPC Documentation
        !            65: 
        !            66: The following Microsoft RPC version 1.0 reference materials
        !            67: are available in published book form and in PostScript file
        !            68: format:
        !            69: 
        !            70:      RPC Programmer's Guide and Reference
        !            71:           Part I: Programmer's Guide
        !            72:           Part II: Run-time API Reference
        !            73:           Part III: MIDL Language Reference
        !            74: 
        !            75: The PostScript files allow you to print individual chapters
        !            76: of the documentation on your own PostScript printer.
        !            77: 
        !            78: The following run-time and MIDL reference help files are
        !            79: available on line:
        !            80: 
        !            81: RPC10WH.HLP    WinHelp run-time API reference
        !            82: RPC10QH.HLP    QuickHelp run-time API reference
        !            83: MIDL10WH.HLP   WinHelp MIDL reference
        !            84: MIDL10QH.HLP   QuickHelp MIDL reference
        !            85: 
        !            86: RPC sample program source files are available in the
        !            87: directory NT\MSTOOLS\SAMPLES\RPC. The file
        !            88: NT\MSTOOLS\SAMPLES\RPC\README.TXT describes each sample.
        !            89: 
        !            90: ____________________________________________________________
        !            91: 
        !            92: Contents
        !            93: 
        !            94: This document contains additional information on the
        !            95: following topics:
        !            96: 
        !            97: 1.0  DCE interoperability issues
        !            98: 
        !            99: 2.0  Packing and alignment considerations
        !           100: 
        !           101: 3.0  String arrays not transmitted correctly; use pointers
        !           102: 
        !           103: 4.0  MIDL switch "-env generic" not supported
        !           104: 
        !           105: 5.0  Cast char constants as small in OSF compatibility mode
        !           106: 
        !           107: 6.0  MIDL type wchar_t not supported in all modes
        !           108: 
        !           109: 7.0  MIDL attribute pointer_default() not OSF compatible
        !           110: 
        !           111: 8.0  MIDL interprets "handle" in attribute list as keyword
        !           112: 
        !           113: 9.0  C stub source code causes compilation warnings
        !           114: 
        !           115: 10.0 Use tagged structure declarations
        !           116: 
        !           117: 11.0 Unsized arrays not supported
        !           118: 
        !           119: 12.0 Updated command line help for the MIDL compiler
        !           120: 
        !           121: 13.0 RpcBindingToStringBinding does not return network address
        !           122: 
        !           123: 14.0 RpcServerUseAllProtseqs, RpcNetworkInqProtseqs incomplete
        !           124: 
        !           125: 15.0 DCE error codes not mapped to Win32 error codes
        !           126: 
        !           127: 16.0 Using the MS-DOS UuidGen utility with Microsoft Windows NT
        !           128: 
        !           129: 17.0 Creating installation disks for your application
        !           130: 
        !           131: 18.0 New LAN Manager 2.1 DLL required for Windows clients
        !           132: 
        !           133: 19.0 Running the locator and endpoint mapper
        !           134: 
        !           135: 20.0 Updating RPC registry entries for new NetBIOS configurations
        !           136: 
        !           137: 21.0 RPC application exception handling for Microsoft Windows 3.x
        !           138: 
        !           139: ____________________________________________________________
        !           140: 
        !           141: 1.0 DCE interoperability issues
        !           142: 
        !           143: The Microsoft implementations of the name service and
        !           144: endpoint mapper that are provided with this release of
        !           145: Microsoft RPC version 1.0 do not interoperate with DCE
        !           146: implementations. 
        !           147: 
        !           148: The endpoint mapper is the equivalent of the DCE RPC daemon
        !           149: rpcd. DCE clients cannot resolve endpoints from the
        !           150: Microsoft endpoint mapper and Microsoft clients cannot
        !           151: resolve endpoints from the DCE RPC daemon rpcd.
        !           152: 
        !           153: This release of Microsoft RPC version 1.0 defines the type
        !           154: error_status_t as unsigned short. DCE implementations define
        !           155: error_status_t as unsigned long.
        !           156: 
        !           157: Full pointers (pointers associated with the attribute [ptr]) 
        !           158: are not completely implemented in this release of Microsoft 
        !           159: RPC version 1.0. To allow portability of DCE applications, 
        !           160: MIDL treats full pointers as unique pointers, which means 
        !           161: that aliasing is not supported. The use of full pointers 
        !           162: that cause aliasing can cause undefined results.
        !           163: 
        !           164: DCE host names are case-sensitive. Specify the hostname 
        !           165: exactly as it appears or the client will not be able to 
        !           166: locate the host server.  
        !           167: 
        !           168: Other differences between the Microsoft and DCE
        !           169: implementations are documented in the RPC Programmer's Guide
        !           170: and Reference.
        !           171: 
        !           172: 2.0  Packing and Alignment Considerations
        !           173: 
        !           174: You must use the same packing and alignment settings (/Zp 
        !           175: switch) with both the C compiler and the MIDL compiler. 
        !           176: Using different packing levels for each compiler causes 
        !           177: undefined results. Default values are set for each target 
        !           178: operating system. You can specify the /Zp switch to verify 
        !           179: that the correct packing and alignment settings are used on 
        !           180: both compilers.
        !           181: 
        !           182: For Microsoft Windows 3.x and MS-DOS-based distributed
        !           183: applications, use one of the following two methods:
        !           184: 
        !           185: a.  Compile using /Zp2 with both the MIDL and C compilers
        !           186: 
        !           187: b.  Compile using any /Zp level (use the same level
        !           188: for both the MIDL and C compilers; the level /Zp4 produces
        !           189: the most efficient marshalling code) and add the following 
        !           190: code to the files RPC.H and RPCNDR.H:
        !           191: 
        !           192: #pragma pack(2)   /* at start of rpc.h and rpcndr.h */
        !           193: ...
        !           194: #pragma pack ()   /* at end, restore default level */
        !           195: 
        !           196: 3.0  String arrays not transmitted correctly; use pointers
        !           197: 
        !           198: Arrays of strings are not transmitted correctly in some
        !           199: cases because the MIDL compiler contains a known software
        !           200: error that leads to incorrect stub source files. In this
        !           201: release, avoid the use of such string arrays as the
        !           202: following:
        !           203: 
        !           204: typedef [string] char str[80];
        !           205: void foo([out,length_is(*len)] str array[100],
        !           206:          [out] short *len);
        !           207: 
        !           208: In this release of Microsoft RPC version 1.0, an [out] array
        !           209: of string pointers must be initialized with valid non-null
        !           210: values before the remote procedure call. When an array of
        !           211: null pointer values is transmitted to the server, the stub
        !           212: does not correctly allocate storage for the strings on
        !           213: return to the client. For example, the array pArray must be
        !           214: initialized:
        !           215: 
        !           216: typedef [string] char * PSTRINGTYPE;
        !           217: void OutStringSArray(
        !           218:           [in, out] long * psize,
        !           219:           [out, size_is(*psize)] PSTRINGTYPE * pArray);
        !           220: 
        !           221: 4.0  MIDL switch "-env generic" not supported
        !           222: 
        !           223: The MIDL compiler environment switch "-env generic" is
        !           224: not supported in this version. When your target operating 
        !           225: system is the same as the development environment, you do 
        !           226: not have to specify an environment switch; the default 
        !           227: settings are correct. Otherwise, use the specific 
        !           228: environment switch that corresponds to your target 
        !           229: application environment: "-env win32", "-env win16", or 
        !           230: "-env dos".
        !           231: 
        !           232: 5.0  Cast char constants as small in OSF compatibility mode
        !           233: 
        !           234: The MIDL compiler expects char constants to be type
        !           235: small. The following definition generates a type mismatch
        !           236: error message:
        !           237: 
        !           238: const char c = 'a';   // fails with type mismatch error
        !           239: 
        !           240: Use the following statement to avoid the error:
        !           241: 
        !           242: const char c = (small) 'a';
        !           243: 
        !           244: This temporary solution applies only to this release of
        !           245: Microsoft RPC version 1.0 and will generate errors in OSF
        !           246: versions of the IDL compiler and in future releases of the
        !           247: MIDL compiler.
        !           248: 
        !           249: 6.0  MIDL type "wchar_t" not supported in all modes
        !           250: 
        !           251: The extended character type wchar_t is not fully supported
        !           252: in this release of Microsoft RPC version 1.0.
        !           253: 
        !           254: The wchar_t type is supported in the following modes:
        !           255: 
        !           256:      implicit_local
        !           257:      app_config
        !           258:      ms_ext
        !           259:      (ms_ext + implicit_local)
        !           260: 
        !           261: The wchar_t type is not supported in the following modes:
        !           262: 
        !           263:      OSF compatibility mode (no switches)
        !           264:      (implicit_local + app_config)
        !           265:      (ms_ext + app_config)
        !           266:      (ms_ext + app_config + implicit_local)
        !           267: 
        !           268: 7.0  MIDL attribute pointer_default() not OSF compatible
        !           269: 
        !           270: The pointer_default() attribute in this release of Microsoft
        !           271: RPC version 1.0 is not completely compatible with the DCE
        !           272: implementation. For example, in the Microsoft
        !           273: implementation, the following function parameter is a
        !           274: reference pointer:
        !           275: 
        !           276: pointer_default(ptr);
        !           277: ...
        !           278: typedef x * MY_POINTER_TYPE;
        !           279: ...
        !           280: Foo(MY_POINTER_TYPE px);
        !           281: 
        !           282: The DCE implementation treats px as a full pointer in the
        !           283: above example.
        !           284: 
        !           285: 8.0  MIDL interprets "handle" in attribute list as keyword
        !           286: 
        !           287: The MIDL compiler supplied with this release of Microsoft
        !           288: RPC version 1.0 interprets the token "handle" as a keyword
        !           289: in the context of an attribute list. For example, consider
        !           290: an IDL file that contains the following implicit handle
        !           291: declaration:
        !           292: 
        !           293:      [implicit_handle (handle_t handle)]
        !           294: 
        !           295: Because the MIDL compiler interprets the name "handle" as a
        !           296: keyword rather than as a variable name, MIDL returns an
        !           297: error code indicating that the "handle" keyword is used
        !           298: incorrectly in the above example.
        !           299: 
        !           300: C keywords such as "auto", "static", and "extern" generate
        !           301: similar errors during MIDL compilation. Do not use MIDL or C
        !           302: keywords as variable names.
        !           303: 
        !           304: 9.0  C Stub Source Code Causes Compilation Warnings
        !           305: 
        !           306: The stub files generated by the MIDL compiler may generate
        !           307: warnings when they are compiled at compiler warning level 3
        !           308: and higher. These warnings can generally be safely ignored.
        !           309: 
        !           310: Unsigned character string arguments generate "incompatible
        !           311: pointer assignment warnings" when you compile the stubs. The
        !           312: C run-time library functions use char * arguments rather
        !           313: than unsigned char * arguments. Compiler warning messages
        !           314: about mismatched comparisons between integral types and
        !           315: mismatched pointer assignments in stubs can be safely
        !           316: ignored.
        !           317: 
        !           318: 10.0  Use tagged structure declarations
        !           319: 
        !           320: The MIDL compiler assigns temporary tags to untagged
        !           321: structures. When you use more than one IDL file to build
        !           322: your distributed application, the MIDL compiler may assign
        !           323: the same temporary name to both untagged structures and fail
        !           324: to link.
        !           325: 
        !           326: You can avoid these link errors by specifying using tagged
        !           327: structure declarations for types imported or shared between
        !           328: interfaces.
        !           329: 
        !           330: For example, the following untagged structure
        !           331: UNTAGGED_STRUCT can be changed to the tagged structure
        !           332: TAGGED_STRUCT:
        !           333: 
        !           334: typedef struct {
        !           335:     char * pszName;
        !           336:     char * pszAddress;
        !           337: } UNTAGGED_STRUCT;
        !           338: 
        !           339: typedef struct _TAGGED_STRUCT {
        !           340:     char * pszName;
        !           341:     char * pszAddress;
        !           342: } TAGGED_STRUCT;
        !           343: 
        !           344: 11.0 Unsized arrays not supported
        !           345: 
        !           346: This release of Microsoft RPC version 1.0 does not support
        !           347: character arrays that are specified without the array size.
        !           348: Specify the array size or use a character pointer.
        !           349: 
        !           350: For example, the following function argument is not
        !           351: supported:
        !           352: 
        !           353:      foo ([in, string] char ac[]);
        !           354: 
        !           355: Use char pointers or specify the array size. The following
        !           356: function arguments are supported:
        !           357: 
        !           358:      foo([in, string] char char_array[100]);
        !           359: 
        !           360:      foo([in, string] char * char_array);
        !           361: 
        !           362: 12.0 Updated command line help for the MIDL compiler
        !           363: 
        !           364: The updated help text for the MIDL compiler appears as
        !           365: follows:
        !           366: 
        !           367:                        -MIDL COMPILER OPTIONS-
        !           368:                                 -MODE-
        !           369: /ms_ext              Microsoft extensions mode
        !           370: /app_config          Application configuration mode
        !           371: /implicit_local      Assume non-remote data is [local]
        !           372: 
        !           373:                                -INPUT-
        !           374: /acf filename        Specify the attribute configuration file
        !           375: /I directory         Specify directory for import and include files
        !           376: /import ms_ext       Compile only needed portions of imported IDL files
        !           377: /import ms_nt        Compile only needed portions of imported IDL files
        !           378: /import osf          Assume imported IDL files are compiled separately
        !           379: /no_def_idir         Ignore the current and the INCLUDE directories
        !           380: 
        !           381:                        -OUTPUT FILE GENERATION-
        !           382: /client all          Generate client stub and aux files
        !           383: /client aux          Generate client auxiliary file only
        !           384: /client none         Generate no client files
        !           385: /client stub         Generate client stub file only
        !           386: /out directory       Destination directory for output files
        !           387: /server all          Generate server stub and aux files
        !           388: /server aux          Generate server aux file only
        !           389: /server none         Generate no server files
        !           390: /server stub         Generate server stub file only
        !           391: /syntax_check        Check syntax only; do not generate output files
        !           392: /Zs                  Check syntax only; do not generate output files
        !           393: 
        !           394:                          -OUTPUT FILE NAMES-
        !           395: /caux filename       Specify client auxiliary file name
        !           396: /cstub filename      Specify client stub file name
        !           397: /cswtch filename     Specify switch stub file name
        !           398: /Fs filename         Generate a listing file
        !           399: /header filename     Specify header file name
        !           400: /saux filename       Specify server auxiliary file name
        !           401: /sstub filename      Specify server stub file name
        !           402: 
        !           403:                 -C COMPILER AND PREPROCESSOR OPTIONS-
        !           404: /cc_cmd  cmd_line    Specify C compiler for stub, aux files
        !           405: /cc_opt  options     Specify options associated with C compiler
        !           406: /cpp_cmd  cmd_line   Specify name of C preprocessor
        !           407: /cpp_opt  options    Specify additional C preprocessor
        !           408: options
        !           409: /D name[=def]        Pass #define name, optional value to C preprocessor
        !           410: /no_cpp              Turn off the C preprocessing option
        !           411: /U name              Remove any previous definition (undefine)
        !           412: 
        !           413:                             -ENVIRONMENT-
        !           414: /char signed         C compiler default char is signed
        !           415: /char unsigned       C compiler default char is unsigned
        !           416: /char ansi7          Char values limited to 0-127
        !           417: /env dos             MS-DOS client
        !           418: /env win16           Microsoft Windows 16-bit (Win 3.x)
        !           419: /env win32           Microsoft Windows 32-bit (NT)
        !           420: /env generic         Produce one header for all environments
        !           421: 
        !           422:                      -ERROR AND WARNING MESSAGES-
        !           423: /error all           Check for all types of errors
        !           424: /error allocation    Check for out of memory errors
        !           425: /error enum          Check for errors converting long, short enum
        !           426: /error trees         Check for aliasing errors only
        !           427: /no_warn             Suppress compiler warning messages
        !           428: 
        !           429:                             -OPTIMIZATION-
        !           430: /pack {1|2|4|8}      Designate packing level of structures
        !           431: /space_opt           Optimize code for space rather than speed
        !           432: /Zp{1|2|4|8}         Designate packing level of structures
        !           433: 
        !           434:                            -MISCELLANEOUS-
        !           435: /?                   List MIDL compiler switch settings
        !           436: @response_file       Accept input from a response file
        !           437: /confirm             Display options without compiling MIDL source
        !           438: /help                Display a list of MIDL compiler switches
        !           439: /prefix "s1" "s2"    Replace default suffix "s1" with prefix "s2"
        !           440: 
        !           441: 13.0 RpcBindingToStringBinding does not return network address
        !           442: 
        !           443: The RPC API function RpcBindingToStringBinding, when used
        !           444: with the named pipe loadable transport, does not return the
        !           445: network address.
        !           446: 
        !           447: Use the function RpcStringBindingParse to obtain the other
        !           448: components of the binding string, use the Win32 function 
        !           449: GetComputerName to obtain the computer name that represents
        !           450: the network address, then call RpcStringBindingCompose to
        !           451: reconstruct the correct string binding from these
        !           452: components.
        !           453: 
        !           454: 14.0 RpcServerUseAllProtseqs, RpcNetworkInqProtseqs Incomplete
        !           455: 
        !           456: The RPC API functions RpcNetworkInqProtseqs and
        !           457: RpcServerUseAllProtseqs return status codes that indicate
        !           458: success but the functions do not operate properly.
        !           459: 
        !           460: RpcNetworkInqProtseqs returns a RPC_PROTSEQ_VECTOR data
        !           461: structure with a count value of 0 and no pointers to
        !           462: protocol sequence strings.
        !           463: 
        !           464: Rather than call RpcServerUseAllProtseqs, call
        !           465: RpcServerUseProtseq for each supported protocol sequence:
        !           466: 
        !           467:     RPC_STATUS RpcStatus;
        !           468: 
        !           469:     RpcStatus = RpcServerUseProtseq("ncacn_np", 
        !           470:                     MaxCalls, SecurityDescriptor);
        !           471:     ...
        !           472:     RpcStatus = RpcServerUseProtseq("ncacn_ip_tcp",
        !           473:                      MaxCalls, SecurityDescriptor);
        !           474:     ...
        !           475:     RpcStatus = RpcServerUseProtseq("ncacn_dnet_nsp",
        !           476:                      MaxCalls, SecurityDescriptor);
        !           477:     ...
        !           478:     RpcStatus = RpcServerUseProtseq("ncacn_nb_nb",
        !           479:                      MaxCalls, SecurityDescriptor);
        !           480:     ...
        !           481:     RpcStatus = RpcServerUseProtseq("ncalrpc", 
        !           482:                      MaxCalls, SecurityDescriptor);
        !           483: 
        !           484: 15.0 DCE error codes not mapped to Win32 error codes
        !           485: 
        !           486: In this release of Microsoft RPC version 1.0, the run-time
        !           487: API functions RpcEp* return DCE error codes rather than the
        !           488: documented Win32 error codes. The DCE error codes, RPC error
        !           489: manifest, and Win32 error codes are as follows:
        !           490: 
        !           491: Win32 error code   RPC Manifest            DCE error code
        !           492: 
        !           493: 1751               EPT_S_INVALID_ENTRY     0x1c110007
        !           494: 1752               EPT_S_CANT_PERFORM_OP   0x1c110001
        !           495: 1753               EPT_S_NOT_REGISTERED    0x1c110004
        !           496: 
        !           497: The RPC header files define the manifests to the Win32 error
        !           498: code values but the RPC runtime functions return the DCE
        !           499: values. Redefine the manifests in your application to the
        !           500: DCE values, as follows:
        !           501: 
        !           502: #undef  EPT_S_CANT_PERFORM_OP
        !           503: #define EPT_S_CANT_PERFORM_OP 0x1c110001
        !           504: #undef  EPT_S_INVALID_ENTRY
        !           505: #define EPT_S_INVALID_ENTRY   0x1c110007
        !           506: #undef  EPT_S_NOT_REGISTERED
        !           507: #define EPT_S_NOT_REGISTERED  0x1c110004
        !           508: 
        !           509: 16.0 Using the MS-DOS UuidGen utility with Microsoft Windows NT
        !           510: 
        !           511: The UuidGen utility is supplied for MS-DOS only. No version
        !           512: is supplied for native Microsoft Windows NT. However, you
        !           513: can run the MS-DOS version of this utility in the Microsoft
        !           514: Windows NT MS-DOS screen group. The utility is available in
        !           515: compressed format in the MSTOOLS\RPC_DOS directory. To 
        !           516: decompress the UuidGen utility, use the following command on 
        !           517: Microsoft Windows 3.x:
        !           518: 
        !           519: setup /z uuidgen.ex_ drive:\directory\uuidgen.exe
        !           520: 
        !           521: where drive: and directory specify a directory on your path.
        !           522: 
        !           523: 17.0  Creating installation disks for your application
        !           524: 
        !           525: Two batch files help you create RPC run-time installation 
        !           526: disks that can accompany your distributed application. These 
        !           527: batch files create installation disks that contain the Setup 
        !           528: program and the Microsoft RPC run-time libraries, allowing 
        !           529: you to distribute the Microsoft RPC run-time libraries with 
        !           530: your distributed application. The following two batch files 
        !           531: are provided:
        !           532: 
        !           533: wrundisk.bat  creates Microsoft Windows/MS-DOS run-time
        !           534:               install disk
        !           535: drundisk.bat  creates MS-DOS-only run-time install disk
        !           536: 
        !           537: 17.1 Creating installation disks for Microsoft Windows applications
        !           538: 
        !           539: Insert a formatted, blank floppy disk in the destination
        !           540: drive. Start the installation disk utility by typing
        !           541: "wrundisk" followed by the optional source and destination
        !           542: drive names. The wrundisk.bat file uses the following
        !           543: syntax:
        !           544: 
        !           545: wrundisk [source:[path] [dest:]]
        !           546: 
        !           547: where
        !           548: 
        !           549: source is a disk or directory that contains the compressed 
        !           550: files that are provided in the Microsoft Windows NT SDK 
        !           551: directory \mstools\rpc_dos\disk1.
        !           552: 
        !           553: dest is a drive name specifying the drive that contains the 
        !           554: formatted, blank floppy disk. 
        !           555: 
        !           556: For example,"wrundisk c:\nt\mstools\rpc_dos\disk1 a:" copies 
        !           557: the compressed files to the floppy disk in the drive A.
        !           558: 
        !           559: Your application user can then use the Setup program under 
        !           560: Microsoft Windows on the resulting installation disk to 
        !           561: install the RPC run-time libraries for Microsoft Windows and 
        !           562: MS-DOS.
        !           563: 
        !           564: 17.2 Installation disks for MS-DOS Distributed Applications
        !           565: 
        !           566: The drundisk utility copies files from an installed RPC SDK. 
        !           567: To ensure that all MS-DOS loadable transports are present on 
        !           568: the run-time installation disk, you must select all loadable 
        !           569: transports at the time you install the Microsoft RPC SDK.
        !           570: 
        !           571: Insert a formatted, blank floppy disk in the destination
        !           572: drive. Start the installation utility by typing "drundisk"
        !           573: followed by the optional source and destination drive names.
        !           574: The drundisk.bat file uses the following syntax:
        !           575: 
        !           576: drundisk [directory [dest:]]
        !           577: 
        !           578: where directory is the name of the directory that contains
        !           579: all loadable transport (.RPC) files and all name service
        !           580: dynamic link libraries.
        !           581: 
        !           582: For example, the command "drundisk c:\lanman.dos\netprog a:"
        !           583: copies the MS-DOS run-time libraries, the loadable transport
        !           584: files, and name service DLLs from the C hard drive to the
        !           585: floppy disk in drive A. Your application user can then use
        !           586: the Setup program on the run-time installation disk to 
        !           587: install the RPC run-time libraries.
        !           588: 
        !           589: 18.0 New LAN Manager 2.1 DLL required for Windows clients
        !           590: 
        !           591: Install an updated version of the dynamic link library
        !           592: NETAPI.DLL for Microsoft Windows 3.x clients that use
        !           593: Microsoft LAN Manager 2.1 named pipes. This version of the
        !           594: LAN Manager API library corrects a software error.
        !           595: 
        !           596: To install the new version of this library, connect to the
        !           597: directory that contains the Setup program and the compressed
        !           598: source files, then enter the command:
        !           599: 
        !           600: setup /z netapi.dl_ drive:\directory\netapi.dll
        !           601: 
        !           602: where drive and directory specify the path to the LAN
        !           603: Manager 2.1 directory that contains NETAPI.DLL. For example,
        !           604: if LAN Manager is installed in the directory C:\LANMAN.DOS, 
        !           605: use the command:
        !           606: 
        !           607: setup /z netapi.dl_ c:\lanman.dos\netprog\netapi.dll
        !           608: 
        !           609: 19.0 Running the locator and endpoint mapper
        !           610: 
        !           611: In this release of Microsoft RPC version 1.0, the locator
        !           612: and endpoint mapper are not provided as services but as
        !           613: programs that you must start from the Microsoft Windows NT
        !           614: command line. The locator is the Microsoft implementation of
        !           615: the RPC name service independent API functions (NSI). The 
        !           616: endpoint mapper allows the use of dynamic endpoints.
        !           617: 
        !           618: Start the locator using the following command syntax:
        !           619: 
        !           620: locator /noservice 
        !           621: 
        !           622: Start the endpoint mapper on the RPC server using the
        !           623: following syntax:
        !           624: 
        !           625: rpcss noservice
        !           626: 
        !           627: Start the locator and endpoint mapper before starting the 
        !           628: server application. In this release of Microsoft RPC version 
        !           629: 1.0, distributed applications that use the RPC NSI API 
        !           630: functions must run the server and client applications on the 
        !           631: same computer.
        !           632: 
        !           633: 20.0 Updating RPC registry entries for new NetBIOS configurations
        !           634: 
        !           635: The Microsoft RPC Setup program automatically maps protocol 
        !           636: strings to NetBIOS lana numbers and writes these settings in 
        !           637: the registry. These mappings work as long as you only have 
        !           638: one network card and one network protocol. If this is not 
        !           639: the case, or if you change your network configuration after 
        !           640: installing Microsoft RPC, you must update the registry to 
        !           641: indicate the new correspondences between protocol strings 
        !           642: and NetBIOS lana numbers.
        !           643: 
        !           644: For Microsoft Windows NT, the mapping string appears in the 
        !           645: registry tree under \Software\Microsoft\Rpc\NetBios. For 
        !           646: MS-DOS, the mapping string appears in the registry file 
        !           647: RPCREG.DAT.
        !           648: 
        !           649: The mapping string uses the following syntax:
        !           650: 
        !           651: ncacn_nb_<protocol><digit> = <lana_number>
        !           652: 
        !           653: where 
        !           654: 
        !           655: <protocol> indicates the protocol type. For MS-DOS, the 
        !           656: valid <protocol> value is "nb". For Microsoft Windows NT, 
        !           657: valid <protocol> values are as follows:
        !           658: 
        !           659:      <protocol>   Protocol type
        !           660: 
        !           661:      xns          XNS
        !           662:      nb           NetBEUI
        !           663:      tcpip        TCP/IP
        !           664: 
        !           665: <digit> indicates a unique digit associated with each 
        !           666: instance of a protocol. Use the value 0 for the first 
        !           667: instance of a protocol and use the next consecutive digit 
        !           668: for each additional instance of that protocol. For example, 
        !           669: assign the value ncacn_nb_nb0 to the first NetBEUI entry; 
        !           670: assign the value ncacn_nb_nb1 to the second NetBEUI entry.
        !           671: 
        !           672: <lana_number> indicates the NetBIOS lana number. A unique 
        !           673: lana number is associated with each network adapter present 
        !           674: in the computer. For more information about the lana number, 
        !           675: see your network documentation.
        !           676: 
        !           677: For example, the following mapping string describes a 
        !           678: configuration that uses the NetBEUI protocol over an adapter 
        !           679: card that is assigned lana number 0:
        !           680: 
        !           681: ncacn_nb_nb0=0
        !           682: 
        !           683: When you install a second card that supports both XNS and 
        !           684: NetBEUI protocols, the mapping strings appear as follows:
        !           685: 
        !           686: ncacn_nb_nb0=0
        !           687: ncacn_nb_nb1=1
        !           688: ncacn_nb_xns0=2
        !           689: 
        !           690: 21.0 RPC application exception handling for Microsoft Windows 3.x
        !           691: 
        !           692: A software error in this release of Microsoft RPC version 
        !           693: 1.0 can cause your Microsoft Windows 3.x RPC application to 
        !           694: GP fault after repeated exceptions and repeated execution of 
        !           695: the application.
        !           696: 
        !           697: When the top-level exception handler exits with an 
        !           698: exception, an internal data structure is left in an 
        !           699: incorrect state. Repeated execution of the same application 
        !           700: can then cause memory corruption.
        !           701: 
        !           702: You can avoid this error by guaranteeing that the final top-
        !           703: level try block of the program is exited normally (without 
        !           704: an exception). Use the following structure in your 
        !           705: application:
        !           706: 
        !           707: RpcTryExcept
        !           708:     {
        !           709:     ...
        !           710:     }
        !           711: RpcExcept(...)
        !           712:     {
        !           713:     ...
        !           714:     } 
        !           715: /* add a try-finally block here */
        !           716:     volatile x = 1;   /* assure this code is present */
        !           717:     RpcTryFinally
        !           718:         {
        !           719:         if (x == 2)
        !           720:             x++;
        !           721:         }
        !           722:     RpcFinally
        !           723:         {
        !           724:         x = 3;
        !           725:         }
        !           726:     RpcEndFinally;
        !           727: RpcEndExcept
        !           728: 
        !           729: The volatile variable x does not perform any useful function 
        !           730: for the application. It is present only to ensure that the 
        !           731: RpcTryFinally structure is present after the C compiler 
        !           732: optimizes the application.

unix.superglobalmegacorp.com

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