shell bypass 403

GrazzMean Shell

: /opt/microsoft/msodbcsql17/include/ [ drwxr-xr-x ]
Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.223.100.85
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : msodbcsql.h
#ifndef __msodbcsql_h__
#define __msodbcsql_h__

/*
 *-----------------------------------------------------------------------------
 * File:        msodbcsql.h
 *
 * Copyright:   Copyright (c) Microsoft Corporation
 *
 * Contents:    This SDK is not supported under any Microsoft standard support 
 *              program or service. The information is provided AS IS without 
 *              warranty of any kind. Microsoft disclaims all implied 
 *              warranties including, without limitation, any implied 
 *              warranties of merchantability or of fitness for a particular 
 *              purpose. The entire risk arising out of the use of this SDK 
 *              remains with you. In no event shall Microsoft, its authors, or 
 *              anyone else involved in the creation, production, or delivery 
 *              of this SDK be liable for any damages whatsoever (including, 
 *              without limitation, damages for loss of business profits, 
 *              business interruption, loss of business information, or other 
 *              pecuniary loss) arising out of the use of or inability to use 
 *              this SDK, even if Microsoft has been advised of the possibility 
 *              of such damages.
 *
 *-----------------------------------------------------------------------------
 */

#if !defined(SQLODBC_VER)
#define SQLODBC_VER 1700
#endif

#if SQLODBC_VER >= 1700

#define SQLODBC_PRODUCT_NAME_FULL_VER_ANSI      "Microsoft ODBC Driver 17 for SQL Server"
#define SQLODBC_PRODUCT_NAME_FULL_ANSI          "Microsoft ODBC Driver for SQL Server"
#define SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI     "ODBC Driver 17 for SQL Server"

#define SQLODBC_PRODUCT_NAME_SHORT_ANSI         "ODBC Driver for SQL Server"

#endif /* SQLODBC_VER >= 1700 */

#define SQLODBC_PRODUCT_NAME_FULL_VER           SQLODBC_PRODUCT_NAME_FULL_VER_ANSI
#define SQLODBC_PRODUCT_NAME_FULL               SQLODBC_PRODUCT_NAME_FULL_ANSI
#define SQLODBC_PRODUCT_NAME_SHORT_VER          SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI
#define SQLODBC_PRODUCT_NAME_SHORT              SQLODBC_PRODUCT_NAME_SHORT_ANSI

#define SQLODBC_DRIVER_NAME                     SQLODBC_PRODUCT_NAME_SHORT_VER


#ifdef ODBCVER

