BUG: Win32 SDK Version 3.51 Bug List - Networking

ID: Q136437


The information in this article applies to:
  • Microsoft Win32 Software Development Kit (SDK), version 3.51


SUMMARY

The following is the list of bugs in the Win32 API implemented on Windows NT 3.51 that were known at the time the product was released. This list is divided into 4 sections: LanMan API, RAS, RPC, and TCP/IP.


MORE INFORMATION

LanMan API

  • NetWkstaGetInfo returns wrong platform ID (PLATFORM_ID_OS2) for Windows for Workgroups.


  • NetGetDCName with a domain name of . or ? returns NERR_NetNotStarted. The expected error is NERR_DCNotFound.


  • NetUseEnum with a preferred buffer size less than 40 bytes returns ERROR_MORE_DATA (234) rather than NERR_BufTooSmall (2134).


  • NetServerEnum with a preferred buffer size less than 40 bytes returns ERROR_MORE_DATA (234) rather than NERR_BufTooSmall (2134).


  • NetScheduleJobEnum with a preferred buffer size less than 40 bytes return ERROR_MORE_DATA (234) rather than NERR_BufTooSmall (2134).


  • NetStatisticsGet remoted to downLevel OS/2 server does not work for the service "LanmanWorkstation." It returns error 50.


  • NetAccessEnum with a NULL base path generates an access violation. Use a null string to indicate that no base path is to be used.


  • The following are documentation errors:

    • NetUserModals supports a level 3 structure.


    • NetGroupSetUsers also supports level 1.


    • NetAccessCheck is not in the header files.


    • NetAuditClear parameter LPWSTR service should be marked as a reserved field; it must be NULL.


    • NetAuditClear parameter LPWSTR Service should be marked as a reserved field; it must be NULL.


    • NetWkstaUserSetInfo level 0 returns error 124 (invalid level), but the docs say that level 0 is supported.




  • NetMessageBufferSend returns error 123 (invalid computer name) if the FromName is not NULL or the client computer.


  • NetReplImportDirDel generates the following assert on a checked build: assert:\net\svcdlls\repl\common\impconf.c line 121. This occurs when an invalid directory name is used.


  • NetReplExportDirDel generates the following assert on a check build: assert:\net\svcdlls\repl\common\expconf.c line 120. This occurs when an invalid directory name is used.


  • NetMessageNameEnum returns error NERR_Sucess (0) with a zero-length buffer rather than NERR_BufTooSmall.


  • NETBIOS send datagram and broadcast datagram return NRC_SYSTEM when given a buffer size of 32000, not NRC_BUFLEN (invalid buffer length).


  • The NETBIOS send datagram is issued with a buffer size of 512 and the receive datagram is issued with a buffer size of 40. The receive datagram returns NRC_GOODRET, not NRC_INCOMP (incomplete message).


  • WNetEnumResource returns the wrong buffer size if the buffer is not big enough. WHen the buffer is NULL (size 0), the error returned is ERROR_NO_NETWORK.


  • Calling the MNet APIs results in the error "call to undefined dynalink" because WFWNET.DRV does not stub these APIs.


  • NetAccessGetInfo returns code 53 (ERROR_BAD_NETPATH) with the local server name.


  • NTVDM NetServerEnum2 with a bad domain name should return 2320.


  • NTVDM NetShareGetInfo level 2 fails with error 87.


  • NTVDM NetShareGetInfo level 3 returns NERR_Success.


  • NTVDM NetUserAdd remoted to server with long name fails with error 59 (unexpected network error).


  • NetServiceEnum resume handle and prefMaxLen ignored. The API allocates the required size and returns all information.


  • NetConfigGet, NetConfigGetAll, and NetConfigSet remoted to Windows NT should fail.


  • NetReplExportDirEnum ignores the suggested buffer size.


  • NetUseEnum with level 2 returns error 50 (not supported), not 124 (invalid level).


  • NetWkstaUserSetInfo with an incorrect level returns error 87 (invalid parameter), not 124 (invalid level).


  • MS-DOS NetWkstaSetUID2 does not return 2242 NERR_PASSWORD_EXPIRED when Windows NT forces the user to change passwords.


  • NetAccessEnum level 0 returns error 234 (ERROR_MORE_DATA) when remoted to OS/2.


  • NetServerEnum resume handle resumes call at start of list. This will cause an infinite loop.


  • NetMessageNameEnum returns error 1733 (RPC_S_INVALID_TAG) with an incorrect info level.


  • NetMessageNameEnum with a resume handle and a small buffer goes into an infinite loop.


  • NetMessageNameEnum total entries is off by one on the first iteration if resume key is used.


  • NetMessageNameGetInfo returns error 1733 (RPC_S_INVALID_TAG) with an incorrect info level.


  • NetAccessGetUserPerms remoted to OS/2 works corrected, but then NET.EXE commands no longer work.


  • NetUserModalsSet with level 1007 fails with error 87 when remoted to OS/2.


  • NetMessageBufferSend fails with error 50 when remoted to OS/2.


  • NetShareCheck fails with error 2311 (NERR_DeviceNotShared) when remoted to OS/2.


  • NetGroupSetInfo with a bad level remote to OS/2 succeeds. It should return 124 (invalid level).


  • NetSessionEnum with a bad level remoted to OS/2 succeeds. It should return 124 (invalid level).


  • NetUserGetGroups with a bad level remoted to OS/2 succeeds. It should return 124 (invalid level).


  • NetSessionGetInfo causes assert \rpcxlate\rxapi\sessget.c line 207 if remoted to OS/2 with a bad info level. If you ignore the assertion, the error return is 2221 (user not found), not 124 (invalid level).


