Visual Basic Q&A

As a software engineer, I focus on .NET, especially asp.net, C#, WCF and so on, and I am also very interested in Search Engine Optimization.

Entries Tagged ‘type’

PRB: Error Setting Field Format Property of Access Tables

Symptoms
From Visual Basic, when trying to specify a field Format property of anAccess table (for example, field type DateTime) from blank to “Long Date”format, the following error occurs:

Run-time error ‘3421′:
Data type conversion error.
Resolution
The property data type constant should always be “dbText.” If other datatype constants, such as dbDate or dbNumeric are specified, you willencounter the error described above.

PRB: ADO: Compile Error: User-Defined Type Not Defined

Symptoms
When you compile your ADO project, you receive the following error:

Compile error:User-defined type not definedThis can occur on either a Connection or Command object.
Resolution
You may have referenced one of the following libraries instead of theMicrosoft ActiveX Data Objects (ADODB) type library:Microsoft ActiveX Data Objects Recordset (ADOR) type library.
-or-Microsoft ActiveX Data Objects (Multi-dimensional) (ADOMD) type library.

INFO: Translating Automation Errors for VB/VBA (Long)

Symptoms
This article describes several methods you can use to obtain the messagetext for an error code. This article also contains a list of error codesand descriptions as found in Winerror.h.
NOTE: When errors are raised when working with the Automation in VisualBasic or with VBA (Visual Basic for Applications), the error does notalways include the message text for the error.
Resolution
Refer to Winerror.hWhen automating another application with Visual Basic or VBA, you mayreceive an error similar to the following:

Run-time error ‘-2147418094 (80010012)’:
Automation Error.The value -2147418094 corresponds to the decimal representation of theerror code; 80010012 corresponds to the hexadecimal representation of thesame code. This code is documented in the Microsoft Visual C++ header fileWinerror.h. To locate the error code, search for the hexadecimalrepresentation of the error code (that is, 80010012). The following is anexcerpt from Winerror.h, which describes this error:

//// MessageId: RPC_E_SERVER_DIED_DNE//// MessageText:////The callee (server [not server application]) is not available//and disappeared; all connections are invalid.The call did not//execute.//#define RPC_E_SERVER_DIED_DNE_HRESULT_TYPEDEF_(0×80010012L) Winerror.h is included with Microsoft Visual C++ and is also provided withthe Microsoft Developer Network (MSDN) Library.
NOTE: Automation errors that are specific to a server application are notlisted in Winerror.h. If you do not find the error code in Winerror.h,check the documentation for the server application. Usually, withapplication-specific errors, the last 4 digits of the hexadecimalrepresentation of the error code refer to the application specific error.
Use FormatMessageYou can use the FormatMessage API function to determine the message textassociated with an automation error code. The sample function belowillustrates how you can use FormatMessage to obtain the message text:

Option ExplicitConst FORMAT_MESSAGE_FROM_SYSTEM = &H1000Private Declare Function FormatMessage Lib “kernel32″ Alias _”FormatMessageA” ( ByVal dwFlags As Long, lpSource As Long, _ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Any) _As LongPrivate Function MessageText(lCode As Long) As StringDim sRtrnCode As StringDim lRet As LongsRtrnCode = Space$(256)lRet = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, lCode, 0&, _sRtrnCode, 256&, 0&)If lRet >0 ThenMessageText = Left(sRtrnCode, lRet)ElseMessageText = “Error not found.”End IfEnd Function The next example illustrates how you can use this function with yourautomation code. In this example, Microsoft Excel is the serverapplication. Referencing a workbook object once it is destroyed (or closed)generates the error. To illustrate how to use the MessageText function,this example purposely generates an automation error by referencing aworkbook object after the workbook has been closed:

Dim xl As ObjectDim book As ObjectDim sMsg As StringSet xl = CreateObject(“excel.application”)Set book = xl.workbooks.Addbook.Close FalseOn Error Resume NextDebug.Print book.Name’<-Generates an automation error because the’workbook referenced by the book object has’been closed.If Err.Number <>0 ThensMsg = MessageText(Err.Number)MsgBox “Automation Error ” & vbCr & Err.Number & _” (” & Hex(Err.Number) & “)” & vbCr & sMsgEnd IfOn Error GoTo 0Set xl = Nothing Referencing the book object after the workbook is destroyed generates therun-time error -2147418094 (80010012). This is the message text returned byFormatMessage for this particular error:

The callee (server [not server application]) is not available anddisappeared; all connections are invalid. The call did not execute.NOTE: The FormatMessage function does not return errors that are specificto an application.
Use “Error Lookup”Microsoft Visual C++ version 5.0 includes a utility called “Error Lookup”that provides the message text for error codes.
To use this utility, start Microsoft Visual C++ and click Error Lookup onthe Tools menu. Type the error code and click Lookup. As an example, if youhad received the previously described error, -2147418094 (80010012), youwould type the following text in “Error Lookup” and then click Lookup:
0×80010012
Error List from WINERROR.HThe following table describes the error codes contained in Winerror.hincluded with Microsoft Visual C++ version 5.0:

