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 kbbuglist
Issue type : kbbug
Last Reviewed: September 11, 1998