RAS

  • RasDial exhibits unexpected behaviour when used simultaneously from two threads of the same process.


  • Shutting down RAS server from command line does not warn about connected RAS clients and disconnects them.


  • RASETHER.DLL version information says it's RASTAPI.DLL, the TAPI compliance layer.


  • If a long entry is connected and RASPHONE is brought up with the phone book containing the long entry, then RASPHONE cannot hang up the connection. The error is 6 (handle is invalid).


  • RAS fails to establish more than 100 sessions.


RPC

  • When a procedure with the [notify] attribute is called, the server stub must also call the server manager routine proc_notify(). No code is generated for this.


  • The MIDL compiler does not generate an error when an implicit handle uses a type that has been defined but is not a generic handle type.


  • Specifying [first_is(0, ...), last_is(0, ...), size_is(1, ...)] for the "short (*as)" pointer gives runtime error "invalid array bounds" on the client side.


  • The MIDL compiler allows [ptr] on interface pointers.


  • RPC: Varying multidimensional arrays are not put on wire correctly.


  • [out] ref ptr doesn't work properly in MIDL -Oi mode.


  • Sizing comes up short on a struct with a union in MIDL.


  • MIDL compiler allows typedef [comm_status, fault_status] .ACF.


  • The handle_t * binding parameter is broken in -Os stub.


  • Unmarshalling 2D fixed arrays on a Mac client causes an access violation on a Windows NT server.


  • [in, out] encapsulates a union with interface pointers.


  • MIDL produces "warning MIDL2207: value out of range" for the following statement: const char HexNotationChar = '\xFF';.


  • MIDL does not give warning M2180 (CASE_VALUE_OUT_OF_RANGE) for the following code:
    
          typedef union _small_union switch(small sm) un
          {
             case 0:    short *ps;
             case 1:    long  *pl;
             case 256:  short   s; <<-- out of range for a small
             default:   char   ch;
          } small_union; 


  • MIDL should not accept type byte in a switch.


  • In -Oi mode, if the first parameter is a transmit_as parameter, and the presented type is smaller than 32 bits, then the top of stack pointer passed to the interpreter is incorrect.


  • MIDL allows multiple types mapped to the same user_marshal type.


  • If the following output switches are given on a non-object interface (where these files aren't generated), a warning should be produced.
    
          /dlldata filename
          /iid filename
          /proxy filename
          /sstub filename 


  • MIDL allows a generic handle with [handle] specified twice.


  • The following code causes error MIDL2235: [implicit_handle] references a type which is not a handle : [Interface 'implicit']
    
          // In IDL
    
          typedef  handle_t  PRIMITIVE;
    
          // In ACF
    
          [  implicit_handle( PRIMITIVE  long_binding_handle )
          ]  interface implicit 


  • MIDL accepts byte_count on an [in, out] pointer.


  • MIDL should generate STDMETHODIMP instead of __stdcall so that the .h files can be used on the Mac.


  • MS-DOS RPC install does not list Windows TCP/IP as an option.


  • RpcNsBindingImportNext has a small memory leak.


  • RpcEpRegister and RpcEpRegisterNoReplace behave differently from the OSF DCE spec in two ways:

    • When replacing an entry in the endpoint map, the annotation string should replace the existing annotation string.


    • When an annotation string greater than 64 characters wide is supplied, the DCE spec specifies that it is truncated. The functions currently return EPT_S_INVALID_ENTRY.




  • RpcBindingServerFromClient with ncalrpc fails with an object uuid.


  • In connection oriented RPC, the cancel packet does not have the call_id field set.


  • RpcServerRegisterAuthInfo with RPC_C_AUTHN_DEFAULT should load the default provider specified in the registry.


  • With an HPUX server, a Windows NT client and protocol ncadg_ip_udp, all calls raise exception RPC_S_SERVER_UNAVAILABLE.


  • RpcBindingInqObject() does not take 0 as binding handle.


  • RPC cancel support does not work on all platforms and transports. Cancels are supported only with Windows NT clients and transports ncacn_ip_tcp and ncacn_spx.


  • Client obtains binding from CDS using RpcNsBindingImport routines and calls RpcNsBindingInqEntryName with parameter RPC_C_NS_SYNTAX_DEFAULT. The routine returns error 1736 (invalid syntax). This occurs only if the DCE CDS locator is used.


  • RPC_C_BINDING_MAX_COUNT_DEFAULT is documented, but not supported yet.


  • When a fully bound handle that does not represent something registered in with EPT, a NULL object uuid, and a NULL host binding handle are supplied to rpc_ep_unregister, the routine returns rpc_s_ok instead of ept_s_cant_perform.


  • Possible Deadlock due to TCP/IP thread waiting forever when server has crashed.


  • Auto handles in Win16 DLL cause stranded runtime DLLs.


  • When rpc_object_inq_type is passed a null uuid as the object uuid, RPC returns status 1710 (object uuid not found), instead of returning the null type uuid (which is the default mapping for the null object uuid).


  • RPC_C_PROFILE_DEFAULT_ELT is defined as 0 in rpcnsi.h, but it is defined as 1 by DCE. As a result, rpc_ns_profile_elt_inq_begin, next, and done do not work with nsid on DCE machines.


  • Win16 NetBIOS method of obtaining NIC addresses for UUID generation does not check LANAs greater than 4.


  • Win16 NotifyRegister callback is owned by the currently running task, therefore, it is cleaned up at task exit. This causes trouble if multiple RPC apps start up and the first to start is not the last to exit.


  • RPC name resolution on slow IPX MS-DOS clients may fail if the Novell server is not available.


  • RpcServerInqBindings only returns information for a net card.


TCP/IP

  • When resolving a name that is not in the hosts file, if DNS is not configured, gethostbyname fails to go to netbt if the first interface in the machine can not resolve the name.


  • Cannot establish trust when DNS for Windows Name Resolution is on.


  • NBTSTAT only reports info for first adapter.


  • Some IRPs passed from NetBT to TCP have a stack frame of 1.


  • If the Domain name is changed on the DHCP server, it is not picked up by NetBT until the clients are rebooted.


  • FIND NAME fails on multihome machines.


  • Multicast address not removed on IP_DROP_MEMBERSHIP.


  • Multiple proxys on same subnet cause client connect problems.


  • When the SNMP service is started with debug level 2 or greater, it prints the error message "error on GetProc(InitEx) 127".


  • SetService causes access violation when SrvInfo is unitialized.


  • SetService should return -1 for SERVICE_FLAG_HARD with dwOperation SERVICE_ADD_TYPE.


  • SetService() should not allow SERVICE_FLAG_HARD|SERVICE_FLAG_DEFER with SERVICE_REGISTER or SERVICE_DEREGISTER.


  • SetService should fail when you register the same service again.


  • Debugger does not free socket descriptors after application faults and causes the debugger to attach to the running process.


  • A race condition occurs when two threads share a socket. One thread closes a socket and the other thread tries to do a recvfrom on the socket. This causes problems the next time a socket is bound to the same UDP port.


Additional query words:

Keywords : kbnetwork kbNTOS351bug kbSDKPlatform kbTAPI kbNetAPI kbGrpNet
Version : WINDOWS:3.51
Platform : WINDOWS
Issue type : kbbug


Last Reviewed: January 10, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.