AutomationAutomationErrorErrorin Decimalin HexError Description-2147418113 (8000FFFF)Catastrophic failure.-2147942413 (8007000D)The Data is invalid.-2147467263 (80004001)Not implemented.-2147024882 (8007000E)Ran out of memory.-2147024809 (80070057)One or more arguments are invalid.-2147467262 (80004002)No such interface supported.-2147467261 (80004003)Invalid pointer.-2147024890 (80070006)Invalid handle.-2147467260 (80004004)Operation aborted.-2147467259 (80004005)Unspecified error.-2147024891 (80070005)General access denied error.-2147483647 (80000001)Not implemented.-2147483646 (80000002)Ran out of memory.-2147483645 (80000003)One or more arguments are invalid.-2147483644 (80000004)No such interface supported.-2147483643 (80000005)Invalid pointer.-2147483642 (80000006)Invalid handle.-2147483641 (80000007)Operation aborted.-2147483640 (80000008)Unspecified error.-2147483639 (80000009)General access denied error.-2147483638 (8000000A)The data necessary to complete this operationnot yet available.-2147467258 (80004006)Thread local storage failure.-2147467257 (80004007)Get shared memory allocator failure.-2147467256 (80004008)Get memory allocator failure.-2147467255 (84009)Unable to initialize class cache.-2147467254 (8400A)Unable to initialize RPC services.-2147467253 (8000400B)Cannot set thread local storage channel control.-2147467252 (8000400C)Could not allocate thread local storage channelcontrol.-2147467251 (8000400D)The user supplied memory allocator isunacceptable.-2147467250 (8000400E)The OLE service mutex already exists.-2147467249 (8000400F)The OLE service file mapping already exists.-2147467248 (80004010)Unable to map view of file for OLE service.-2147467247 (80004011)Failure attempting to launch OLE service.-2147467246 (80004012)There was an attempt to call CoInitialize asecond time while single threaded.-2147467245 (80004013)A Remote activation was necessary but was notallowed.-2147467244 (80004014)A Remote activation was necessary but the servername provided was invalid.-2147467243 (80004015)The class is configured to run as a security iddifferent from the caller.-2147467242 (80004016)Use of Ole1 services requiring DDE windows isdisabled.-2147467241 (80004017)A RunAs specification must be A RunAsspecification must be<domain name>\<user name> or simply<user name>.-2147467240 (80004018)The server process could not be started. Thepathname may be incorrect.-2147467239 (80004019)The server process could not be started as theconfigured identity. The pathname may beincorrect or unavailable.-2147467238 (8000401A)The server process could not be started becausethe configured identity is incorrect. Check theusername and password. -2147467237 (8000401B)The client is not allowed to launch this server. -2147467236 (8000401C)The service providing this server could not bestarted. -2147467235 (8000401D)This computer was unable to communicate with thecomputer providing the server. -2147467234 (8000401E)The server did not respond after being launched. -2147467233 (8000401F)The registration information for this server isinconsistent or incomplete. -2147467232 (80004020)The registration information for this interfaceis inconsistent or incomplete. -2147467231 (80004021)The operation attempted is not supported. -2147221504 (80040000)Invalid OLEVERB structure.-2147221503 (80040001)Invalid advise flags.-2147221502 (80040002)Can’t enumerate any more, because the associateddata is missing.-2147221501 (80040003)This implementation doesn’t take advises.-2147221500 (80040004)There is no connection for this connection ID.-2147221499 (80040005)Need to run the object to perform this operation.-2147221498 (80040006)There is no cache to operate on.-2147221497 (80040007)Uninitialized object.-2147221496 (80040008)Linked object’s source class has changed.-2147221495 (80040009)Not able to get the moniker of the object.-2147221494 (8004000A)Not able to bind to the source.-2147221493 (8004000B)Object is static; operation not allowed.-2147221492 (8004000C)User cancelled out of save dialog.-2147221491 (8004000D)Invalid rectangle.-2147221490 (8004000E)compobj.dll is too old for the ole2.dllinitialized.-2147221489 (8004000F)Invalid window handle.-2147221488 (80040010)Object is not in any of the inplace active states.-2147221487 (80040011)Not able to convert object.-2147221486 (80040012)Not able to perform the operation because objectis not given storage yet.-2147221404 (80040064)Invalid FORMATETC structure.-2147221403 (80040065)Invalid DVTARGETDEVICE structure.-2147221402 (80040066)Invalid STDGMEDIUM structure.-2147221401 (80040067)Invalid STATDATA structure.-2147221400 (80040068)Invalid lindex.-2147221399 (80040069)Invalid tymed.-2147221398 (8004006A)Invalid clipboard format.-2147221397 (8004006B)Invalid aspect(s).-2147221396 (8004006C)tdSize parameter of the DVTARGETDEVICE structureis invalid.-2147221395 (8004006D)Object doesn’t support IViewObject interface.-2147221248 (80040100)Trying to revoke a drop target that has not beenregistered.-2147221247 (80040101)This window has already been registered as a droptarget.-2147221246 (80040102)Invalid window handle.-2147221232 (80040110)Class does not support aggregation (or classobject is remote).-2147221231 (80040111)ClassFactory cannot supply requested class.-2147221184 (80040140)Error drawing view.-2147221168 (80040150)Could not read key from registry.-2147221167 (80040151)Could not write key to registry.-2147221166 (80040152)Could not find the key in the registry.-2147221165 (80040153)Invalid value for registry.-2147221164 (80040154)Class not registered.-2147221163 (80040155)Interface not registered.-2147221136 (80040170)Cache not updated.-2147221120 (80040180)No verbs for OLE object.-2147221119 (80040181)Invalid verb for OLE object.-2147221088 (800401A0)Undo is not available.-2147221087 (800401A1)Space for tools is not available.-2147221056 (800401C0)OLESTREAM Get method failed.-2147221055 (800401C1)OLESTREAM Put method failed.-2147221054 (800401C2)Contents of the OLESTREAM not in correct format.-2147221053 (800401C3)There was an error in a Windows GDI call whileconverting the bitmap to a DIB.-2147221052 (800401C4)Contents of the IStorage not in correct format.-2147221051 (800401C5)Contents of IStorage is missing one of thestandard streams.-2147221050 (800401C6)There was an error in a Windows GDI call whileconverting the DIB to a bitmap. -2147221040 (800401D0)OpenClipboard Failed.-2147221039 (800401D1)EmptyClipboard Failed.-2147221038 (800401D2)SetClipboard Failed.-2147221037 (800401D3)Data on clipboard is invalid.-2147221036 (800401D4)CloseClipboard Failed.-2147221024 (800401E0)Moniker needs to be connected manually.-2147221023 (800401E1)Operation exceeded deadline.-2147221022 (800401E2)Moniker needs to be generic.-2147221021 (800401E3)Operation unavailable.-2147221020 (800401E4)Invalid syntax.-2147221019 (800401E5)No object for moniker.-2147221018 (800401E6)Bad extension for file.-2147221017 (800401E7)Intermediate operation failed.-2147221016 (800401E8)Moniker is not bindable.-2147221015 (800401E9)Moniker is not bound.-2147221014 (800401EA)Moniker cannot open file.-2147221013 (800401EB)User input required for operation to succeed.-2147221012 (800401EC)Moniker class has no inverse.-2147221011 (800401ED)Moniker does not refer to storage.-2147221010 (800401EE)No common prefix.-2147221009 (800401EF)Moniker could not be enumerated.-2147221008 (800401F0)CoInitialize has not been called. -2147221007 (800401F1)CoInitialize has already been called. -2147221006 (800401F2)Class of object cannot be determined.-2147221005 (800401F3)Invalid class string.-2147221004 (800401F4)Invalid interface string.-2147221003 (800401F5)Application not found.-2147221002 (800401F6)Application cannot be run more than once.-2147221001 (800401F7)Some error in application program.-2147221000 (800401F8)DLL for class not found.-2147220999 (800401F9)Error in the DLL.-2147220998 (800401FA)Wrong OS or OS version for application.-2147220997 (800401FB)Object is not registered.-2147220996 (800401FC)Object is already registered.-2147220995 (800401FD)Object is not connected to server.-2147220994 (800401FE)Application was launched but it didn’t register aclass factory.-2147220993 (800401FF)Object has been released.-2146959359 (80080001)Attempt to create a class object failed.-2146959358 (80080002)OLE service could not bind object.-2146959357 (80080003)RPC communication failed with OLE service.-2146959356 (80080004)Bad path to object.-2146959355 (80080005)Server execution failed.-2146959354 (80080006)OLE service could not communicate with the objectserver.-2146959353 (80080007)Moniker path could not be normalized.-2146959352 (80080008)Object server is stopping when OLE servicecontacts it.-2146959351 (80080009)An invalid root block pointer was specified.-2146959344 (80080010)An allocation chain contained an invalid linkpointer.-2146959343 (80080011)The requested allocation size was too large.-2147352575 (80020001)Unknown interface. -2147352573 (80020003)Member not found. -2147352572 (80020004)Parameter not found. -2147352571 (80020005)Type mismatch. -2147352570 (80020006)Unknown name.-2147352569 (80020007)No named arguments. -2147352568 (80020008)Bad variable type. -2147352567 (80020009)Exception occurred. -2147352566 (8002000A)Out of present range. -2147352565 (8002000B)Invalid index. -2147352564 (8002000C)Unknown language. -2147352563 (8002000D)Memory is locked. -2147352562 (8002000E)Invalid number of parameters. -2147352561 (8002000F)Parameter not optional. -2147352560 (80020010)Invalid callee. -2147352559 (80020011)Does not support a collection. -2147319786 (80028016)Buffer too small. -2147319784 (80028018)Old format or invalid type library. -2147319783 (80028019)Old format or invalid type library. -2147319780 (8002801C)Error accessing the OLE registry. -2147319779 (8002801D)Library not registered. -2147319769 (80028027)Bound to unknown type. -2147319768 (80028028)Qualified name disallowed. -2147319767 (80028029)Invalid forward reference, or reference touncompiled type. -2147319766 (8002802A)Type mismatch. -2147319765 (8002802B)Element not found. -2147319764 (8002802C)Ambiguous name. -2147319763 (8002802D)Name already exists in the library. -2147319762 (8002802E)Unknown LCID. -2147319761 (8002802F)Function not defined in specified DLL. -2147317571 (800288BD)Wrong module kind for the operation. -2147317563 (800288C5)Size may not exceed 64K. -2147317562 (800288C6)Duplicate ID in inheritance hierarchy. -2147317553 (800288CF)Incorrect inheritance depth in standard OLEhmember. -2147316576 (80028CA0)Type mismatch. -2147316575 (80028CA1)Invalid number of arguments. -2147316574 (80028CA2)I/O Error. -2147316573 (80028CA3)Error creating unique tmp file. -2147312566 (80029C4A)Error loading type library/DLL. -2147312509 (80029C83)Inconsistent property functions. -2147312508 (80029C84)Circular dependency between types/modules. -2147287039 (80030001)Unable to perform requested operation. -2147287038 (80030002)%1 could not be found. -2147287037 (80030003)The path %1 could not be found. -2147287036 (80030004)There are insufficient resources to open anotherfile. -2147287035 (80030005)Access Denied. -2147287034 (80030006)Attempted an operation on an invalid object. -2147287032 (80030008)There is insufficient memory available tocomplete operation. -2147287031 (80030009)Invalid pointer error. -2147287022 (80030012)There are no more entries to return. -2147287021 (80030013)Disk is write-protected. -2147287015 (80030019)An error occurred during a seek operation. -2147287011 (8003001D)A disk error occurred during a write operation. -2147287010 (8003001E)A disk error occurred during a read operation. -2147287008 (80030020)A share violation has occurred. -2147287007 (80030021)A lock violation has occurred. -2147286960 (80030050)%1 already exists. -2147286953 (80030057)Invalid parameter error. -2147286928 (80030070)There is insufficient disk space to completeoperation. -2147286800 (800300F0)Illegal write of non-simple property to simpleproperty set. -2147286790 (800300FA)An API call exited abnormally. -2147286789 (800300FB)The file %1 is not a valid compound file. -2147286788 (800300FC)The name %1 is not valid. -2147286787 (800300FD)An unexpected error occurred. -2147286786 (800300FE)That function is not implemented. -2147286785 (800300FF)Invalid flag error. -2147286784 (80030100)Attempted to use an object that is busy. -2147286783 (80030101)The storage has been changed since the lastcommit. -2147286782 (80030102)Attempted to use an object that has ceased toexist. -2147286781 (80030103)Can’t save. -2147286780 (80030104)The compound file %1 was produced with anincompatible version of storage. -2147286779 (80030105)The compound file %1 was produced with a newerversion of storage. -2147286778 (80030106)Share.exe or equivalent is required foroperation. -2147286777 (80030107)Illegal operation called on non-file basedstorage. -2147286776 (80030108)Illegal operation called on object with extantmarshallings. -2147286775 (80030109)The docfile has been corrupted. -2147286768 (80030110)OLE32.DLL has been loaded at the wrong address. -2147286527 (80030201)The file download was aborted abnormally. Thefile is incomplete. -2147286526 (80030202)The file download has been terminated. -2147418111 (80010001)Call was rejected by callee. -2147418110 (80010002)Call was canceled by the message filter. -2147418109 (80010003)The caller is dispatching an intertaskSendMessage call and cannot call out viaPostMessage. -2147418108 (80010004)The caller is dispatching an asynchronous calland cannot make an outgoing call on behalf ofthis call. -2147418107 (80010005)It is illegal to call out while inside messagefilter. -2147418106 (80010006)The connection terminated or is in a bogus stateand cannot be used any more. Other connectionsare still valid. -2147418105 (80010007)The callee (server [not server application]) isnot available and disappeared; all connectionsare invalid. The call may have executed. -2147418104 (80010008)The caller (client) disappeared while the callee(server) was processing a call. -2147418103 (80010009)The data packet with the marshalled parameterdata is incorrect. -2147418102 (8001000A)The call was not transmitted properly; themessage queue was full and was not emptied afteryielding. -2147418101 (8001000B)The client (caller) cannot marshal the parameterdata – low memory, etc. -2147418100 (8001000C)The client (caller) cannot unmarshal the returndata – low memory, etc. -2147418099 (8001000D)The server (callee) cannot marshal the returndata – low memory, etc. -2147418098 (8001000E)The server (callee) cannot unmarshal theparameter data – low memory, etc. -2147418097 (8001000F)Received data is invalid; could be server orclient data. -2147418096 (80010010)A particular parameter is invalid and cannot be(un)marshalled. -2147418095 (80010011)There is no second outgoing call on same channelin DDE conversation. -2147418094 (80010012)The callee (server [not server application]) isnot available and disappeared; all connectionsare invalid. The call did not execute. -2147417856 (80010100)System call failed. -2147417855 (80010101)Could not allocate some required resource(memory, events, …) -2147417854 (80010102)Attempted to make calls on more than one threadin single threaded mode. -2147417853 (80010103)The requested interface is not registered on theserver object. -2147417852 (80010104)RPC could not call the server or could not returnthe results of calling the server. -2147417851 (80010105)The server threw an exception. -2147417850 (80010106)Cannot change thread mode after it is set. -2147417849 (80010107)The method called does not exist on the server. -2147417848 (80010108)The object invoked has disconnected from itsclients. -2147417847 (80010109)The object invoked chose not to process the callnow. Try again later. -2147417846 (8001010A)The message filter indicated that the applicationis busy. -2147417845 (8001010B)The message filter rejected the call. -2147417844 (8001010C)A call control interfaces was called with invaliddata. -2147417843 (8001010D)An outgoing call cannot be made since theapplication is dispatching an input-synchronouscall. -2147417842 (8001010E)The application called an interface that wasmarshalled for a different thread. -2147417841 (8001010F)CoInitialize has not been called on the currentthread. -2147417840 (80010110)The version of OLE on the client and servermachines does not match. -2147417839 (80010111)OLE received a packet with an invalid header. -2147417838 (80010112)OLE received a packet with an invalid extension. -2147417837 (80010113)The requested object or interface does not exist. -2147417836 (80010114)The requested object does not exist. -2147417835 (80010115)OLE has sent a request and is waiting for areply. -2147417834 (80010116)OLE is waiting before retrying a request. -2147417833 (80010117)Call context cannot be accessed after callcompleted. -2147417832 (80010118)Impersonate on unsecured calls is not supported. -2147417831 (80010119)Security must be initialized before anyinterfaces are marshalled or unmarshalled. Itcannot be changed once initialized. -2147417830 (8001011A)No security packages are installed on thismachine or the user is not logged on or there areno compatible security packages between theclient and server. -2147417829 (8001011B)Access is denied. -2147417828 (8001011C)Remote calls are not allowed for this process. -2147417827 (8001011D)The marshalled interface data packet (OBJREF) hasan invalid or unknown format. -2147352577 (8001FFFF)An internal error occurred. -2146893823 (80090001)Bad UID. -2146893822 (80090002)Bad Hash. -2146893821 (80090003)Bad Key. -2146893820 (80090004)Bad Length. -2146893819 (80090005)Bad Data. -2146893818 (80090006)Invalid Signature. -2146893817 (80090007)Bad Version of provider. -2146893816 (80090008)Invalid algorithm specified. -2146893815 (80090009)Invalid flags specified. -2146893814 (8009000A)Invalid type specified. -2146893813 (8009000B)Key not valid for use in specified state. -2146893812 (8009000C)Hash not valid for use in specified state. -2146893811 (8009000D)Key does not exist.-2146893810 (8009000E)Insufficient memory available for the operation. -2146893809 (8009000F)Object already exists. -2146893808 (80090010)Access denied. -2146893807 (80090011)Object was not found. -2146893806 (80090012)Data already encrypted. -2146893805 (80090013)Invalid provider specified. -2146893804 (80090014)Invalid provider type specified. -2146893803 (80090015)Provider’s public key is invalid. -2146893802 (80090016)Keyset does not exist. -2146893801 (80090017)Provider type not defined. -2146893800 (80090018)Provider type as registered is invalid. -2146893799 (80090019)The keyset is not defined. -2146893798 (8009001A)Keyset as registered is invalid. -2146893797 (8009001B)Provider type does not match registered value. -2146893796 (8009001C)The digital signature file is corrupt. -2146893795 (8009001D)Provider DLL failed to initialize correctly. -2146893794 (8009001E)Provider DLL could not be found. -2146893793 (8009001F)The Keyset parameter is invalid. -2146893792 (80090020)An internal error occurred. -2146893791 (80090021)A base error occurred. -2146762751 (800B0001)The specified trust provider is not known on thissystem. -2146762750 (800B0002)The trust verification action specified is notsupported by the specified trust provider. -2146762749 (800B0003)The form specified for the subject is not onesupported or known by the specified trustprovider. -2146762748 (800B0004)The subject is not trusted for the specifiedaction. -2146762747 (800B0005)Error due to problem in ASN.1 encoding process. -2146762746 (800B0006)Error due to problem in ASN.1 decoding process. -2146762745 (800B0007)Reading / writing Extensions where Attributes areappropriate, and visa versa. -2146762744 (800B0008)Unspecified cryptographic failure. -2146762743 (800B0009)The size of the data could not be determined. -2146762742 (800B000A)The size of the indefinite-sized data could notbe determined. -2146762741 (800B000B)This object does not read and write self-sizingdata.-2146762496 (800B0100)No signature was present in the subject. -2146762495 (800B0101)A required certificate is not within its validityperiod. -2146762494 (800B0102)The validity periods of the certification chaindo not nest correctly.-2146762493 (800B0103)A certificate that can only be used as anend-entity is being used as a CA or visa versa.-2146762492 (800B0104)A path length constraint in the certificationchain has been violated.-2146762491 (800B0105)An extension of unknown type that is labeled’critical’ is present in a certificate.-2146762490 (800B0106)A certificate is being used for a purpose otherthan that for which it is permitted.-2146762489 (800B0107)A parent of a given certificate in fact did notissue that child certificate.-2146762488 (800B0108)A certificate is missing or has an empty valuefor an important field, such as a subject orissuer name.-2146762487 (800B0109)A certification chain processed correctly, butterminated in a root certificate which isn’ttrusted by the trust provider.-2146762486 (800B010A)A chain of certs didn’t chain as they should in acertain application of chaining.

