Developer Pointers
Articles and Tips: article
01 Jan 1998
Novell Technical Information Documents
All of the Technical Information Documents (TIDs) discussed below are available at the following locations:
The Novell Technical Solutions Database on CompuServe (GO NTID)
The DeveloperNet Support World Wide Web site (http://devsup.novell.com)
The DeveloperNet Support Bulletin Board (801-861-5836)
DevNotes C3PO Delphi 2.0 Sample
Author: |
RL |
|||
DocumentID: |
TID101425 |
|||
Date: |
10/29/97 4:53 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
GW5C3X21.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
This is the sample application that is published in the March issue of Developer Notes . This sample has a few additions to the Developer Notes sample. It closes down with GroupWise shutdown.
It includes the documentation, completed sample code, and reg file--everything that is needed to make the C3PO work with GroupWise 5.
File Information
Self-Extracting File Name: GW5C3X21.EXE
Files Included: |
Size |
Date |
Time |
||
GW5C3X21.TXT |
(this file) |
||||
SERVOBJ.PAS |
7214 |
10-26-97 |
1:08 AM |
||
REGEXE.REG |
980 |
10-26-97 |
1:08 AM |
||
PROJECT1.EXE |
221184 |
10-26-97 |
1:09 AM |
||
PROJECT1.DPR |
250 |
10-26-97 |
1:10 AM |
||
EXESRV.PAS |
810 |
10-26-97 |
1:10 AM |
||
EXESRV.DFM |
970 |
10-26-97 |
1:10 AM |
||
C3PODOC.WPD |
27497 |
10-26-97 |
1:10 AM |
||
C3POCALC.PAS |
30723 |
10-26-97 |
1:10 AM |
||
GW5C3X21.MSG |
322 |
10-26-97 |
1:10 AM |
Return Codes from NDS APIs Not Necessarily Negative
Author: |
KB |
|||
DocumentID: |
TID101415 |
|||
Date: |
10/13/97 6:56 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
XNDSKBG.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
Novell has long preached the idea that NDS error codes returned from NDS APIs will be negative. Under true 32-bit environments, this is not necessarily true.
Detailed Description
Novell has long expounded that to check the return codes from an NDS API you should use the following:
if (ccode < 0) |
indicating that all the possible error codes returned from an NDS API will be negative. This is true only concerning errors from DS.NLM, which will be in the range of -300s or -600s. It is also possible to get positive error codes from the NetWare Requester, Clib and NetWare OS. These error codes vary from positive single digit to 88xx and 89xx hexadecimal values.
When using NDS APIs, like all other NetWare APIs, completion codes should be checked as follows:
if (ccode != 0) or if (ccode), assuming a completion code of 0 issuccessful. |
These positive return values have been verified on true 32-bit platforms where the first byte of a 32-bit variable is not set to FFFF
Note: All error codes returned from DS.NLM have the FFFF set andwillbe negative. Error codes returned from other sources most likely will not.
File Information
Self-Extracting File Name: XNDSKBG.EXE
Files Included: |
Size |
Date |
Time |
||
XNDSKBG.TXT |
(this file) |
||||
XNDSKBG.MSG |
160 |
10-10-97 |
6:23 AM |
Sample Admin API (VB5 App)
Author: |
RL |
|||
DocumentID: |
TID101420 |
|||
Date: |
10/20/97 2:31 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
GW5XOB34.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
This sample application is a duplicate of GW5xOB30, except this sample is written in VB5 instead of Delphi.
You need to be logged in to the server as admin for this application to work.
File Information
Self-Extracting File Name: GW5XOB34.EXE
Files Included: |
Size |
Date |
Time |
|
GW5XOB34.TXT |
(this file) |
|||
ADMINAPP.VBW |
44 |
10-20-97 |
2:31 PM |
|
ADMIN.FRM |
10812 |
10-20-97 |
2:31 PM |
|
ADMINAPP.EXE |
18944 |
10-20-97 |
2:31 PM |
|
ADMINAPP.VBP |
626 |
10-20-97 |
2:31 PM |
|
GW5XOB34.TXT |
1882 |
10-20-97 |
2:31 PM |
|
GW5XOB34.MSG |
195 |
10-20-97 |
2:31 PM |
Brainshare Document Management Sample
Author: |
RL |
|||
DocumentID: |
TID101421 |
|||
Date: |
10/20/97 2:37 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
GW5XOB43.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
This sample code and the step samples are from the BrainShare Document Management CodeBreak (D02D) used in Nice and in Australia. This sample is a query sample for document libraries. The zip file includes the /final, /step1, and /step2 directories. If you are using pkunzip from DOS use the -d options to retain the directories.
File Information
Self-Extracting File Name: GW5XOB43.EXE
Files Included: |
Size |
Date |
Time |
||
W5XOB43.TXT |
(this file) |
||||
DOC.ZIP |
858999 |
10-20-97 |
2:36 PM |
||
GW5XOB43.TXT |
1911 |
10-20-97 |
2:36 PM |
||
GW5XOB43.MSG |
331 |
10-20-97 |
2:36 PM |
Get Last Sent Message Sample (Delphi 3)
Author: |
RL |
|||
DocumentID: |
TID101422 |
|||
Date: |
10/21/97 9:08 AM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
GW5XOB35.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
This sample shows how to get the last sent message by doing a query and then sorting the message list.
File Information
Self-Extracting File Name: GW5XOB35.EXE
Files Included: |
Size |
Date |
Time |
||
GW5XOB35.TXT |
(this file) |
||||
SENTITMS.PAS |
5908 |
10-21-97 |
9:07 AM |
||
SENTITMS.DFM |
1500 |
10-21-97 |
9:07 AM |
||
ITEMSENT.DPR |
291 |
10-21-97 |
9:07 AM |
||
LASTMSG.DFM |
1058 |
10-21-97 |
9:07 AM |
||
ITEMSENT.EXE |
257536 |
10-21-97 |
9:07 AM |
||
LASTMSG.PAS |
1706 |
10-21-97 |
9:07 AM |
||
GW5XOB35.MSG |
104 |
10-21-97 |
9:07 AM |
How To Expand NDS Objects to UNC Paths
Author: |
HW |
|||
DocumentID: |
TID101412 |
|||
Date: |
10/9/97 4:12 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
VBDSPATH.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
This TID shows how to extract UNC path information from NDS volume and directory map objects. It does this by implementing a DS browser dialog that lets you select files by double clicking and expanding objects in a tree view, much as you would in NWAdmin. Sources are in Visual Basic 4.
Detailed Description
The sample uses the DeveloperNet 2000 ActiveX controls to build an NDS tree view that displays volume and directory map objects. Expanding these objects will allow the user to browse subdirectories and files. The dialog can be used as a lookup when entering UNC path information, such as for application objects.
File Information
Self-Extracting File Name: VBDSPATH.EXE
Files Included: |
Size |
Date |
Time |
||
VBDSPATH.TXT |
(this file) |
||||
VBPATH.VBP |
634 |
10-7-97 |
5:12 AM |
||
TREE.ICO |
1078 |
10-7-97 |
5:12 AM |
||
PATH.FRM |
19045 |
10-7-97 |
5:12 AM |
||
DECLARE.BAS |
2641 |
10-7-97 |
5:12 AM |
||
FILE.ICO |
1078 |
10-7-97 |
5:12 AM |
||
RESOLVER.CLS |
3249 |
10-7-97 |
5:12 AM |
||
CLOSED.ICO |
1078 |
10-7-97 |
5:12 AM |
||
OPEN.ICO |
1078 |
10-7-97 |
5:12 AM |
||
DRIVER.BAS |
1950 |
10-7-97 |
5:12 AM |
||
VBDSPATH.MSG |
290 |
10-7-97 |
5:12 AM |
Accessing NetWare Resources from an NT Service
Author: |
JB |
|||
DocumentID: |
TID101423 |
|||
Date: |
10/24/97 10:55 AM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
NWNTSRVC.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
With the advent of the IntranetWare Client for Windows NT 4.11, the mechanism for sharing/delimiting connections used by the logged-on user and services was changed. This is to explain the way to access resources on NetWare servers from an NT service with this new client.
Detailed Description
Starting with the IntranetWare Client for Windows NT 4.11, services no longer share connections with each other or the logged-on user. Each service (and specifically each child process of a service) has its own set of connections, requiring the service and every one of its children to establish private connections to servers from which they want to access resources. The attached sample demonstrates this process. The only further restriction that should be considered is that services should not attempt to create drive letters in order to access files on a server. UNC names should be used instead, due to the global (to the local system) nature of drive letters. (They are actually symbolic link objects, and all objects are globally visible by definition.)
File Information
Self-Extracting File Name: NWNTSRVC.EXE
Files Included: |
Size |
Date |
Time |
||
NWNTSRVC.TXT |
(this file) |
||||
SERVICE.MC |
1172 |
10-24-97 |
6:17 AM |
||
SERVICE.C |
12386 |
10-24-97 |
6:17 AM |
||
NWNTSRVC.MSG |
274 |
10-24-97 |
6:17 AM |
How To Get the ServerUp Time in the 3x Environment from a Client
Author: |
MM |
|||
DocumentID: |
TID101429 |
|||
Date: |
11/7/97 3:27 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
IMMUPTIM.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
Currently the only client API on NetWare 3x that will return the ServerUp time is NWGetObjectDiskSpaceLeft. The third output argument is systemElapsedTime.
File Information
Self-Extracting File Name: IMMUPTIM.EXE
Files Included: |
Size |
Date |
Time |
||
IMMUPTIM.TXT |
(this file) |
||||
IMMUPTIM.MSG |
152 |
10-26-97 |
1:22 AM |
How To Add a Print Queue object
Author: |
JB |
|||
DocumentID: |
TID101424 |
|||
Date: |
10/24/97 10:55 AM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
IPRINTQ.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category |
None |
Abstract
This TID details the steps necessary to add an NDS print queue object. Note that the contents are rather abstract so you can it use it with the SDK or with other tools, such as the ActiveX controls.
Detailed Description
Creating a queue object in NDS involves the following steps:
1. Name the queue 2. Select a volume to hold the queue files 3. Apply the default ACL template
The first step is straightforward. You add the name of the queue as a mandatory attribute. You will also want to specify the "Object Class" attribute to be "Queue".
Let's have a look at the "Queue Directory" attribute. This is where the queue files are placed.
In NWAdmin, you would just select a Volume. But, when adding the queue object yourself, you have to do the work that NWAdmin hides from the user.
First, you want to select a volume object for the queue. This will be the (optional) "Volume" attribute. The actual directory for queue files resides under a hidden directory "Queues" under the root of the volume. Furthermore, the system will add another subdirectory dedicated to our queue object.
The name of the latter directory is formed from a queue ID. If the volume resides on the server on which you created the queue ("Host Server"), the queue directory will be named by the local object ID for the queue. Otherwise, an ID is generated artificially.
Normally, the distinguished name of the volume and the subdirectory should suffice, but for historical reasons, the physical volume name is needed as well. You can get it by reading the "Host Resource Name" of the volume.
Thus, the full name of the queue directory is <volume name<:QUEUES\<queue id>.QDR. This is also what you observe when reading out the attribute later. The queue ID, obviously, is generated only after the queue object is added, so you cannot supply it. Consequently, the content for the "Queue Directory" attribute is just <volume name<:QUEUES.
Finally, you have to enforce the default ACL template. It grants supervisory rights to the object for the creator, and read rights to all attributes for any authenticated object, i.e. [Root].
As a common sense measure, the creator object should be made both a member of the "Operator" and the "User" attribute of the queue. NWAdmin also makes the creation context a "User" of the queue. This makes the queue usable in the current part of the tree.
There are some interesting details here in the way NWAdmin creates a queue object. In addition to the above, it will also attempt to grant read rights to an object named "EVERYONE" located in the same container as the queue object. This is to allow bindery users to access the queue, should the current context be a bindery emulation context.
File Information
Self-Extracting File Name: IPRINTQ.EXE
Files Included: |
Size |
Date |
Time |
||
IPRINTQ.TXT |
(this file) |
||||
IPRINTQ.MSG |
205 |
10-24-97 |
6:20 AM |
NWScanVolDiskRestrictions2 Not Fully Functional
Author: |
JB |
|||
DocumentID: |
TID101414 |
|||
Date: |
10/9/97 4:12 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
SCVOLDSK.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
Although designed to allow for 16 returned restrictions per iteration, the current implementation inhibits this.
Detailed Description
The internally allocated buffer to get the NCP reply from the server fits only 12 restrictions, and depending on the OS, the function returns either a buffer-too-small error or garbage in the last 4 entries . This is to be corrected in a future revision of the library (current assumption is SDK Vol. 14). Using NWScanVolDiskRestrictions does not help as it maps to NWScanVolDiskRestrictions2.
File Information
Self-Extracting File Name: SCVOLDSK.EXE
Files Included: |
Size |
Date |
Time |
||
SCVOLDSK.TXT |
(this file) |
||||
SCVOLDSK.MS |
113 |
10-7-97 |
5:13 AM |
ActiveX: Selecting Objects from Multiple NDS Trees
Author: |
HW |
|||
DocumentID: |
TID101413 |
|||
Date: |
10/9/97 4:12 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
VBSELECT.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
This sample supersedes the XSelect sample. It implements a simple object selector that can be used to browse an NDS tree for an object of any class.
Detailed Description
The current release of the ActiveX controls exposes a problem when being used with Delphi 3, in that Delphi is not able to translate all of the interfaces of the session control into a VCL. Thus, the collection methods of ConnectedTrees, ConnectedServers, and ConnectedVolumes cannot be used in a straightforward way.
Note: This limitation does not affect the use of the controls withVisualBasic.
Self-Extracting File Name: VBSELECT.EXE
Files Included: |
Size |
Date |
Time |
||
VBSELECT.TXT |
(this file) |
||||
VBSELECT.VBP |
680 |
10-7-97 |
5:12 AM |
||
TREE.ICO |
1078 |
10-7-97 |
5:12 AM |
||
NWSELECT.CLS |
2943 |
10-7-97 |
5:12 AM |
||
MODWIN32.BAS |
1939 |
10-7-97 |
5:12 AM |
||
VBSELECT.MSG |
151 |
10-7-97 |
5:12 AM |
An NDPS Sample To Create a Printer Agent and Install It on the Workstation
Author: |
MM |
|||
DocumentID: |
TID101428 |
|||
Date: |
11/5/97 2:41 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
XMMDPA.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
An NDPS sample code for creating a printer agent and installing it on the workstation.
File Information
Self-Extracting File Name: XMMDPA.EXE
Files Included: |
Size |
Date |
Time |
||
XMMDPA.TXT |
(this file) |
||||
NEWPA.EXE |
98304 |
10-26-97 |
1:17 AM |
||
NEWPA.CPP |
22473 |
10-26-97 |
1:17 AM |
||
XMMDPA.MSG |
87 |
10-26-97 |
1:17 AM |
Sample for Using NIOS API To Hook int21
Author: |
MM |
|||
DocumentID: |
TID101418 |
|||
Date: |
10/14/97 4:18 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
XMMNIOS.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
Client32 was released before Microsoft published their specification for an FSD(file system driver) that conformed to Windows 95 IFS manager, and hence, it is not currently implemented as an FSD. A workaround for this is to use NIOS API to hook int21 for file I/O before Client32.
File Information
Self-Extracting File Name: XMMNIOS.EXE
Files Included: |
Size |
Date |
Time |
||
XMMNIOS.TXT |
(this file) |
||||
WAS.BAT |
63 |
10-14-97 |
4:06 PM |
||
SAMPLEC.OBJ |
8575 |
10-14-97 |
4:06 PM |
||
SAMPLEC.NLM |
1282 |
10-14-97 |
4:06 PM |
||
SAMPLEC.MAP |
2207 |
10-14-97 |
4:06 PM |
||
SAMPLEC.LNK |
428 |
10-14-97 |
4:06 PM |
||
SAMPLEC.IMP |
124 |
10-14-97 |
4:06 PM |
||
SAMPLEC.H |
1354 |
10-14-97 |
4:06 PM |
||
SAMPLEC.EXP |
0 |
10-14-97 |
4:06 PM |
||
SAMPLEC.ERR |
84 |
10-14-97 |
4:06 PM |
||
SAMPLEC.C |
16556 |
10-14-97 |
4:06 PM |
||
README.TXT |
351 |
10-14-97 |
4:06 PM |
||
MAKEFILE.MAK |
2308 |
10-14-97 |
4:06 PM |
||
M.BAT |
23 |
10-14-97 |
4:06 PM |
||
ASMINT21.OBJ |
172 |
10-14-97 |
4:06 PM |
||
ASMINT21.ASM |
428 |
10-14-97 |
4:06 PM |
||
XMMNIOS.MSG |
272 |
10-14-97 |
4:06 PM |
SetPassword of NWEntry Requires Update to Actually Change the Password
Author: |
MM |
|||
DocumentID: |
TID101426 |
|||
Date: |
10/31/97 2:54 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
IMMPASS.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
The documentation for SetPassword in NWEntry for the directory control is incorrect. In order to change the password, you must call Update after setting the password with SetPassword. Update returns a Boolean indicating if the password was changed or not. SetPassword does not return any value. The documentation will be corrected in the next release.
File Information
Self-Extracting File Name: IMMPASS.EXE
Files Included: |
Size |
Date |
Time |
||
IMMPASS.TXT |
(this file) |
||||
IMMPASS.MSG |
352 |
10-26-97 |
1:24 AM |
Sample Code To Submit a Job under NDPS
Author: |
MM |
|||
DocumentID: |
TID101427 |
|||
Date: |
11/5/97 2:34 PM |
|||
Alert status: |
Yellow |
|||
Information type: |
Issue |
|||
Readme for: |
XNDPSJOB.EXE |
|||
Novell productclass: |
NetWare API |
|||
Novell product andversion: |
NetWare SDK |
|||
Category: |
None |
Abstract
This is the answer code used for a lab session for Novell Distributed Print Services (NDPS). This sample code submits a job under NDPS.
File Information
Self-Extracting File Name: XNDPSJOB.EXE
Files Included: |
Size |
Date |
Time |
||
XNDPSJOB.TXT |
(this file) |
||||
SUBJOB.IDE |
38588 |
10-26-97 |
1:26 AM |
||
SUBJOB.EXE |
89993 |
10-26-97 |
1:27 AM |
||
SJOBANS.CPP |
28986 |
10-26-97 |
1:27 AM |
||
SUBJOB.DSW |
1613 |
10-26-97 |
1:27 AM |
||
XNDPSJOB.MSG |
136 |
10-26-97 |
1:27 AM |
Disclaimer
The origin of this information may be internal or external to Novell. While Novell makes all reasonable efforts to verify this information, Novell does not make explicit or implied claims to its validity.