#ifdef __cplusplus
extern "C" {
#endif

/* max SQL Server identifier length */
#define SQL_MAX_SQLSERVERNAME                       128

/*
 * SQLSetConnectAttr driver specific defines.
 * Microsoft has 1200 thru 1249 reserved for Microsoft ODBC Driver for SQL Server usage.
 * Connection attributes
 */
#define SQL_COPT_SS_BASE                                1200
#define SQL_COPT_SS_REMOTE_PWD                          (SQL_COPT_SS_BASE+1)  /* dbrpwset SQLSetConnectOption only */
#define SQL_COPT_SS_USE_PROC_FOR_PREP                   (SQL_COPT_SS_BASE+2)  /* Use create proc for SQLPrepare */
#define SQL_COPT_SS_INTEGRATED_SECURITY                 (SQL_COPT_SS_BASE+3)  /* Force integrated security on login */
#define SQL_COPT_SS_PRESERVE_CURSORS                    (SQL_COPT_SS_BASE+4)  /* Preserve server cursors after SQLTransact */
#define SQL_COPT_SS_USER_DATA                           (SQL_COPT_SS_BASE+5)  /* dbgetuserdata/dbsetuserdata */
#define SQL_COPT_SS_ENLIST_IN_XA                        SQL_ATTR_ENLIST_IN_XA /* Enlist in a XA transaction */
#define SQL_COPT_SS_FALLBACK_CONNECT                    (SQL_COPT_SS_BASE+10) /* Enables FallBack connections */
#define SQL_COPT_SS_QUOTED_IDENT                        (SQL_COPT_SS_BASE+17) /* Enable/Disable Quoted Identifiers */
#define SQL_COPT_SS_ANSI_NPW                            (SQL_COPT_SS_BASE+18) /* Enable/Disable ANSI NULL, Padding and Warnings */
#define SQL_COPT_SS_BCP                                 (SQL_COPT_SS_BASE+19) /* Allow BCP usage on connection */
#define SQL_COPT_SS_TRANSLATE                           (SQL_COPT_SS_BASE+20) /* Perform code page translation */
#define SQL_COPT_SS_ATTACHDBFILENAME                    (SQL_COPT_SS_BASE+21) /* File name to be attached as a database */
#define SQL_COPT_SS_CONCAT_NULL                         (SQL_COPT_SS_BASE+22) /* Enable/Disable CONCAT_NULL_YIELDS_NULL */
#define SQL_COPT_SS_ENCRYPT                             (SQL_COPT_SS_BASE+23) /* Allow strong encryption for data */
#define SQL_COPT_SS_MARS_ENABLED                        (SQL_COPT_SS_BASE+24) /* Multiple active result set per connection */
#define SQL_COPT_SS_OLDPWD                              (SQL_COPT_SS_BASE+26) /* Old Password, used when changing password during login */
#define SQL_COPT_SS_TXN_ISOLATION                       (SQL_COPT_SS_BASE+27) /* Used to set/get any driver-specific or ODBC-defined TXN iso level */
#define SQL_COPT_SS_TRUST_SERVER_CERTIFICATE            (SQL_COPT_SS_BASE+28) /* Trust server certificate */
#define SQL_COPT_SS_SERVER_SPN                          (SQL_COPT_SS_BASE+29) /* Server SPN */
#define SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD    (SQL_COPT_SS_BASE+31) /* The integrated authentication method used for the connection */
#define SQL_COPT_SS_MUTUALLY_AUTHENTICATED              (SQL_COPT_SS_BASE+32) /* Used to decide if the connection is mutually authenticated */
#define SQL_COPT_SS_CLIENT_CONNECTION_ID                (SQL_COPT_SS_BASE+33) /* Post connection attribute used to get the ConnectionIDMET */
#define SQL_COPT_SS_CONNECT_RETRY_COUNT                 (SQL_COPT_SS_BASE+34) /* Post connection attribute used to get ConnectRetryCount */
#define SQL_COPT_SS_CONNECT_RETRY_INTERVAL              (SQL_COPT_SS_BASE+35) /* Post connection attribute used to get ConnectRetryInterval */
/*
 * SQLSetStmtAttr Microsoft ODBC Driver for SQL Server specific defines.
 * Statement attributes
 */
#define SQL_SOPT_SS_BASE                            1225
#define SQL_SOPT_SS_TEXTPTR_LOGGING                 (SQL_SOPT_SS_BASE+0) /* Text pointer logging */
#define SQL_SOPT_SS_CURRENT_COMMAND                 (SQL_SOPT_SS_BASE+1) /* dbcurcmd SQLGetStmtOption only */
#define SQL_SOPT_SS_HIDDEN_COLUMNS                  (SQL_SOPT_SS_BASE+2) /* Expose FOR BROWSE hidden columns */
#define SQL_SOPT_SS_NOBROWSETABLE                   (SQL_SOPT_SS_BASE+3) /* Set NOBROWSETABLE option */
#define SQL_SOPT_SS_CURSOR_OPTIONS                  (SQL_SOPT_SS_BASE+5) /* Server cursor options */
#define SQL_SOPT_SS_NOCOUNT_STATUS                  (SQL_SOPT_SS_BASE+6) /* Real vs. Not Real row count indicator */
#define SQL_SOPT_SS_DEFER_PREPARE                   (SQL_SOPT_SS_BASE+7) /* Defer prepare until necessary */
#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT       (SQL_SOPT_SS_BASE+8) /* Notification timeout */
#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT       (SQL_SOPT_SS_BASE+9) /* Notification message text */
#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS       (SQL_SOPT_SS_BASE+10)/* SQL service broker name */
#define SQL_SOPT_SS_PARAM_FOCUS                     (SQL_SOPT_SS_BASE+11)/* Direct subsequent calls to parameter related methods to set properties on constituent columns/parameters of container types */
#define SQL_SOPT_SS_NAME_SCOPE                      (SQL_SOPT_SS_BASE+12)/* Sets name scope for subsequent catalog function calls */
#define SQL_SOPT_SS_COLUMN_ENCRYPTION               (SQL_SOPT_SS_BASE+13)/* Sets the column encryption mode */
#define SQL_SOPT_SS_MAX_USED                        SQL_SOPT_SS_COLUMN_ENCRYPTION
 /* Define old names */
#define SQL_TEXTPTR_LOGGING                         SQL_SOPT_SS_TEXTPTR_LOGGING
#define SQL_COPT_SS_BASE_EX                         1240
#define SQL_COPT_SS_BROWSE_CONNECT                  (SQL_COPT_SS_BASE_EX+1) /* Browse connect mode of operation */
#define SQL_COPT_SS_BROWSE_SERVER                   (SQL_COPT_SS_BASE_EX+2) /* Single Server browse request. */
#define SQL_COPT_SS_WARN_ON_CP_ERROR                (SQL_COPT_SS_BASE_EX+3) /* Issues warning when data from the server had a loss during code page conversion. */
#define SQL_COPT_SS_CONNECTION_DEAD                 (SQL_COPT_SS_BASE_EX+4) /* dbdead SQLGetConnectOption only. It will try to ping the server. Expensive connection check */
#define SQL_COPT_SS_BROWSE_CACHE_DATA               (SQL_COPT_SS_BASE_EX+5) /* Determines if we should cache browse info. Used when returned buffer is greater then ODBC limit (32K) */
#define SQL_COPT_SS_RESET_CONNECTION                (SQL_COPT_SS_BASE_EX+6) /* When this option is set, we will perform connection reset on next packet */
#define SQL_COPT_SS_APPLICATION_INTENT              (SQL_COPT_SS_BASE_EX+7) /* Application Intent */
#define SQL_COPT_SS_MULTISUBNET_FAILOVER            (SQL_COPT_SS_BASE_EX+8) /* Multi-subnet Failover */
#define SQL_COPT_SS_TNIR                            (SQL_COPT_SS_BASE_EX+9) /* Transparent Network IP Resolution */
#define SQL_COPT_SS_COLUMN_ENCRYPTION               (SQL_COPT_SS_BASE_EX+10) /* Column Encryption Enabled or Disabled */
#define SQL_COPT_SS_CEKEYSTOREPROVIDER              (SQL_COPT_SS_BASE_EX+11) /* Load a keystore provider or read the list of loaded keystore providers */
#define SQL_COPT_SS_CEKEYSTOREDATA                  (SQL_COPT_SS_BASE_EX+12) /* Communicate with loaded keystore providers */
#define SQL_COPT_SS_TRUSTEDCMKPATHS                 (SQL_COPT_SS_BASE_EX+13) /* List of trusted CMK paths */
#define SQL_COPT_SS_CEKCACHETTL                     (SQL_COPT_SS_BASE_EX+14) /* Symmetric Key Cache TTL */
#define SQL_COPT_SS_AUTHENTICATION                  (SQL_COPT_SS_BASE_EX+15) /* The authentication method used for the connection */
#define SQL_COPT_SS_ACCESS_TOKEN                    (SQL_COPT_SS_BASE_EX+16) /* The authentication access token used for the connection */
#define SQL_COPT_SS_USE_FMTONLY                     (SQL_COPT_SS_BASE_EX+17) /* The flag to Set FMTONLY ON/OFF */


/* SQLSetConnectAttr MS driver additional specific defines. */
#define SQL_COPT_SS_BASE_ADD                        1400
#define SQL_COPT_SS_DATACLASSIFICATION_VERSION      (SQL_COPT_SS_BASE_ADD + 0) /* The flag to Set/Get DATACLASSIFICATION version support */
#define SQL_COPT_SS_SPID                            (SQL_COPT_SS_BASE_ADD + 1) /* The flag to Get SPID */
#define SQL_COPT_SS_AUTOBEGINTXN                    (SQL_COPT_SS_BASE_ADD + 2) /* Flag to set whether transactions are automatically started */


 /*
 * SQLColAttributes driver specific defines.
 * SQLSetDescField/SQLGetDescField driver specific defines.
 * Microsoft has 1200 thru 1249 reserved for Microsoft ODBC Driver for SQL Server usage.
 */
#define SQL_CA_SS_BASE                              1200
#define SQL_CA_SS_COLUMN_SSTYPE                     (SQL_CA_SS_BASE+0)   /*  dbcoltype/dbalttype */
#define SQL_CA_SS_COLUMN_UTYPE                      (SQL_CA_SS_BASE+1)   /*  dbcolutype/dbaltutype */
#define SQL_CA_SS_NUM_ORDERS                        (SQL_CA_SS_BASE+2)   /*  dbnumorders */
#define SQL_CA_SS_COLUMN_ORDER                      (SQL_CA_SS_BASE+3)   /*  dbordercol */
#define SQL_CA_SS_COLUMN_VARYLEN                    (SQL_CA_SS_BASE+4)   /*  dbvarylen */
#define SQL_CA_SS_NUM_COMPUTES                      (SQL_CA_SS_BASE+5)   /*  dbnumcompute */
#define SQL_CA_SS_COMPUTE_ID                        (SQL_CA_SS_BASE+6)   /*  dbnextrow status return */
#define SQL_CA_SS_COMPUTE_BYLIST                    (SQL_CA_SS_BASE+7)   /*  dbbylist */
#define SQL_CA_SS_COLUMN_ID                         (SQL_CA_SS_BASE+8)   /*  dbaltcolid */
#define SQL_CA_SS_COLUMN_OP                         (SQL_CA_SS_BASE+9)   /*  dbaltop */
#define SQL_CA_SS_COLUMN_SIZE                       (SQL_CA_SS_BASE+10)  /*  dbcollen */
#define SQL_CA_SS_COLUMN_HIDDEN                     (SQL_CA_SS_BASE+11)  /*  Column is hidden (FOR BROWSE) */
#define SQL_CA_SS_COLUMN_KEY                        (SQL_CA_SS_BASE+12)  /*  Column is key column (FOR BROWSE) */
#define SQL_CA_SS_COLUMN_COLLATION                  (SQL_CA_SS_BASE+14)  /*  Column collation (only for chars) */
#define SQL_CA_SS_VARIANT_TYPE                      (SQL_CA_SS_BASE+15)
#define SQL_CA_SS_VARIANT_SQL_TYPE                  (SQL_CA_SS_BASE+16)
#define SQL_CA_SS_VARIANT_SERVER_TYPE               (SQL_CA_SS_BASE+17)

/* XML, CLR UDT, and table valued parameter related metadata */
#define SQL_CA_SS_UDT_CATALOG_NAME                  (SQL_CA_SS_BASE+18) /*  UDT catalog name */
#define SQL_CA_SS_UDT_SCHEMA_NAME                   (SQL_CA_SS_BASE+19) /*  UDT schema name */
#define SQL_CA_SS_UDT_TYPE_NAME                     (SQL_CA_SS_BASE+20) /*  UDT type name */
#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME            (SQL_CA_SS_BASE+21) /*  Qualified name of the assembly containing the UDT class */
#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) /*  Name of the catalog that contains XML Schema collection */
#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME  (SQL_CA_SS_BASE+23) /*  Name of the schema that contains XML Schema collection */
#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME         (SQL_CA_SS_BASE+24) /*  Name of the XML Schema collection */
#define SQL_CA_SS_CATALOG_NAME                      (SQL_CA_SS_BASE+25) /*  Catalog name */
#define SQL_CA_SS_SCHEMA_NAME                       (SQL_CA_SS_BASE+26) /*  Schema name */
#define SQL_CA_SS_TYPE_NAME                         (SQL_CA_SS_BASE+27) /*  Type name */

/* table valued parameter related metadata */
#define SQL_CA_SS_COLUMN_COMPUTED                   (SQL_CA_SS_BASE+29) /*  column is computed */
#define SQL_CA_SS_COLUMN_IN_UNIQUE_KEY              (SQL_CA_SS_BASE+30) /*  column is part of a unique key */
#define SQL_CA_SS_COLUMN_SORT_ORDER                 (SQL_CA_SS_BASE+31) /*  column sort order */
#define SQL_CA_SS_COLUMN_SORT_ORDINAL               (SQL_CA_SS_BASE+32) /*  column sort ordinal */
#define SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE          (SQL_CA_SS_BASE+33) /*  column has default value for all rows of the table valued parameter */

/* sparse column related metadata */
#define SQL_CA_SS_IS_COLUMN_SET                     (SQL_CA_SS_BASE+34) /*  column is a column-set column for sparse columns */

/* Legacy datetime related metadata */
#define SQL_CA_SS_SERVER_TYPE                       (SQL_CA_SS_BASE+35) /*  column type to send on the wire for datetime types */

/* force column encryption */
#define SQL_CA_SS_FORCE_ENCRYPT                     (SQL_CA_SS_BASE+36) /*  indicate mandatory encryption for this parameter */

/* Data Classification */
#define SQL_CA_SS_DATA_CLASSIFICATION               (SQL_CA_SS_BASE+37) /*  retrieve data classification information */

/* Data Classification version*/
#define SQL_CA_SS_DATA_CLASSIFICATION_VERSION       (SQL_CA_SS_BASE+38) /*  retrieve data classification version */

/* Defines returned by SQL_ATTR_CURSOR_TYPE/SQL_CURSOR_TYPE */
#define SQL_CURSOR_FAST_FORWARD_ONLY        8            /*  Only returned by SQLGetStmtAttr/Option */
/* Defines for use with SQL_COPT_SS_USE_PROC_FOR_PREP */
#define SQL_UP_OFF                          0L           /*  Procedures won't be used for prepare */
#define SQL_UP_ON                           1L           /*  Procedures will be used for prepare */
#define SQL_UP_ON_DROP                      2L           /*  Temp procedures will be explicitly dropped */
#define SQL_UP_DEFAULT                      SQL_UP_ON
/* Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only */
#define SQL_IS_OFF                          0L
#define SQL_IS_ON                           1L
#define SQL_IS_DEFAULT                      SQL_IS_OFF
/* Defines for use with SQL_COPT_SS_AUTHENTICATION - Pre-Connect Option only */
#define SQL_AU_NONE                         0L           /*  Authentication not used */
#define SQL_AU_PASSWORD                     1L           /*  SQL server authentication is used */
#define SQL_AU_AD_INTEGRATED                2L           /*  Active Directory integrated authentication is used */
#define SQL_AU_AD_PASSWORD                  3L           /*  Active Directory password authentication is used */
#define SQL_AU_RESET                        5L           /*  Reset the value to attribute not set to anything. */
#define SQL_AU_AD_MSI                       6L           /*  Active Directory Manage Service Identity authentication is used */
#define SQL_AU_AD_SPA                       7L           /*  Active Directory Service Principal authentication is used */

/* Defines for use with SQL_COPT_SS_PRESERVE_CURSORS */
#define SQL_PC_OFF                          0L           /*  Cursors are closed on SQLTransact */
#define SQL_PC_ON                           1L           /*  Cursors remain open on SQLTransact */
#define SQL_PC_DEFAULT                      SQL_PC_OFF
/* Defines for use with SQL_COPT_SS_USER_DATA */
#define SQL_UD_NOTSET                       NULL         /*  No user data pointer set */
/* Defines for use with SQL_COPT_SS_TRANSLATE */
#define SQL_XL_OFF                          0L           /*  Code page translation is not performed */
#define SQL_XL_ON                           1L           /*  Code page translation is performed */
#define SQL_XL_DEFAULT                      SQL_XL_ON
/* Defines for use with SQL_COPT_SS_FALLBACK_CONNECT - Pre-Connect Option only */
#define SQL_FB_OFF                          0L           /*  FallBack connections are disabled */
#define SQL_FB_ON                           1L           /*  FallBack connections are enabled */
#define SQL_FB_DEFAULT                      SQL_FB_OFF
/* Defines for use with SQL_COPT_SS_BCP - Pre-Connect Option only */
#define SQL_BCP_OFF                         0L           /*  BCP is not allowed on connection */
#define SQL_BCP_ON                          1L           /*  BCP is allowed on connection */
#define SQL_BCP_DEFAULT                     SQL_BCP_OFF
/* Defines for use with SQL_COPT_SS_QUOTED_IDENT */
#define SQL_QI_OFF                          0L           /*  Quoted identifiers are enable */
#define SQL_QI_ON                           1L           /*  Quoted identifiers are disabled */
#define SQL_QI_DEFAULT                      SQL_QI_ON
/* Defines for use with SQL_COPT_SS_ANSI_NPW - Pre-Connect Option only */
#define SQL_AD_OFF                          0L           /*  ANSI NULLs, Padding and Warnings are enabled */
#define SQL_AD_ON                           1L           /*  ANSI NULLs, Padding and Warnings are disabled */
#define SQL_AD_DEFAULT                      SQL_AD_ON
/* Defines for use with SQL_COPT_SS_CONCAT_NULL - Pre-Connect Option only */
#define SQL_CN_OFF                          0L           /*  CONCAT_NULL_YIELDS_NULL is off */
#define SQL_CN_ON                           1L           /*  CONCAT_NULL_YIELDS_NULL is on */
#define SQL_CN_DEFAULT                      SQL_CN_ON
/* Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING */
#define SQL_TL_OFF                          0L           /*  No logging on text pointer ops */
#define SQL_TL_ON                           1L           /*  Logging occurs on text pointer ops */
#define SQL_TL_DEFAULT                      SQL_TL_ON
/* Defines for use with SQL_SOPT_SS_HIDDEN_COLUMNS */
#define SQL_HC_OFF                          0L           /*  FOR BROWSE columns are hidden */
#define SQL_HC_ON                           1L           /*  FOR BROWSE columns are exposed */
#define SQL_HC_DEFAULT                      SQL_HC_OFF
/* Defines for use with SQL_SOPT_SS_NOBROWSETABLE */
#define SQL_NB_OFF                          0L           /*  NO_BROWSETABLE is off */
#define SQL_NB_ON                           1L           /*  NO_BROWSETABLE is on */
#define SQL_NB_DEFAULT                      SQL_NB_OFF
/* Defines for use with SQL_SOPT_SS_CURSOR_OPTIONS */
#define SQL_CO_OFF                          0L           /*  Clear all cursor options */
#define SQL_CO_FFO                          1L           /*  Fast-forward cursor will be used */
#define SQL_CO_AF                           2L           /*  Autofetch on cursor open */
#define SQL_CO_FFO_AF                       (SQL_CO_FFO|SQL_CO_AF)  /*  Fast-forward cursor with autofetch */
#define SQL_CO_FIREHOSE_AF                  4L           /*  Auto fetch on fire-hose cursors */
#define SQL_CO_DEFAULT                      SQL_CO_OFF
/* Defines for use with SQL_SOPT_SS_COLUMN_ENCRYPTION */
#define SQL_CE_DISABLED                     0L           /*  Disabled */
#define SQL_CE_RESULTSETONLY                1L           /*  Decryption Only (resultsets and return values) */
#define SQL_CE_ENABLED                      3L           /*  Enabled (both encryption and decryption) */
/* Defines for use with SQL_COPT_SS_COLUMN_ENCRYPTION */
#define SQL_COLUMN_ENCRYPTION_DISABLE       0L
#define SQL_COLUMN_ENCRYPTION_ENABLE        1L
#define SQL_COLUMN_ENCRYPTION_DEFAULT       SQL_COLUMN_ENCRYPTION_DISABLE
/* Defines for use with SQL_COPT_SS_CEKCACHETTL */
#define SQL_CEKCACHETTL_DEFAULT             7200L        /*  TTL value in seconds (2 hours) */
/* SQL_SOPT_SS_NOCOUNT_STATUS */
#define SQL_NC_OFF                          0L
#define SQL_NC_ON                           1L
/* SQL_SOPT_SS_DEFER_PREPARE */
#define SQL_DP_OFF                          0L
#define SQL_DP_ON                           1L
/* SQL_SOPT_SS_NAME_SCOPE */
#define SQL_SS_NAME_SCOPE_TABLE             0L
#define SQL_SS_NAME_SCOPE_TABLE_TYPE        1L
#define SQL_SS_NAME_SCOPE_EXTENDED          2L
#define SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET 3L
#define SQL_SS_NAME_SCOPE_DEFAULT           SQL_SS_NAME_SCOPE_TABLE
/* SQL_COPT_SS_ENCRYPT */
#define SQL_EN_OFF                          0L
#define SQL_EN_ON                           1L
/* SQL_COPT_SS_TRUST_SERVER_CERTIFICATE */
#define SQL_TRUST_SERVER_CERTIFICATE_NO     0L
#define SQL_TRUST_SERVER_CERTIFICATE_YES    1L
/* SQL_COPT_SS_BROWSE_CONNECT */
#define SQL_MORE_INFO_NO                    0L
#define SQL_MORE_INFO_YES                   1L
/* SQL_COPT_SS_BROWSE_CACHE_DATA */
#define SQL_CACHE_DATA_NO                   0L
#define SQL_CACHE_DATA_YES                  1L
/* SQL_COPT_SS_RESET_CONNECTION */
#define SQL_RESET_YES                       1L
/* SQL_COPT_SS_WARN_ON_CP_ERROR */
#define SQL_WARN_NO                         0L
#define SQL_WARN_YES                        1L
/* SQL_COPT_SS_MARS_ENABLED */
#define SQL_MARS_ENABLED_NO                 0L
#define SQL_MARS_ENABLED_YES                1L
/* SQL_TXN_ISOLATION_OPTION bitmasks */
#define SQL_TXN_SS_SNAPSHOT                 0x00000020L
/* SQL_AUTOBEGINTXN options */
#define SQL_AUTOBEGINTXN_OFF                0UL
#define SQL_AUTOBEGINTXN_ON                 1UL
#define SQL_AUTOBEGINTXN_DEFAULT            SQL_AUTOBEGINTXN_ON

/* The following are defines for SQL_CA_SS_COLUMN_SORT_ORDER */
#define SQL_SS_ORDER_UNSPECIFIED            0L
#define SQL_SS_DESCENDING_ORDER             1L
#define SQL_SS_ASCENDING_ORDER              2L
#define SQL_SS_ORDER_DEFAULT                SQL_SS_ORDER_UNSPECIFIED

/*
 * Driver specific SQL data type defines.
 * Microsoft has -150 thru -199 reserved for Microsoft ODBC Driver for SQL Server usage.
 */
#define SQL_SS_VARIANT                      (-150)
#define SQL_SS_UDT                          (-151)
#define SQL_SS_XML                          (-152)
#define SQL_SS_TABLE                        (-153)
#define SQL_SS_TIME2                        (-154)
#define SQL_SS_TIMESTAMPOFFSET              (-155)

/* Local types to be used with SQL_CA_SS_SERVER_TYPE */
#define SQL_SS_TYPE_DEFAULT                         0L
#define SQL_SS_TYPE_SMALLDATETIME                   1L
#define SQL_SS_TYPE_DATETIME                        2L
#define SQL_SS_TYPE_MONEY                           3L
#define SQL_SS_TYPE_SMALLMONEY                      4L

/* Extended C Types range 4000 and above. Range of -100 thru 200 is reserved by Driver Manager. */
#define SQL_C_TYPES_EXTENDED                0x04000L
#define SQL_C_SS_TIME2                         (SQL_C_TYPES_EXTENDED+0)
#define SQL_C_SS_TIMESTAMPOFFSET               (SQL_C_TYPES_EXTENDED+1)

#ifndef SQLNCLI_NO_BCP
/* Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
   and you want to exclude the BCP-related definitions in this header file. */
#ifndef SQLTEXT

    /* SQL Server Data Type defines.
       New types for SQL 6.0 and later servers */
#define SQLTEXT                             0x23
#define SQLVARBINARY                        0x25
#define SQLINTN                             0x26
#define SQLVARCHAR                          0x27
#define SQLBINARY                           0x2d
#define SQLIMAGE                            0x22
#define SQLCHARACTER                        0x2f
#define SQLINT1                             0x30
#define SQLBIT                              0x32
#define SQLINT2                             0x34
#define SQLINT4                             0x38
#define SQLMONEY                            0x3c
#define SQLDATETIME                         0x3d
#define SQLFLT8                             0x3e
#define SQLFLTN                             0x6d
#define SQLMONEYN                           0x6e
#define SQLDATETIMN                         0x6f
#define SQLFLT4                             0x3b
#define SQLMONEY4                           0x7a
#define SQLDATETIM4                         0x3a
    /* New types for SQL 6.0 and later servers */
#define SQLDECIMAL                          0x6a
#define SQLNUMERIC                          0x6c
    /* New types for SQL 7.0 and later servers */
#define SQLUNIQUEID                         0x24
#define SQLBIGCHAR                          0xaf
#define SQLBIGVARCHAR                       0xa7
#define SQLBIGBINARY                        0xad
#define SQLBIGVARBINARY                     0xa5
#define SQLBITN                             0x68
#define SQLNCHAR                            0xef
#define SQLNVARCHAR                         0xe7
#define SQLNTEXT                            0x63
    /* New types for SQL 2000 and later servers */
#define SQLINT8                             0x7f
#define SQLVARIANT                          0x62
    /* New types for SQL 2005 and later servers */
#define SQLUDT                              0xf0
#define SQLXML                              0xf1
    /* New types for SQL 2008 and later servers */
#define SQLTABLE                            0xf3
#define SQLDATEN                            0x28
#define SQLTIMEN                            0x29
#define SQLDATETIME2N                       0x2a
#define SQLDATETIMEOFFSETN                  0x2b
    /* Define old names */
#define SQLDECIMALN                         0x6a
#define SQLNUMERICN                         0x6c

#endif /* SQLTEXT */
#endif /* SQLNCLI_NO_BCP */

    /* SQL_SS_LENGTH_UNLIMITED is used to describe the max length of
       VARCHAR(max), VARBINARY(max), NVARCHAR(max), and XML columns */
#define SQL_SS_LENGTH_UNLIMITED             0

/*
 * User Data Type definitions.
 * Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
 */
#define SQLudtBINARY                        3
#define SQLudtBIT                           16
#define SQLudtBITN                          0
#define SQLudtCHAR                          1
#define SQLudtDATETIM4                      22
#define SQLudtDATETIME                      12
#define SQLudtDATETIMN                      15
#define SQLudtDECML                         24
#define SQLudtDECMLN                        26
#define SQLudtFLT4                          23
#define SQLudtFLT8                          8
#define SQLudtFLTN                          14
#define SQLudtIMAGE                         20
#define SQLudtINT1                          5
#define SQLudtINT2                          6
#define SQLudtINT4                          7
#define SQLudtINTN                          13
#define SQLudtMONEY                         11
#define SQLudtMONEY4                        21
#define SQLudtMONEYN                        17
#define SQLudtNUM                           10
#define SQLudtNUMN                          25
#define SQLudtSYSNAME                       18
#define SQLudtTEXT                          19
#define SQLudtTIMESTAMP                     80
#define SQLudtUNIQUEIDENTIFIER              0
#define SQLudtVARBINARY                     4
#define SQLudtVARCHAR                       2
#define MIN_USER_DATATYPE                   256
/*
 * Aggregate operator types.
 * Returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP.
 */
#define SQLAOPSTDEV                         0x30    /* Standard deviation */
#define SQLAOPSTDEVP                        0x31    /* Standard deviation population */
#define SQLAOPVAR                           0x32    /* Variance */
#define SQLAOPVARP                          0x33    /* Variance population */
#define SQLAOPCNT                           0x4b    /* Count */
#define SQLAOPSUM                           0x4d    /* Sum */
#define SQLAOPAVG                           0x4f    /* Average */
#define SQLAOPMIN                           0x51    /* Min */
#define SQLAOPMAX                           0x52    /* Max */
#define SQLAOPANY                           0x53    /* Any */
#define SQLAOPNOOP                          0x56    /* None */
/*
 * SQLGetDiagField driver specific defines.
 * Microsoft has -1150 thru -1199 reserved for Microsoft ODBC Driver for SQL Server usage.
 */
#define SQL_DIAG_SS_BASE                    (-1150)
#define SQL_DIAG_SS_MSGSTATE                (SQL_DIAG_SS_BASE)
#define SQL_DIAG_SS_SEVERITY                (SQL_DIAG_SS_BASE-1)
#define SQL_DIAG_SS_SRVNAME                 (SQL_DIAG_SS_BASE-2)
#define SQL_DIAG_SS_PROCNAME                (SQL_DIAG_SS_BASE-3)
#define SQL_DIAG_SS_LINE                    (SQL_DIAG_SS_BASE-4)
/*
 * SQLGetDiagField/SQL_DIAG_DYNAMIC_FUNCTION_CODE driver specific defines.
 * Microsoft has -200 thru -299 reserved for Microsoft ODBC Driver for SQL Server usage.
 */
#define SQL_DIAG_DFC_SS_BASE                (-200)
#define SQL_DIAG_DFC_SS_ALTER_DATABASE      (SQL_DIAG_DFC_SS_BASE-0)
#define SQL_DIAG_DFC_SS_CHECKPOINT          (SQL_DIAG_DFC_SS_BASE-1)
#define SQL_DIAG_DFC_SS_CONDITION           (SQL_DIAG_DFC_SS_BASE-2)
#define SQL_DIAG_DFC_SS_CREATE_DATABASE     (SQL_DIAG_DFC_SS_BASE-3)
#define SQL_DIAG_DFC_SS_CREATE_DEFAULT      (SQL_DIAG_DFC_SS_BASE-4)
#define SQL_DIAG_DFC_SS_CREATE_PROCEDURE    (SQL_DIAG_DFC_SS_BASE-5)
#define SQL_DIAG_DFC_SS_CREATE_RULE         (SQL_DIAG_DFC_SS_BASE-6)
#define SQL_DIAG_DFC_SS_CREATE_TRIGGER      (SQL_DIAG_DFC_SS_BASE-7)
#define SQL_DIAG_DFC_SS_CURSOR_DECLARE      (SQL_DIAG_DFC_SS_BASE-8)
#define SQL_DIAG_DFC_SS_CURSOR_OPEN         (SQL_DIAG_DFC_SS_BASE-9)
#define SQL_DIAG_DFC_SS_CURSOR_FETCH        (SQL_DIAG_DFC_SS_BASE-10)
#define SQL_DIAG_DFC_SS_CURSOR_CLOSE        (SQL_DIAG_DFC_SS_BASE-11)
#define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR   (SQL_DIAG_DFC_SS_BASE-12)
#define SQL_DIAG_DFC_SS_DBCC                (SQL_DIAG_DFC_SS_BASE-13)
#define SQL_DIAG_DFC_SS_DISK                (SQL_DIAG_DFC_SS_BASE-14)
#define SQL_DIAG_DFC_SS_DROP_DATABASE       (SQL_DIAG_DFC_SS_BASE-15)
#define SQL_DIAG_DFC_SS_DROP_DEFAULT        (SQL_DIAG_DFC_SS_BASE-16)
#define SQL_DIAG_DFC_SS_DROP_PROCEDURE      (SQL_DIAG_DFC_SS_BASE-17)
#define SQL_DIAG_DFC_SS_DROP_RULE           (SQL_DIAG_DFC_SS_BASE-18)
#define SQL_DIAG_DFC_SS_DROP_TRIGGER        (SQL_DIAG_DFC_SS_BASE-19)
#define SQL_DIAG_DFC_SS_DUMP_DATABASE       (SQL_DIAG_DFC_SS_BASE-20)
#define SQL_DIAG_DFC_SS_BACKUP_DATABASE     (SQL_DIAG_DFC_SS_BASE-20)
#define SQL_DIAG_DFC_SS_DUMP_TABLE          (SQL_DIAG_DFC_SS_BASE-21)
#define SQL_DIAG_DFC_SS_DUMP_TRANSACTION    (SQL_DIAG_DFC_SS_BASE-22)
#define SQL_DIAG_DFC_SS_BACKUP_TRANSACTION  (SQL_DIAG_DFC_SS_BASE-22)
#define SQL_DIAG_DFC_SS_GOTO                (SQL_DIAG_DFC_SS_BASE-23)
#define SQL_DIAG_DFC_SS_INSERT_BULK         (SQL_DIAG_DFC_SS_BASE-24)
#define SQL_DIAG_DFC_SS_KILL                (SQL_DIAG_DFC_SS_BASE-25)
#define SQL_DIAG_DFC_SS_LOAD_DATABASE       (SQL_DIAG_DFC_SS_BASE-26)
#define SQL_DIAG_DFC_SS_RESTORE_DATABASE    (SQL_DIAG_DFC_SS_BASE-26)
#define SQL_DIAG_DFC_SS_LOAD_HEADERONLY     (SQL_DIAG_DFC_SS_BASE-27)
#define SQL_DIAG_DFC_SS_RESTORE_HEADERONLY  (SQL_DIAG_DFC_SS_BASE-27)
#define SQL_DIAG_DFC_SS_LOAD_TABLE          (SQL_DIAG_DFC_SS_BASE-28)
#define SQL_DIAG_DFC_SS_LOAD_TRANSACTION    (SQL_DIAG_DFC_SS_BASE-29)
#define SQL_DIAG_DFC_SS_RESTORE_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
#define SQL_DIAG_DFC_SS_PRINT               (SQL_DIAG_DFC_SS_BASE-30)
#define SQL_DIAG_DFC_SS_RAISERROR           (SQL_DIAG_DFC_SS_BASE-31)
#define SQL_DIAG_DFC_SS_READTEXT            (SQL_DIAG_DFC_SS_BASE-32)
#define SQL_DIAG_DFC_SS_RECONFIGURE         (SQL_DIAG_DFC_SS_BASE-33)
#define SQL_DIAG_DFC_SS_RETURN              (SQL_DIAG_DFC_SS_BASE-34)
#define SQL_DIAG_DFC_SS_SELECT_INTO         (SQL_DIAG_DFC_SS_BASE-35)
#define SQL_DIAG_DFC_SS_SET                 (SQL_DIAG_DFC_SS_BASE-36)
#define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
#define SQL_DIAG_DFC_SS_SET_ROW_COUNT       (SQL_DIAG_DFC_SS_BASE-38)
#define SQL_DIAG_DFC_SS_SET_STATISTICS      (SQL_DIAG_DFC_SS_BASE-39)
#define SQL_DIAG_DFC_SS_SET_TEXTSIZE        (SQL_DIAG_DFC_SS_BASE-40)
#define SQL_DIAG_DFC_SS_SETUSER             (SQL_DIAG_DFC_SS_BASE-41)
#define SQL_DIAG_DFC_SS_SHUTDOWN            (SQL_DIAG_DFC_SS_BASE-42)
#define SQL_DIAG_DFC_SS_TRANS_BEGIN         (SQL_DIAG_DFC_SS_BASE-43)
#define SQL_DIAG_DFC_SS_TRANS_COMMIT        (SQL_DIAG_DFC_SS_BASE-44)
#define SQL_DIAG_DFC_SS_TRANS_PREPARE       (SQL_DIAG_DFC_SS_BASE-45)
#define SQL_DIAG_DFC_SS_TRANS_ROLLBACK      (SQL_DIAG_DFC_SS_BASE-46)
#define SQL_DIAG_DFC_SS_TRANS_SAVE          (SQL_DIAG_DFC_SS_BASE-47)
#define SQL_DIAG_DFC_SS_TRUNCATE_TABLE      (SQL_DIAG_DFC_SS_BASE-48)
#define SQL_DIAG_DFC_SS_UPDATE_STATISTICS   (SQL_DIAG_DFC_SS_BASE-49)
#define SQL_DIAG_DFC_SS_UPDATETEXT          (SQL_DIAG_DFC_SS_BASE-50)
#define SQL_DIAG_DFC_SS_USE                 (SQL_DIAG_DFC_SS_BASE-51)
#define SQL_DIAG_DFC_SS_WAITFOR             (SQL_DIAG_DFC_SS_BASE-52)
#define SQL_DIAG_DFC_SS_WRITETEXT           (SQL_DIAG_DFC_SS_BASE-53)
#define SQL_DIAG_DFC_SS_DENY                (SQL_DIAG_DFC_SS_BASE-54)
#define SQL_DIAG_DFC_SS_SET_XCTLVL          (SQL_DIAG_DFC_SS_BASE-55)
#define SQL_DIAG_DFC_SS_MERGE               (SQL_DIAG_DFC_SS_BASE-56)

/* Severity codes for SQL_DIAG_SS_SEVERITY */
#define EX_ANY          0
#define EX_INFO         10
#define EX_MAXISEVERITY EX_INFO
#define EX_MISSING      11
#define EX_TYPE         12
#define EX_DEADLOCK     13
#define EX_PERMIT       14
#define EX_SYNTAX       15
#define EX_USER         16
#define EX_RESOURCE     17
#define EX_INTOK        18
#define MAXUSEVERITY    EX_INTOK
#define EX_LIMIT        19
#define EX_CMDFATAL     20
#define MINFATALERR     EX_CMDFATAL
#define EX_DBFATAL      21
#define EX_TABCORRUPT   22
#define EX_DBCORRUPT    23
#define EX_HARDWARE     24
#define EX_CONTROL      25

#pragma pack(8)


/* New Structure for TIME2 */
typedef struct tagSS_TIME2_STRUCT
{
    SQLUSMALLINT   hour;
    SQLUSMALLINT   minute;
    SQLUSMALLINT   second;
    SQLUINTEGER    fraction;
} SQL_SS_TIME2_STRUCT;

/* New Structure for TIMESTAMPOFFSET */
typedef struct tagSS_TIMESTAMPOFFSET_STRUCT
{
    SQLSMALLINT    year;
    SQLUSMALLINT   month;
    SQLUSMALLINT   day;
    SQLUSMALLINT   hour;
    SQLUSMALLINT   minute;
    SQLUSMALLINT   second;
    SQLUINTEGER    fraction;
    SQLSMALLINT    timezone_hour;
    SQLSMALLINT    timezone_minute;
} SQL_SS_TIMESTAMPOFFSET_STRUCT;

#pragma pack()

typedef struct AccessToken
{
    unsigned int dataSize;
    char data[];
} ACCESSTOKEN;

/* 
 * Keystore Provider interface definitions 
 */
typedef struct CEKeystoreContext
{
    void *envCtx;
    void *dbcCtx;
    void *stmtCtx;
} CEKEYSTORECONTEXT;

typedef void errFunc(CEKEYSTORECONTEXT *ctx, const wchar_t *msg, ...);

#define IDS_MSG(x) ((const wchar_t*)(x))

typedef struct CEKeystoreProvider
{
    wchar_t *Name;
    int (*Init)(CEKEYSTORECONTEXT *ctx, errFunc *onError);
    int (*Read)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int *len);
    int (*Write)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int len);
    int (*DecryptCEK)(
        CEKEYSTORECONTEXT *ctx,
        errFunc *onError,
        const wchar_t *keyPath,
        const wchar_t *alg,
        unsigned char *ecek,
        unsigned short ecekLen,
        unsigned char **cekOut,
        unsigned short *cekLen);
    int (*EncryptCEK)(
        CEKEYSTORECONTEXT *ctx,
        errFunc *onError,
        const wchar_t *keyPath,
        const wchar_t *alg,
        unsigned char *cek,
        unsigned short cekLen,
        unsigned char **ecekOut,
        unsigned short *ecekLen);
    void (*Free)();
} CEKEYSTOREPROVIDER;