How to call a Visual Basic .NET or Visual Basic 2005 assembly from Visual Basic 6.0

Symptoms
This article describes how use Microsoft Visual Basic .NET or Microsoft Visual Basic 2005 to build a managed assembly that can be called from Microsoft Visual Basic 6.0.
Resolution
Guidelines for exposing .NET types to COMWhen you want to expose types in a Microsoft .NET assembly to Component Object Model (COM) applications, consider the following COM interop requirements at design time. Managed types (class, interface, struct, enum, and others) interact well with COM client applications when you follow these guidelines: Define interfaces and explicitly implement them in classes. COM interop provides a mechanism to automatically generate an interface that contains all members of the class and the members of its base class. However, it is best to provide explicit interfaces and implement them explicitly.Declare all managed types that you want to expose to COM as public. Only public types in an assembly are registered and exported to the type library. Therefore, only public types are visible to COM. Declare all type members (methods, properties, fields, and events) that you want to expose to COM as public. Members of public types must also be public to be visible to COM. By default, all public types and members are visible. Use the ComVisibleAttribute attribute if you have to hide a type or a member from control type or member visibility to COM client applications.Types must have a public default constructor to be instantiated through COM. Managed, public types are visible to COM. However, without a public default constructor (a constructor without arguments), COM clients cannot create an instance of the type. COM clients can still use the type if the type is instantiated in another way and the instance is returned to the COM client. You may include overloaded constructors that accept varying arguments for these types. However, constructors that accept arguments may only be called from managed (.NET) code.Types cannot be abstract. Neither COM clients nor .NET clients can create instances of abstract types.Use the COMClass template in Visual Basic .NET or in Visual Basic 2005. When you add a new class that you intend to expose to COM applications, consider using the COMClass template that is provided by Visual Basic .NET or by Visual Basic 2005. The COMClass template creates a class that includes the COMClassAttribute attribute and generates GUIDs for the CLSID, the Interface ID, and the Event ID that are exposed by your type. Additionally, the COMClass template creates a public constructor without parameters. This is the easiest way to create a new class that follows the guidelines for creating COM callable types.
Registering the .NET assembly for COM interop and creating a type library For Visual Basic 6.0 to successfully interact with a managed component, you must register the assembly for COM interop and generate a type library. This registration must be performed on each computer where a COM client application interacts with the assembly. The type library provides type information about the exposed types in the assembly to COM client applications. The process for doing this depends on if you are working on the development computer or on the destination computer.
On the development computer, Microsoft Visual Studio .NET or Microsoft Visual Studio 2005 automatically creates a type library and registers it during the build process if the Register for COM Interop check box is selected under the project’s Configuration properties. If you used the COMClass template when you created the class, Visual Studio .NET or Visual Studio 2005 automatically selects the Register for COM Interop check box. To verify that the Register for COM Interop check box is selected in Visual Studio .NET or in Visual Studio 2005, follow these steps: Start Visual Studio .NET or Visual Studio 2005.Open the solution that contains the project that you want to build for COM interop.On the View menu, click Solution Explorer.In Solution Explorer, right-click the project that you want to build for COM interop, and then click Properties.Click Configuration Properties, and then click the Build node.
Note In Visual Studio 2005, click Compile in the left pane.Click to select the Register for COM Interop check box. This option is only enabled in class library projects.Click OK to close the Property Pages dialog box.If Visual Studio .NET or Visual Studio 2005 is not installed or if you have to manually generate and register a type library (.tlb) file for the managed assembly, use the Assembly Registration tool (RegAsm.exe) with the /TLB switch. You should also use the /Codebase switch if the managed assembly is a private assembly and you intend to put the managed assembly in a different folder from the host process (EXE).
A private assembly is deployed with an application and is available for the exclusive use of that application. Other applications do not share the private assembly. Private assemblies are designed to be installed into the same folder as the host process (EXE). With a COM client application, this means that the assembly is located in the same folder as that application. A shared assembly is available for use by multiple applications on the computer. To create a shared assembly, you must sign the assembly with a strong name and install the assembly into the Global Assembly Cache (GAC) on the destination computer.
For more information about how to sign the assembly with a strong name and install the assembly into the Global Assembly Cache (GAC), visit the following Microsoft Web site:
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx(http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx)You should use both the /tlb: switch and the /Codebase switch when you register the assembly. The /tlb: switch generates and registers a type library, and the /Codebase switch registers the location of the managed assembly in the Windows registry. If you do not use the /Codebase switch and the assembly has not been installed into the Global Assembly Cache (GAC), you must put a copy of the assembly into the folder of each COM client application (EXE) so that the assembly can be located by the common language runtime (CLR).
To generate and register a type library and register the location of the managed assembly, type the following command at the command prompt:
Regasm AssemblyName.dll /tlb: FileName.tlb /codebaseCreate a COM callable assembly inVisual Basic .NETStart Visual Studio .NET or Visual Studio 2005. On the File menu, point to New, and then click Project.Under Project Types, click Visual Basic Projects.
Note In Visual Studio2005 click Visual Basic under Project Types.Under Templates, click Class Library.Name the project TestProj, and then click OK.
By default, Class1 is created.On the View menu, click Solution Explorer.Right-click Class1.vb, and then click Delete. Click OK to confirm the deletion of the Class1.vb source file.On the Project menu, click Add Class.Under Templates, click COM Class.Name the class COMClass1.vb, and then click Open
COMClass1 is created with the following code.

