code: public static int cuPointerGetAttributes(int numAttributes, int attributes[], Pointer data, CUdeviceptr ptr)
      {
          return checkResult(cuPointerGetAttributesNative(numAttributes, attributes, data, ptr));
      }
docs: Returns information about a pointer.<br>
  <br>
  The supported attributes are (refer to ::cuPointerGetAttribute for attribute descriptions and restrictions):
  <ul>
  <li>CU_POINTER_ATTRIBUTE_CONTEXT</li>
  <li>CU_POINTER_ATTRIBUTE_MEMORY_TYPE</li>
  <li>CU_POINTER_ATTRIBUTE_DEVICE_POINTER</li>
  <li>CU_POINTER_ATTRIBUTE_HOST_POINTER</li>
  <li>CU_POINTER_ATTRIBUTE_SYNC_MEMOPS</li>
  <li>CU_POINTER_ATTRIBUTE_BUFFER_ID</li>
  <li>CU_POINTER_ATTRIBUTE_IS_MANAGED</li>
  </ul>
  Unlike ::cuPointerGetAttribute, this function will not return an error when the ptr
  encountered is not a valid CUDA pointer. Instead, the attributes are assigned default NULL values
  and CUDA_SUCCESS is returned.<br>
  <br>
  If ptr was not allocated by, mapped by, or registered with a ::CUcontext which uses UVA
  (Unified Virtual Addressing), ::CUDA_ERROR_INVALID_CONTEXT is returned.
  <br>
  
  @param numAttributes Number of attributes to query
  @param attributes An array of attributes to query
  (numAttributes and the number of attributes in this array should match)
  @param data A two-dimensional array containing pointers to memory
  locations where the result of each attribute query will be written to.
  @param ptr Pointer to query
  
  @return CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_INVALID_CONTEXT,
  CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
  
  @see JCudaDriver#cuPointerGetAttribute,
  @see JCudaDriver#cuPointerSetAttribute