typedef struct CEKeystoreProvider2
{
    wchar_t *Name;
    int (*Init)(CEKEYSTORECONTEXT *ctx, errFunc *onError);
    int (*Read)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int *len);
    int (*Write)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int len);
    int (*DecryptCEK)(
        CEKEYSTORECONTEXT *ctx,
        errFunc *onError,
        const wchar_t *keyPath,
        const wchar_t *alg,
        unsigned char *ecek,
        unsigned short ecekLen,
        unsigned char **cekOut,
        unsigned short *cekLen);
    int (*EncryptCEK)(
        CEKEYSTORECONTEXT *ctx,
        errFunc *onError,
        const wchar_t *keyPath,
        const wchar_t *alg,
        unsigned char *cek,
        unsigned short cekLen,
        unsigned char **ecekOut,
        unsigned short *ecekLen);
    int (*VerifyCMKMetadata)(
        CEKEYSTORECONTEXT *ctx,
        errFunc *onError,
        const wchar_t *keyPath,
        unsigned char *signature,
        unsigned short sigLen);
    void *reserved;
    void (*Free)();
} CEKEYSTOREPROVIDER2;
typedef struct CEKeystoreData
{
    wchar_t *name;
    unsigned int dataSize;
    char data[];
} CEKEYSTOREDATA;