<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _Public Class ComClass1#Region “COM GUIDs”‘ TheseGUIDs provide the COM identity for this class’ and its COM interfaces. If you change them, existing’ clients will no longer be able to access the class.Public Const ClassId As String = “6DB79AF2-F661-44AC-8458-62B06BFDD9E4″Public Const InterfaceId As String = “EDED909C-9271-4670-BA32-109AE917B1D7″Public Const EventsId As String = “17C731B8-CE61-4B5F-B114-10F3E46153AC”#End Region’ A creatable COM class must have a Public Sub New()’ without parameters. Otherwise, the class will not be’ registered in the COM registry and cannot be created’ through CreateObject.Public Sub New()MyBase.New()End SubEnd ClassAdd the following function to COMClass1.

Public Function myFunction() As IntegerReturn 100End FunctionIn Solution Explorer, right-click Project Name, and then click Properties.Under Configuration Properties, click Build.Verify that the Register for COM Interop check box is selected, and then click OK. On the Build menu, click Build Solution to build the project.Start Visual Basic 6.0.On the File menu, click New Project, and then click to select Standard EXE in the New Project dialog box.
By default, a form that is named Form1 is created.On the Project menu, click References. In the Available References list, double-click to select TestProj, and then click OK.Add a command button to the form.Double-click Command1 to open the Code window. Add the following code to the Command1_Click event.