/* The following constants are for the Azure Key Vault configuration interface */
#define AKV_CONFIG_FLAGS        0
 #define AKVCFG_AUTHMODE       0x0000000F
  #define AKVCFG_AUTHMODE_ACCESSTOKEN   0
  #define AKVCFG_AUTHMODE_CLIENTKEY     1
  #define AKVCFG_AUTHMODE_PASSWORD      2
  #define AKVCFG_AUTHMODE_INTEGRATED    3
  #define AKVCFG_AUTHMODE_CERTIFICATE   4
  #define AKVCFG_AUTHMODE_MSI           5
 #define AKVCFG_NOAUTORENEW    0x00000010

#define AKV_CONFIG_PRINCIPALID  1
#define AKV_CONFIG_AUTHSECRET   2

#define AKV_CONFIG_ACCESSTOKEN  3
#define AKV_CONFIG_TOKENEXPIRY  4

#define AKV_CONFIG_MAXRETRIES   5
#define AKV_CONFIG_RETRYTIMEOUT 6
#define AKV_CONFIG_RETRYWAIT    7

#define AKV_CONFIG_TRUSTEDENDPOINTS 8

#define AKV_CONFIG_RESET        255

/*
* BCP Definitions
*/

/* Error codes */
#define SUCCEED                 1
#define FAIL                    0
#define SUCCEED_ABORT           2
#define SUCCEED_ASYNC           3

/* Transfer directions */
#define DB_IN                   1   /* Transfer from client to server */
#define DB_OUT                  2   /* Transfer from server to client */

/* bcp_control option */
#define BCPMAXERRS              1   /* Sets max errors allowed */
#define BCPFIRST                2   /* Sets first row to be copied out */
#define BCPLAST                 3   /* Sets number of rows to be copied out */
#define BCPBATCH                4   /* Sets input batch size */
#define BCPKEEPNULLS            5   /* Sets to insert NULLs for empty input values */
#define BCPABORT                6   /* Sets to have bcpexec return SUCCEED_ABORT */
#define BCPODBC                 7   /* Sets ODBC canonical character output */
#define BCPKEEPIDENTITY         8   /* Sets IDENTITY_INSERT on */
#define BCPHINTSA               10  /* Sets server BCP hints (ANSI string) */
#define BCPHINTSW               11  /* Sets server BCP hints (UNICODE string) */
#define BCPFILECP               12  /* Sets clients code page for the file */
#define BCPUNICODEFILE          13  /* Sets that the file contains unicode header */
#define BCPTEXTFILE             14  /* Sets BCP mode to expect a text file and to detect Unicode or ANSI automatically */
#define BCPFILEFMT              15  /* Sets file format version */
#define BCPFMTXML               16  /* Sets the format file type to xml */
#define BCPFIRSTEX              17  /* Starting Row for BCP operation (64 bit) */
#define BCPLASTEX               18  /* Ending Row for BCP operation (64 bit) */
#define BCPROWCOUNT             19  /* Total Number of Rows Copied (64 bit) */
#define BCPDELAYREADFMT         20  /* Delay reading format file until bcp_exec */
/* BCPFILECP values
* Any valid code page that is installed on the client can be passed plus:
*/
#define BCPFILECP_RAW           (-1) /* Data in file is in Server code page (no conversion) */
/* bcp_collen definition */
#define SQL_VARLEN_DATA (-10)   /* Use default length for column */
/* BCP column format properties */
#define BCP_FMT_TYPE            0x01
#define BCP_FMT_INDICATOR_LEN   0x02
#define BCP_FMT_DATA_LEN        0x03
#define BCP_FMT_TERMINATOR      0x04
#define BCP_FMT_SERVER_COL      0x05
#define BCP_FMT_COLLATION       0x06
#define BCP_FMT_COLLATION_ID    0x07
/* bcp_setbulkmode properties */
#define BCP_OUT_CHARACTER_MODE      0x01
#define BCP_OUT_WIDE_CHARACTER_MODE 0x02
#define BCP_OUT_NATIVE_TEXT_MODE    0x03
#define BCP_OUT_NATIVE_MODE         0x04