Dim myObject As TestProj.COMClass1Set myObject = New TestProj.COMClass1MsgBox myObject.myFunctionOn the Run menu, click Start.Click the command button.
You should receive a message that displays 100.

How To Call GetNetworkParams/GetAdaptersInfo From Visual Basic

Symptoms
This article illustrates how to programmatically retrieve IP configuration information similar to the IPCONFIG.EXE utility. It demonstrates how to use the IP Helper APIs GetNetworkParams() and GetAdaptersInfo() from Visual Basic.
The libraries called by the code sample in this article are only supportedon the following platforms:
Microsoft Windows 2000
Microsoft Windows 98
Microsoft Windows Millennium Edition (Me)Running it on any other platform results in an error.
Resolution
Start a new Visual Basic Standard EXE project. Form1 is created by default.On the Project menu, click Remove Form1.On the Project menu, click Add Module. Module1 is created by default.Paste the following code in the General Declarations section of Module1:

Public Const MAX_HOSTNAME_LEN = 132Public Const MAX_DOMAIN_NAME_LEN = 132Public Const MAX_SCOPE_ID_LEN = 260Public Const MAX_ADAPTER_NAME_LENGTH = 260Public Const MAX_ADAPTER_ADDRESS_LENGTH = 8Public Const MAX_ADAPTER_DESCRIPTION_LENGTH = 132Public Const ERROR_BUFFER_OVERFLOW = 111Public Const MIB_IF_TYPE_ETHERNET = 6Public Const MIB_IF_TYPE_TOKENRING = 9Public Const MIB_IF_TYPE_FDDI = 15Public Const MIB_IF_TYPE_PPP = 23Public Const MIB_IF_TYPE_LOOPBACK = 24Public Const MIB_IF_TYPE_SLIP = 28Type IP_ADDR_STRINGNext As LongIpAddress As String * 16IpMask As String * 16Context As LongEnd TypeType IP_ADAPTER_INFONext As LongComboIndex As LongAdapterName As String * MAX_ADAPTER_NAME_LENGTHDescription As String * MAX_ADAPTER_DESCRIPTION_LENGTHAddressLength As LongAddress(MAX_ADAPTER_ADDRESS_LENGTH – 1) As ByteIndex As LongType As LongDhcpEnabled As LongCurrentIpAddress As LongIpAddressList As IP_ADDR_STRINGGatewayList As IP_ADDR_STRINGDhcpServer As IP_ADDR_STRINGHaveWins As BytePrimaryWinsServer As IP_ADDR_STRINGSecondaryWinsServer As IP_ADDR_STRINGLeaseObtained As LongLeaseExpires As LongEnd TypeType FIXED_INFOHostName As String * MAX_HOSTNAME_LENDomainName As String * MAX_DOMAIN_NAME_LENCurrentDnsServer As LongDnsServerList As IP_ADDR_STRINGNodeType As LongScopeIdAs String * MAX_SCOPE_ID_LENEnableRouting As LongEnableProxy As LongEnableDns As LongEnd TypePublic Declare Function GetNetworkParams Lib “IPHlpApi.dll” _(FixedInfo As Any, pOutBufLen As Long) As LongPublic Declare Function GetAdaptersInfo Lib “IPHlpApi.dll” _(IpAdapterInfo As Any, pOutBufLen As Long) As LongPublic Declare Sub CopyMemory Lib “kernel32″ Alias “RtlMoveMemory” _(Destination As Any, Source As Any, ByVal Length As Long)Sub main()Dim error As LongDim FixedInfoSize As LongDim AdapterInfoSize As LongDim i As IntegerDim PhysicalAddressAs StringDim NewTime As DateDim AdapterInfo As IP_ADAPTER_INFODim AddrStr As IP_ADDR_STRINGDim FixedInfo As FIXED_INFODim Buffer As IP_ADDR_STRINGDim pAddrStr As LongDim pAdapt As LongDim Buffer2 As IP_ADAPTER_INFODim FixedInfoBuffer() As ByteDim AdapterInfoBuffer() As Byte’ Get the main IP configuration information for this machine’ using a FIXED_INFO structure.FixedInfoSize = 0error = GetNetworkParams(ByVal 0&, FixedInfoSize)If error <> 0 ThenIf error <> ERROR_BUFFER_OVERFLOW ThenMsgBox “GetNetworkParams sizing failed with error ” & errorExit SubEnd IfEnd IfReDim FixedInfoBuffer(FixedInfoSize – 1)error = GetNetworkParams(FixedInfoBuffer(0), FixedInfoSize)If error = 0 ThenCopyMemory FixedInfo, FixedInfoBuffer(0), FixedInfoSizeMsgBox “Host Name:” & FixedInfo.HostNameMsgBox “DNS Servers:” & FixedInfo.DnsServerList.IpAddresspAddrStr = FixedInfo.DnsServerList.NextDo While pAddrStr <> 0CopyMemory Buffer, ByVal pAddrStr, LenB(Buffer)MsgBox “DNS Servers:” & Buffer.IpAddresspAddrStr = Buffer.NextLoopSelect Case FixedInfo.NodeTypeCase 1MsgBox “Node type: Broadcast”Case 2MsgBox “Node type: Peer to peer”Case 4MsgBox “Node type: Mixed”Case 8MsgBox “Node type: Hybrid”Case ElseMsgBox “Unknown node type”End SelectMsgBox “NetBIOS Scope ID:” & FixedInfo.ScopeIdIf FixedInfo.EnableRouting ThenMsgBox “IP Routing Enabled “ElseMsgBox “IP Routing not enabled”End IfIf FixedInfo.EnableProxy ThenMsgBox “WINS Proxy Enabled “ElseMsgBox “WINS Proxy not Enabled “End IfIf FixedInfo.EnableDns ThenMsgBox “NetBIOS Resolution Uses DNS “ElseMsgBox “NetBIOS Resolution Does not use DNS”End IfElseMsgBox “GetNetworkParams failed with error ” & errorExit SubEnd If’ Enumerate all of the adapter specific information using the’ IP_ADAPTER_INFO structure.’ Note:IP_ADAPTER_INFO contains a linked list of adapter entries.AdapterInfoSize = 0error = GetAdaptersInfo(ByVal 0&, AdapterInfoSize)If error <> 0 ThenIf error <> ERROR_BUFFER_OVERFLOW ThenMsgBox “GetAdaptersInfo sizing failed with error ” & errorExit SubEnd IfEnd IfReDim AdapterInfoBuffer(AdapterInfoSize – 1)’ Get actual adapter informationerror = GetAdaptersInfo(AdapterInfoBuffer(0), AdapterInfoSize)If error <> 0 ThenMsgBox “GetAdaptersInfo failed with error ” & errorExit SubEnd If’ Allocate memoryCopyMemory AdapterInfo, AdapterInfoBuffer(0), AdapterInfoSizepAdapt = AdapterInfo.NextDoCopyMemory Buffer2, AdapterInfo, AdapterInfoSizeSelect Case Buffer2.TypeCase MIB_IF_TYPE_ETHERNETMsgBox “Adapter name: Ethernet adapter “Case MIB_IF_TYPE_TOKENRINGMsgBox “Adapter name: Token Ring adapter “Case MIB_IF_TYPE_FDDIMsgBox “Adapter name: FDDI adapter “Case MIB_IF_TYPE_PPPMsgBox “Adapter name: PPP adapter”Case MIB_IF_TYPE_LOOPBACKMsgBox “Adapter name: Loopback adapter “Case MIB_IF_TYPE_SLIPMsgBox “Adapter name: Slip adapter “Case ElseMsgBox “Adapter name: Other adapter “End SelectMsgBox “AdapterDescription: ” & Buffer2.DescriptionPhysicalAddress = “”For i = 0 To Buffer2.AddressLength – 1PhysicalAddress = PhysicalAddress & Hex(Buffer2.Address(i))If i < Buffer2.AddressLength – 1 ThenPhysicalAddress = PhysicalAddress & “-”End IfNextMsgBox “Physical Address: ” & PhysicalAddressIf Buffer2.DhcpEnabled ThenMsgBox “DHCP Enabled “ElseMsgBox “DHCP disabled”End IfMsgBox “IP Address: ” & Buffer2.IpAddressList.IpAddressMsgBox “Subnet Mask: ” & Buffer2.IpAddressList.IpMaskpAddrStr = Buffer2.IpAddressList.NextDo While pAddrStr <> 0CopyMemory Buffer, Buffer2.IpAddressList, LenB(Buffer)MsgBox “IP Address: ” & Buffer.IpAddressMsgBox “Subnet Mask: ” & Buffer.IpMaskpAddrStr = Buffer.NextIf pAddrStr <> 0 ThenCopyMemory Buffer2.IpAddressList, ByVal pAddrStr, _LenB(Buffer2.IpAddressList)End IfLoopMsgBox “Default Gateway: ” & Buffer2.GatewayList.IpAddresspAddrStr = Buffer2.GatewayList.NextDo While pAddrStr <> 0CopyMemory Buffer, Buffer2.GatewayList, LenB(Buffer)MsgBox “IP Address: ” & Buffer.IpAddresspAddrStr = Buffer.NextIf pAddrStr <> 0 ThenCopyMemory Buffer2.GatewayList, ByVal pAddrStr, _LenB(Buffer2.GatewayList)End IfLoopMsgBox “DHCP Server: ” & Buffer2.DhcpServer.IpAddressMsgBox “Primary WINS Server: ” & _Buffer2.PrimaryWinsServer.IpAddressMsgBox “Secondary WINS Server: ” & _Buffer2.SecondaryWinsServer.IpAddress’ Display time.NewTime = DateAdd(“s”, Buffer2.LeaseObtained, #1/1/1970#)MsgBox “Lease Obtained: ” & _CStr(Format(NewTime, “dddd, mmm d hh:mm:ss yyyy”))NewTime = DateAdd(“s”, Buffer2.LeaseExpires, #1/1/1970#)MsgBox “Lease Expires :” & _CStr(Format(NewTime, “dddd, mmm d hh:mm:ss yyyy”))pAdapt = Buffer2.NextIf pAdapt <> 0 ThenCopyMemory AdapterInfo, ByVal pAdapt, AdapterInfoSizeEnd IfLoop Until pAdapt = 0End Sub Press the F5 key to run the project, click OK on each of the message boxes that are displayed, and note the results.Running this sample as compiled, EXE gives the following error message at the end:

Runtime error 10: this array is fixed and temporary locked.Running this inside IDE generates IPF at VB6.EXE at the end.

BUG: The scale value for Oracle numeric parameter is ignored

Symptoms
When you set the scale for a parameter of type NUMBER, it does not affect the value of the parameter that is passed to the database.
Resolution
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the “Applies to” section.