#ifndef INT
typedef int     INT;
typedef INT     DBINT;
typedef DBINT * LPDBINT;
typedef unsigned char DBBOOL;

#ifndef _LPCBYTE_DEFINED
#define _LPCBYTE_DEFINED
typedef BYTE const* LPCBYTE;
#endif /* _LPCBYTE_DEFINED */
#endif /* INT */

/*
* BCP functions
*/
DBINT SQL_API bcp_batch(HDBC);
RETCODE SQL_API bcp_bind(HDBC, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
RETCODE SQL_API bcp_colfmt(HDBC, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
RETCODE SQL_API bcp_collen(HDBC, DBINT, INT);
RETCODE SQL_API bcp_colptr(HDBC, LPCBYTE, INT);
RETCODE SQL_API bcp_columns(HDBC, INT);
RETCODE SQL_API bcp_control(HDBC, INT, void *);
DBINT SQL_API bcp_done(HDBC);
RETCODE SQL_API bcp_exec(HDBC, LPDBINT);
RETCODE SQL_API bcp_getcolfmt(HDBC, INT, INT, void *, INT, INT *);
RETCODE SQL_API bcp_moretext(HDBC, DBINT, LPCBYTE);
RETCODE SQL_API bcp_sendrow(HDBC);
RETCODE SQL_API bcp_setbulkmode(HDBC, INT, void*, INT cbField, void *, INT cbRow);
RETCODE SQL_API bcp_setcolfmt(HDBC, INT, INT, void *, INT);

#ifdef UNICODE
#define bcp_init        bcp_initW
#define bcp_readfmt     bcp_readfmtW
#define bcp_writefmt    bcp_writefmtW
#define bcp_gettypename bcp_gettypenameW
#define dbprtype        dbprtypeW
#define BCPHINTS        BCPHINTSW
#else
#define bcp_init        bcp_initA
#define bcp_readfmt     bcp_readfmtA
#define bcp_writefmt    bcp_writefmtA
#define bcp_gettypename bcp_gettypenameA
#define dbprtype        dbprtypeA
#define BCPHINTS        BCPHINTSA
#endif /* UNICODE */

/* Narrow and wide character names functions */
CHAR* SQL_API bcp_gettypenameA(INT, DBBOOL);
WCHAR* SQL_API bcp_gettypenameW(INT, DBBOOL);
RETCODE SQL_API bcp_initA(HDBC, LPCSTR, LPCSTR, LPCSTR, INT);
RETCODE SQL_API bcp_initW(HDBC, LPCWSTR, LPCWSTR, LPCWSTR, INT);
RETCODE SQL_API bcp_readfmtA(HDBC, LPCSTR);
RETCODE SQL_API bcp_readfmtW(HDBC, LPCWSTR);
RETCODE SQL_API bcp_writefmtA(HDBC, LPCSTR);
RETCODE SQL_API bcp_writefmtW(HDBC, LPCWSTR);
CHAR* SQL_API dbprtypeA(INT);
WCHAR* SQL_API dbprtypeW(INT);

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* ODBCVER */

#endif /* __msodbcsql_h__ */

© 2025 GrazzMean